Python - FuzzyWuzzy String Similarity, Data not consistent?
I'm trying to use Python's fuzzywuzzy library to match users input to a list of predetermined responses, in order to output desired results.
There may be a better way to perform this functionality, and if so please let me know. (I'm a noob to programming)
The issue is he results aren't consistent after the first input. The first input is usually always accurate but the 2nd, 3rd, and so on are always off. Please help, thank you all.
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()
python string-matching fuzzy fuzzywuzzy
add a comment |
I'm trying to use Python's fuzzywuzzy library to match users input to a list of predetermined responses, in order to output desired results.
There may be a better way to perform this functionality, and if so please let me know. (I'm a noob to programming)
The issue is he results aren't consistent after the first input. The first input is usually always accurate but the 2nd, 3rd, and so on are always off. Please help, thank you all.
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()
python string-matching fuzzy fuzzywuzzy
add a comment |
I'm trying to use Python's fuzzywuzzy library to match users input to a list of predetermined responses, in order to output desired results.
There may be a better way to perform this functionality, and if so please let me know. (I'm a noob to programming)
The issue is he results aren't consistent after the first input. The first input is usually always accurate but the 2nd, 3rd, and so on are always off. Please help, thank you all.
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()
python string-matching fuzzy fuzzywuzzy
I'm trying to use Python's fuzzywuzzy library to match users input to a list of predetermined responses, in order to output desired results.
There may be a better way to perform this functionality, and if so please let me know. (I'm a noob to programming)
The issue is he results aren't consistent after the first input. The first input is usually always accurate but the 2nd, 3rd, and so on are always off. Please help, thank you all.
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()
python string-matching fuzzy fuzzywuzzy
python string-matching fuzzy fuzzywuzzy
edited Nov 15 '18 at 23:14
Jono 2906
1,0541919
1,0541919
asked Nov 15 '18 at 21:59
Andrew VensonAndrew Venson
378
378
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53328488%2fpython-fuzzywuzzy-string-similarity-data-not-consistent%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53328488%2fpython-fuzzywuzzy-string-similarity-data-not-consistent%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown