Python - FuzzyWuzzy String Сходство, данные не согласованы? - PullRequest
0 голосов
/ 16 ноября 2018

Я пытаюсь использовать библиотеку 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()
...