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

#python #django

#python #django

Вопрос:

У меня есть список ключевых слов, которые я пытаюсь найти в текстовой строке. Точные совпадения работают нормально, но кто-нибудь знает о библиотеке, которая могла бы помочь с приблизительными совпадениями, так что, например, если список слов, который я предоставляю, ["hello", "bye"] я бы хотел, чтобы он посмотрел, имеет ли текстовая строка hlelo в определенной степени «близость» какие-либо рекомендации?

Комментарии:

1. Попробуйте использовать термин «Расстояние Левенштейна» при поиске.

Ответ №1:

Вот что я бы сделал. Сначала определите строку для поиска и удалите посторонние символы:

 >>> tosearch = "This is a text string where I typed hlelo but I meant to type hello."
>>> import string
>>> exclude = set(string.punctuation)
>>> tosearch = ''.join(ch for ch in tosearch if ch not in exclude)
>>> tosearch
'This is a text string where I typed hlelo but I meant to type hello'
>>> words = set(tosearch.split(" "))
  

Затем вы можете использовать библиотеку difflib для поиска близких совпадений с заданным словом:

 >>> import difflib
>>> difflib.get_close_matches('hello', words)
['hello', 'hlelo']