Итак, я следую этому уроку https://medium.com/analytics-vidhya/building-a-simple-chatbot-in-python-using-nltk-7c8c8215ac6e в чате чата, используя nltk
и tf-idf
в Python.
Он работает нормально, и я полностью понимаю его содержание. Но я бы хотел пойти немного дальше. Чатбот работает для систем вопросов и ответов, я пытаюсь сделать чатбота, чтобы помочь пользователю заказать пиццу.
Я думал о создании двух списков, один для вкусов и второй для размера.
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
методе Iпопытался использовать эту логику:
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.