#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']