Как сделать ChatBot, который задает вопросы, используя Chatterbot (ver - 0.7.4)? - PullRequest
0 голосов
/ 29 июня 2018

Создал чат-бота с использованием python, и поток, в котором он работает, состоит в том, что я переписываюсь и, согласно этому, Chatbot отвечает. Но это должно быть сделано в обратном порядке: чат-бот должен начинаться с приветствия / вопросов, а затем пользователь ответит на него. Пожалуйста, предложите внести некоторые изменения в код, чтобы он мог работать соответствующим образом. Заранее благодарю.

Код для вышеупомянутого выглядит так:

from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer
import os

bot = ChatBot('Bot')
bot.set_trainer(ListTrainer)

for files in os.listdir('C:/Users/Username\Desktop\chatterbot\chatterbot_corpus\data/english/'):
    data = open('C:/Users/Username\Desktop\chatterbot\chatterbot_corpus\data/english/' + files, 'r').readlines()
    bot.train(data)

while True:
    message = input('You: ')
    if message.strip() != 'Bye'.lower():
        reply = bot.get_response(message)
        print('ChatBot:',reply)
    if message.strip() == 'Bye'.lower():
        print('ChatBot: Bye')
        break

1 Ответ

0 голосов
/ 30 июня 2018

По моему мнению, вы должны соответствующим образом обучить своего бота. Я имею в виду начать с ответа, а затем добавить последующий разговор к данным обучения.
Например, данные обучения должны быть примерно такими:

data = [
    "Tony",        #I started with an answer
    "that's a good name",
    "thank you",
     "you are welcome"]

Тогда начните свой разговор со статического утверждения, как print ("chatBot: hai, как тебя зовут?") Я добавил пример кода ниже.

data = [
     "Tony",
     "that's a good name",
    "thank you",
     "you are welcome"]
bot.train(data)

print("chatbot: what is your name?")
message = input("you: ")

while True:
    if message.strip() != 'Bye'.lower():
        reply = bot.get_response(message)
        print('ChatBot:',reply)
    if message.strip() == 'Bye'.lower():
        print('ChatBot: Bye')
        break
    message = input("you: ")

Из документов :
Для процесса обучения вам нужно будет передать список утверждений, где порядок каждого утверждения основан на его размещении в данном разговоре.
Например, если бы вы запускали бота из следующих обучающих звонков, то получившийся болтун ответил бы на оба утверждения «Привет!» И «Привет!», Сказав «Привет».

from chatterbot.trainers import ListTrainer

chatterbot = ChatBot("Training Example")
chatterbot.set_trainer(ListTrainer)

chatterbot.train([
    "Hi there!",
    "Hello",
])

chatterbot.train([
    "Greetings!",
    "Hello",
])

Это означает, что порядок вопросов и ответов имеет значение. Когда вы тренируете два предложения, бот принимает в качестве первого из них вопрос, а второй ответ.

...