0

У меня есть база данных/словарь более 2 миллионов имен, фаз, местоположений и т. Д. Типовыми данными являются:анализ текста на основе словаря с приблизительным соответствием

“A person who never made a mistake never tried anything new” 

“Nelson Mandela” 

“United States of America” 

“I didn't attend the funeral, but I sent a nice letter saying I approved of it.” 

“Joseph Campbell” 

“Insanity: doing the same thing over and over again and expecting different results” 

“United Kingdom of Great Britain and Northern Ireland” 

Для каждой записи есть идентификатор.

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

  1. Фаза «Безумие: делать то же самое снова и снова» будет согласована с полной фазой «Безумие: делать то же самое снова и снова и ожидая разных результатов»
  2. фаза «Безумие: делать то же самое снова и ожидать разных результатов» будут согласованы с полной фазой «Безумие: делать то же самое снова и снова снова и ожидать разных результатов»

Я надеваю знаю, если это Названная проблема Entity, как моя база данных имеет фазы, состоящие более чем на 2 линии. Я также не хочу находить точную фазу, я хочу приблизить соответствие.

Я ищу решение с открытым исходным кодом. Заранее спасибо

ответ

1

Одним из возможных решений является поиск поисковой системы, такой как Lucene. Он в основном создает свою собственную базу данных, где вы помещаете свои документы - в вашем случае «Безумие: повторять одно и то же снова и снова и ожидать разные результаты». Затем вы можете выполнить поиск с «Безумие, снова и снова», и двигатель предоставит вам упорядоченный список результатов. Он очень настраиваемый.

В зависимости от вашей задачи вы, вероятно, можете реализовать свой собственный inverted index с возможными фразами, которые вам нужны. Или вы можете реализовать улучшенный Levenshtein distance, дающий лучшие оценки для определенных фраз.