因此,我将在聊天机器人上使用本教程https://medium.com/analytics-vidhya/building-a-simple-chatbot-in-python-using-nltk-7c8c8215ac6e,并在Python中使用nltk
和tf-idf
。
一切正常,我完全理解其中的内容。但我想走得更远。该聊天机器人适用于问答系统,我正在尝试创建一个聊天机器人来帮助用户订购披萨。
我考虑过要创建两个列表,一个用于调味,另一个用于尺寸。
pizza_flav = ['pepperoni', 'napolitan', 'pineapple']
pizza_size = ['small', 'large']
我还考虑过使用flavor
和size
创建字典并根据用户输入进行更新。
my_dict_keys = ['flavor', 'size']
slots = {key: None for key in my_dict_keys}
在我的response
方法中,我尝试使用以下逻辑:
def response(user_response):
robo_response=''
sent_tokens.append(user_response)
# same code as the post
if req_tfidf == 0:
robo_response += "I am sorry! I don't understand you"
return robo_response
else:
robo_response = robo_response+sent_tokens[idx]
# my attempts
if user_response in pizza_flav:
slots['flavor'] = user_response
if user_response in pizza_size:
slots['flavor'] = user_response
return robo_response
我不确定这是否是最好的方法。当我添加样式和大小时,机器人将继续回答问题(就像问答),而不是定向用户。
我期望的是类似的东西
user: what flavor do you guys have?
bot: we have pepperoni, napolitan and pineapple
user: i'd like pepperoni # set flavor to pepperoni
bot: great, what size?
user: large # set size to large
我走对了吗?谢谢!
PS。我不想使用RASA或IBM Watson。