Алгоритм для нахождения статей с подобным текстом

60
задан Serge Rogatch 3 September 2018 в 16:35
поделиться

10 ответов

расстояние Редактирования не является вероятным кандидатом, поскольку это был бы зависимый написания/порядка слов, и намного более в вычислительном отношении дорогой, чем Желание ведет Вас для веры, рассматривая размер и количество документов, Вы на самом деле интересовались бы поиском.

Что-то как Lucene - способ пойти. Вы индексируете все свои документы, и затем когда Вы хотите найти документы подобными данному документу, Вы превращаете свой данный документ в запрос и ищете индекс. Внутренне Lucene будет использовать tf-idf и инвертированный индекс , чтобы заставить целый процесс занять количество времени, пропорциональное количеству документов, которые могли возможно соответствовать, не общее количество документов в наборе.

34
ответ дан Jay Kominek 24 November 2019 в 17:53
поделиться

Можно использовать SQL Server Полнотекстовый индекс для получения умного сравнения, я полагаю, что ТАК использует вызов ajax, который делает запрос для возврата подобных вопросов.

, Какие технологии Вы используете?

0
ответ дан Mitchel Sellers 24 November 2019 в 17:53
поделиться

Если Вы ищете слова, которые ранили одинаково, Вы могли преобразовать в soundex и soundex слова для соответствия... работавший для меня

0
ответ дан spacemonkeys 24 November 2019 в 17:53
поделиться

Seconding предложение Lucene для полнотекстового, но примечание, что Java не является требованием; порт.NET доступен . Также посмотрите основная страница Lucene для ссылок на другие проекты, включая Lucy, порт C .

1
ответ дан b w 24 November 2019 в 17:53
поделиться

ТАКЖЕ - сравнение только на заголовке, не на основном тексте вопроса, поэтому только на довольно коротких строках.

можно использовать их алгоритм (никакая идея, на что он похож) на заголовке статьи и ключевых словах. Если у Вас есть больше процессорного времени для записи, также на кратких обзорах статей.

1
ответ дан Treb 24 November 2019 в 17:53
поделиться

Один используемый общий алгоритм Самоорганизующаяся Карта . Это - тип нейронной сети, которая автоматически категоризирует Ваши статьи. Тогда можно просто найти местоположение, что текущая статья находится в карте, и все статьи около него связаны. Важная часть алгоритма - то, как Вы были бы вектор квантовать свой вход . Существует несколько способов сделать с с текстом. Можно хешировать документ/заголовок, можно считать слова и использование что как n размерный вектор и т.д. Надежда, которая помогает, хотя я, возможно, открыл ящик Пандоры для Вас бесконечной поездки в AI.

2
ответ дан mempko 24 November 2019 в 17:53
поделиться

Я предлагаю индексировать Ваши статьи с помощью Apache Lucene, высокоэффективная, полнофункциональная текстовая библиотека поисковой системы, записанная полностью в Java. Это - технология, подходящая почти для любого приложения, которое требует полнотекстового поиска, особенно межплатформенного . После того, как индексированный, Вы могли легко найти похожие статьи.

3
ответ дан Guido 24 November 2019 в 17:53
поделиться

Учебное руководство в этом ссылка кажется, что это может быть тем, в чем Вы нуждаетесь. Легко следовать и работы очень хорошо.

Его алгоритм вознаграждает и общие подстроки и общее упорядочивание тех подстрок и так должен выбрать подобные заголовки вполне приятно.

9
ответ дан alex77 24 November 2019 в 17:53
поделиться

Это зависит от Вашего определения similiar.

расстояние редактирования алгоритм является стандартным алгоритмом для (латинский язык) предложения словаря и может работать над целыми текстами. Два текста являются similiar, если у них есть в основном те же слова (а буквы) в том же порядке. Таким образом, следующие две рецензии на книгу были бы справедливо similiar:

1) "Это - замечательная книга"

2), "Это не замечательные книги"

(Количество букв, чтобы удалить, вставить, удалить или измениться для превращения (2) в (1) называют 'расстоянием редактирования'.)

Для реализации этого Вы хотели бы посетить каждый обзор программно. Это является, возможно, не столь дорогостоящим, как это звучит, и если это является слишком дорогостоящим, Вы могли бы сделать сравнения как фоновую задачу и сохранить n-most-similiar в самом поле базы данных.

Другой подход должен понять что-то вроде структуры (латинских) языков. Если Вы разделяете короткий (non-capitialised или заключенный в кавычки) слова и присваиваете веса словам (или префиксы), которые распространены или уникальны, можно сделать Bayesianesque сравнение. Два после рецензий на книгу могли бы быть simiplied и найденный быть similiar:

3) "Французской революцией была и тому подобное Война и мир и тому подобное Франция".-> Франция/Французский язык (2) Оборот (1) война (1) Мир (1) (отмечают, что словарь использовался для объединения Франции и французского языка)

4) "Эта книга является и тому подобное революцией во французской кухне".-> Франция (1) Оборот (1)

Для реализации этого Вы хотели бы определить 'ключевые слова' в обзоре, когда это было создано/обновлено, и найти, что обзоры similiar используют эти ключевые слова в где-пункте запроса (идеально 'полнотекстовый' поиск если поддержка БД это), с, возможно, последующей обработкой установленного на результаты для выигрыша кандидатов нашел.

Книги также имеют категории - триллеры установлены во Франции similiar к историческим исследованиям Франции и так далее? Метаданные вне заголовка и текста могли бы быть полезны для хранения релевантных результатов.

14
ответ дан Will 24 November 2019 в 17:53
поделиться

Возможно, что Ваш поиск является чем-то, что делает перефразирование . У меня только есть поверхностное знание этого, но перефразирование обработка естественного языка понятие, чтобы определить, если два прохода текста на самом деле средний то же самое - хотя можение используют полностью другие слова.

, К сожалению, я не знаю ни о каких инструментах, которые позволяют Вам делать это (хотя я интересовался бы нахождением одного)

1
ответ дан Vinnie 24 November 2019 в 17:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: