Я не смог найти contain
метод в fuzzywuzzy documentation
, поэтому я придумал это. Вы разделяете фразу на слова, а затем сравниваете каждое слово fuzzy
. В зависимости от ваших особых потребностей вы должны использовать другие методы оценки вместо значений token_sort_ratio
и threshold
. Вы можете найти больше информации в их github .
from fuzzywuzzy import fuzz
def fuzzy_contains_word(word, phrase, threshold):
for phrase_word in phrase.split():
if fuzz.token_sort_ratio(word, phrase_word) > threshold:
return True
return False
words = ['Apple','Banana', 'Cucumber']
user_input = 'The other day as I ate a bnana in the park'
threshold = 80
for word in words:
if fuzzy_contains_word(word, user_input, 80):
print(word, 'found in phrase: ', user_input)
>>> Banana found in phrase: The other day as I ate a bnana in the park
Примечание: я получил предупреждение, сказав, что вы должны установить python-Levenshtein
пакет.