Алгоритм поиска статей с похожим текстом - PullRequest
59 голосов
/ 29 октября 2008

У меня есть много статей в базе данных (с заголовком, текстом), я ищу алгоритм, чтобы найти X наиболее похожих статей, что-то вроде Stack Overflow "Related Questions", когда вы задаете вопрос.

Я пытался поискать в Google для этого, но нашел только страницы о других «похожих текстовых» проблемах, что-то вроде сравнения каждой статьи со всеми остальными и сохранения где-то сходства. ТАК делает это в режиме реального времени для текста, который я только что набрал.

Как?

Ответы [ 15 ]

0 голосов
/ 11 марта 2016

вы можете использовать либо 1) Минхаш / LSH https://en.wikipedia.org/wiki/MinHash

(также см .: http://infolab.stanford.edu/~ullman/mmds/book.pdf)

или

2) совместная фильтрация: https://en.wikipedia.org/wiki/Collaborative_filtering

0 голосов
/ 18 апреля 2015

Самый простой и быстрый способ сравнить сходство между рефератами - это, вероятно, использовать концепцию множества. Сначала преобразуйте абстрактные тексты в набор слов. Затем проверьте, насколько каждый набор перекрывается. Функция набора Python очень хорошо подходит для выполнения этой задачи. Вы будете удивлены, увидев, насколько хорошо этот метод сравнивается с теми вариантами «похожих / связанных документов», которые предоставляются GScholar, ADS, WOS или Scopus.

0 голосов
/ 22 июля 2013

Я попробовал какой-то метод, но ни один из них не работает хорошо. Один из них может получить относительно удовлетворительный результат, например: Во-первых: получите код Google SimHash для каждого абзаца всего текста и сохраните его в базе данных. Второе: индекс для кода SimHash. Третье: обработайте ваш текст для сравнения, как описано выше, получите код SimHash и выполните поиск по всему тексту по индексу SimHash, который, кроме того, образует расстояние Хэмминга, например 5-10. Затем сравните сходство с термином вектор. Это может работать для больших данных.

0 голосов
/ 29 октября 2008

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

0 голосов
/ 29 октября 2008

Вы можете использовать полнотекстовый индекс SQL Server, чтобы получить умное сравнение. Я полагаю, что SO использует вызов ajax, который выполняет запрос для возврата аналогичных вопросов.

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

...