From 4acbca576a615a9bef1ae163fa70269084ff0001 Mon Sep 17 00:00:00 2001 From: Gordon Shumway <39967334+oddluck@users.noreply.github.com> Date: Tue, 18 Jun 2019 21:47:57 -0400 Subject: [PATCH] use jellyfish-jaro-winkler for guess/answer check --- Jeopardy/plugin.py | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/Jeopardy/plugin.py b/Jeopardy/plugin.py index 73b604d..104af94 100644 --- a/Jeopardy/plugin.py +++ b/Jeopardy/plugin.py @@ -48,7 +48,7 @@ import requests import re from unidecode import unidecode from bs4 import BeautifulSoup -from fuzzywuzzy import fuzz +import jellyfish from supybot.i18n import PluginInternationalization, internationalizeDocstring _ = PluginInternationalization('Jeopardy') @@ -375,22 +375,21 @@ class Jeopardy(callbacks.Plugin): channel = msg.args[0] correct = False for ans in self.a: - ans = ans.strip().lower() - guess = msg.args[1].strip().lower() + ans = re.sub('\s+', ' ', ans.strip().lower()) + guess = re.sub('\s+', ' ', msg.args[1].strip().lower()) if guess == ans: correct = True - elif not correct: - if len(ans) > 2: - answer = re.sub('^a |^an |^the ', '', ans) - answer = re.sub('[^a-zA-Z0-9]+', '', answer) - guess = re.sub('^a |^an |^the ', '', guess) - guess = re.sub('[^a-zA-Z0-9]+', '', guess) - else: - answer = ans + elif not correct and len (ans) > 2: + answer = re.sub('[^a-zA-Z0-9 ]+', '', ans) + answer = re.sub('^a |^an |^the ', '', answer).replace(' ', '') + guess = re.sub('[^a-zA-Z0-9 ]+', '', guess) + guess = re.sub('^a |^an |^the ', '', guess).replace(' ', '') + else: + answer = ans if not correct and guess == answer: correct = True elif not correct: - dist = fuzz.ratio(guess, answer) + dist = jellyfish.jaro_winkler(guess, answer) flexibility = self.registryValue('flexibility', self.channel) #self.reply("guess: {0}, answer: {1}, length: {2}, distance: {3}, flexibility: {4}".format(guess, answer, len(answer), dist, flexibility)) if dist >= flexibility: