Подтвердить что ты не робот

Найти подстроку в тексте, которая имеет самое высокое сходство с заданным ключевым словом

Скажем, у меня есть этот текст = I love apples, kiwis, oranges and bananas, а searchString = kiwis and bananas и алгоритм подобия говорят индекс Jaccard. Как я могу эффективно найти подстроку в text, которая имеет самое высокое сходство с searchString.

В основном я пытаюсь найти части текста (текст имеет высокие ошибки, орфографические ошибки, дополнительные символы и пробелы), которые соответствуют списку ключевых слов, которые у меня есть.

4b9b3361

Ответ 1

Индекс Jaccard - это "счастливый" алгоритм подобия, потому что вы можете обновить его значение для нового символа, не пересчитывая все предыдущие вещи. Таким образом, вы можете просмотреть text как последовательность различий для итогового значения индекса. После этого проблему можно свести к https://en.wikipedia.org/wiki/Maximum_subarray_problem.

Как насчет вашего второго абзаца, если вы делаете некоторые исследования, подобные NLP, я бы предложил очистить ваши данные (удалять лишние символы и пробелы, когда это возможно) перед дальнейшей обработкой. Это называется "орфографическая коррекция", а также множество различных алгоритмов и библиотек. Чтобы выбрать подходящий, вам потребуется дополнительная информация о вашем домене.

Ответ 2

Взгляните на технику черепицы и попытайтесь найти сходство. вы можете перейти по этой ссылке: http://nlp.stanford.edu/IR-book/html/htmledition/near-duplicates-and-shingling-1.html

Например, используйте 9 гальки и сравнивайте каждое подмножество с вашим ключевым словом

Ответ 3

Я использую Stemming и расстояние Левенштейна

Это алгоритм в действии: https://wizsearch.wizsoft.com/index.php/demo/

Эта демонстрация ищет все названия вики, попробуйте опцию "показать условия поиска", чтобы увидеть алгоритм измерения расстояния и ошибок Левенштейна в действии.

Ответ 4

Каждый термин запроса проверяется на словар. Если термин не найден в словаре, то эти слова из словаря отображаются как предложения орфографии, которые наиболее похожи на рассматриваемый вопрос.

Сходство/Расстояние редактирования Поскольку мера сходства между двумя словами обычно служит расстоянием Дамерау-Левенштейна https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance

Несколько других ссылок