Я рассмотрю основы согласования текстовых документов ...
Большинство мер документа подобия работы на основе слова, а не структуры предложения. Первым шагом обычно является 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, чтобы интерпретировать язык и построить структуру данных (обычно это дерево), которая представляет предложение. Затем вам нужно выполнить неточное сопоставление графов. Это трудная проблема, но есть алгоритмы для этого на деревьях в полиномиальное время.
Большое спасибо за ваш ответ. Теперь у меня есть четкое представление о том, как действовать. –
Очень интересный пост – Alex
Отличный ответ Тим. +1 конечно. –