Python - FuzzyWuzzy String Similarity, Data not consistent?












0















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()









share|improve this question





























    0















    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()









    share|improve this question



























      0












      0








      0








      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()









      share|improve this question
















      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






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      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
























          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
          });


          }
          });














          draft saved

          draft discarded


















          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
















          draft saved

          draft discarded




















































          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.




          draft saved


          draft discarded














          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





















































          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







          Popular posts from this blog

          Xamarin.iOS Cant Deploy on Iphone

          Glorious Revolution

          Dulmage-Mendelsohn matrix decomposition in Python