需要帮助来确定用户使用Python回答了“是”还是“否”

时间:2019-08-01 22:22:51

标签: python nlp nltk

我正在编写一个微型聊天机器人,但似乎无法找出确定用户是否回答“是”或“否”的方法。例如,如果用户键入“确定”,我想知道他们实际上回答了“是”。或者,如果他们写的是“不”,我想知道他们实际上回答了“不”。

使用nltk的wordnet并没有多大帮助。这是我尝试过的:

import nltk
from nltk.corpus import wordnet as wn

for syn in wn.synsets('yes'):
    print(syn.name(), syn.lemma_names())

我原本希望找回yes.n.01 ['yes', 'okay', 'sure', 'yup', 'yeah']之类的东西,但我得到的只是yes.n.01 ['yes']。我正在寻找Python中的解决方案,尽管不一定需要通过nltk软件包。

2 个答案:

答案 0 :(得分:1)

因此,我不确定如何使用NLP来执行此操作,但是对于您的目的而言,这可能会显得过大。您可以只创建一个包含所有“是”和“否”的单词集。

no_words = set(['no', 'nope', 'nah'])
yes_words = set('yes', 'yea', 'yeah', 'ok', 'okay', 'sure'])

user_input = input('Please type in your answer')

if user_input in yes_words:
    print('user says yes')
elif user_input in no_words:
    print('user says no')

答案 1 :(得分:0)

我认为可以选择使用PyDictionary https://pypi.org/project/PyDictionary/

如果您执行以下操作:

from PyDictionary import PyDictionary

dictionary=PyDictionary()
yes_synonyms = dictionary.synonym("yes")
no_synonyms = dictionary.synonym("no")

user_input = input('yes or no')

if user_input in yes_synonyms:
   print("yes")
elif user_input in input('yes or no'):
   print("no")

那可能很好用