2012-01-03 2 views
0

Я хочу знать лучший способ ранжировать предложения на основе сходства из набора документов.
Например, например,
1. Имеется 5 документов.
2. В каждом документе содержится много предложений.
3. Позволяет перенести документ 1 в качестве основного, то есть на выходе будут содержаться предложения из этого документа.
4. Вывод должен быть списком предложений, ранжированных таким образом, что предложение с первым рангом является наиболее похожим предложением во всех 5 документах, то вторым, то третье ...
Лучший способ ранжировать предложения на основе сходства из набора документов

Спасибо заранее.

ответ

5

Я рассмотрю основы согласования текстовых документов ...

Большинство мер документа подобия работы на основе слова, а не структуры предложения. Первым шагом обычно является stemming. Слова сводятся к их корневой форме, так что разные формы подобных слов, например. «плавание» и «плавание».

Кроме того, вы можете фильтровать слова, которые вы соответствуете, чтобы избежать шума. В частности, вы можете игнорировать события «the» и «a». На самом деле, есть много союзов и местоимений, которые вы можете пропустить, поэтому обычно у вас будет длинный список таких слов - это называется «stop list».

Кроме того, могут быть плохие слова, которые вы хотите избежать совпадения, такие как ругательства или расовые слова. Таким образом, у вас может быть другой список исключений с такими словами в нем, «плохим списком».

Итак, теперь вы можете считать похожие слова в документах. Вопрос заключается в том, как измерить общее сходство документов. Вам нужно создать функцию оценки, которая принимает в качестве входных данных аналогичные слова и дает значение «подобия». Такая функция должна давать большое значение, если одно и то же слово появляется несколько раз в обоих документах. Кроме того, такие совпадения взвешиваются на общей частоте слов, так что, когда встречаются необычные слова, они получают больший статистический вес.

Apache Lucene - поисковая система с открытым исходным кодом, написанная на Java, которая предоставляет практические сведения об этих шагах. Например, вот информация о том, как они вес сходства запроса:

http://lucene.apache.org/java/2_9_0/api/all/org/apache/lucene/search/Similarity.html

Lucene сочетает в себе Булева модель (БМ) информационного поиска с векторного пространства модели (VSM) информационного поиска - документы " одобренный "BM, засчитывается VSM.

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

Теперь, в стороне, если вы не заботитесь о фактических существительных и глаголах в предложении и только заботитесь о композиции грамматики, вам нужен другой подход ...

Для начала вам понадобится link grammar parser, чтобы интерпретировать язык и построить структуру данных (обычно это дерево), которая представляет предложение. Затем вам нужно выполнить неточное сопоставление графов. Это трудная проблема, но есть алгоритмы для этого на деревьях в полиномиальное время.

+0

Большое спасибо за ваш ответ. Теперь у меня есть четкое представление о том, как действовать. –

+0

Очень интересный пост – Alex

+0

Отличный ответ Тим. +1 конечно. –

0

В качестве отправной точки вы можете вычислить soundex для каждого слова, а затем сравнить документы на основе частот звуковых сигналов.

+0

Спасибо за ваш ответ. –

0

Обзор Тима очень хороший. Я просто хотел бы добавить, что для вашего конкретного случая использования вы можете рассматривать предложения из Doc 1 как сами документы и сравнивать их сходство с каждым из четырех оставшихся документов. Это может привести к быстрому агрегированному показателю подобия за предложение, не заставляя вас идти по пути синтаксического анализа и т. Д.

Смежные вопросы