Я расскажу об основах сопоставления текстовых документов ...
Большинство мер сходства документов работают на основе слов, а не на структуре предложений. Первым шагом обычно является stemming . Слова сводятся к своей корневой форме, так что разные формы похожих слов, например, «плавание» и «плавание» совпадают.
Кроме того, вы можете отфильтровать слова, которые вам подходят, чтобы избежать шума. В частности, вы можете игнорировать вхождения «» и «а». На самом деле, существует множество союзов и местоимений, которые вы можете пропустить, поэтому обычно у вас будет длинный список таких слов - это называется « stop list ».
Кроме того, могут встречаться плохие слова, которые вы хотели бы избежать, например, ругательства или расовые слова. Таким образом, у вас может быть другой список исключений с такими словами, «плохой список».
Так что теперь вы можете считать подобные слова в документах. Вопрос заключается в том, как измерить общее сходство документов. Вам необходимо создать функцию оценки, которая принимает в качестве входных данных похожие слова и дает значение «сходство». Такая функция должна давать высокое значение, если одно и то же слово встречается в обоих документах несколько раз. Кроме того, такие совпадения взвешиваются по общей частоте слов, поэтому при совпадении необычных слов им присваивается больший статистический вес.
Apache Lucene - это поисковая система с открытым исходным кодом, написанная на Java, которая предоставляет практические сведения об этих шагах. Например, вот информация о том, как они оценивают сходство запросов:
http://lucene.apache.org/java/2_9_0/api/all/org/apache/lucene/search/Similarity.html
Lucene объединяет булеву модель (BM) поиска информации с
Модель векторного пространства (ВСМ) информационного поиска - документы
«Одобрено» BM, забил VSM.
Все это на самом деле просто соответствует словам в документах. Вы указали подходящие предложения. Для большинства людей сопоставление слов более полезно, поскольку у вас может быть огромное разнообразие структур предложений, которые действительно означают одно и то же. Самая полезная информация о сходстве только на словах. Я говорил о сопоставлении документов, но для ваших целей предложение - это очень маленький документ.
Теперь, если не считать, что вас не интересуют настоящие существительные и глаголы в предложении, а только грамматическая композиция, вам нужен другой подход ...
Сначала вам понадобится синтаксический анализатор ссылок , чтобы интерпретировать язык и построить структуру данных (обычно дерево), которая представляет предложение. Затем вы должны выполнить неточное сопоставление графиков. Это сложная проблема, но есть алгоритмы, которые делают это на деревьях за полиномиальное время.