Python Chatbot Взаимодействие - PullRequest
0 голосов
/ 08 ноября 2019

Итак, я следую этому уроку 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.

...