Я пытаюсь использовать библиотеку fuzzywuzzy в Python, чтобы сопоставить вводимые пользователем данные со списком предварительно определенных ответов, чтобы вывести желаемые результаты.Может быть лучший способ выполнить эту функцию, и если так, пожалуйста, дайте мне знать.(Я новичок в программировании) Проблема в том, что он не соответствует результатам после первого ввода.Первый ввод обычно всегда точен, но 2-й, 3-й и т. Д. Всегда отключены.Пожалуйста, помогите, спасибо всем.
from fuzzywuzzy import fuzz
from difflib import SequenceMatcher
import pyttsx3
#function to determine the rate of input according to multiple fuzz functions
def findMatch(possible_answers, joke, rates):
for x in possible_answers:
rates.append(fuzz.ratio(x, joke))
rates.append(fuzz.token_set_ratio(x, joke))
rates.append(fuzz.partial_ratio(x, joke))
def fun():
engine = pyttsx3.init()
#List of Strings to compare to from input
possible_answers = ["Tell me a joke", "Please tell me a joke", "I want to hear a joke", "Let's here a joke", "Can I hear a joke"]
#Establishing empty list for input of rates
rates = []
y = 0
#Continue process
while True:
joke = input()
findMatch(possible_answers, joke, rates)
for x in rates:
y = y+1
#Supposed to determine the highest rate for a string similarity to produce desired result
if(x >= 85):
print(y, x)
print('Why did the chicken cross the road. To save his friends at chickfila')
break
else:
print(y, x)
#remove rates from list so new question can be asked
for x in rates:
rates.remove(x)
print(rates)
y = 0
life = input()
if(life == 'Go to sleep gordon'):
break
fun()