В Python Chatterbot я получаю ответы последовательно, независимо от того, является ли это вопросом - PullRequest
0 голосов
/ 11 октября 2018

Я использую пакет Python Болтун .Используя это, я пытаюсь создать чат-бота.Вот следующий код, который я использую для обучения своего бота: -
chatbot_train.py: -

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

def train_bot():
    chatbot = ChatBot('Bot',
    storage_adapter='chatterbot.storage.SQLStorageAdapter',
    trainer='chatterbot.trainers.ListTrainer')
    for file in os.listdir('G:/Django Chatbot/SRC/chat_bot/data/'):
        convData = open(r'G:/Django Chatbot/SRC/chat_bot/data/' + file, encoding='UTF-8').readlines()
        chatbot.set_trainer(ListTrainer)
        chatbot.train(convData)
    print("Training completed")


train_bot()

И в следующем коде я пытаюсь получить ответ на вопросы: -chatbot.py

from chatterbot import ChatBot
from chatterbot.trainers import ListTrainer


def get_response(usrText):
    bot = ChatBot('Bot',
    storage_adapter='chatterbot.storage.SQLStorageAdapter',
    logic_adapters=[
        {
            'import_path': 'chatterbot.logic.BestMatch'
        },
        {
            'import_path': 'chatterbot.logic.LowConfidenceAdapter',
            'threshold': 0.70,
            'default_response': 'I am sorry, but I do not understand.'
        }
    ],
    trainer='chatterbot.trainers.ListTrainer')
    bot.set_trainer(ListTrainer)
    while True:
        if usrText.strip()!= 'Bye':
            result = bot.get_response(usrText)                        
            reply = str(result)
            return(reply)
        if usrText.strip() == 'Bye':
            return('Bye')
            break

Теперь, если мой файл greetings.txt содержит следующие данные: -

 do you drink
 my brain does not require any beverages.
 electricity
 electricity is nutrition for robots.
 are you experiencing an energy shortage?
 my processor requires very little power.
 why can not you eat
 actually i eat only electricity.

Это пример разговора, который происходит: -

Me:- do you drink
Bot:- my brain does not require any beverages.
Me:- electricity
Bot:- electricity is nutrition for robots.
/*** If I post an answer it gives me the question next in the series ***\
Me:- electricity is nutrition for robots.
Bot:- are you experiencing an energy shortage?

/*** But this is what I expect if i give an answer it should not respond ***\
Me:- electricity is nutrition for robots.
Bot:- 'I am sorry, but I do not understand.'

Ссылаясь на документацию здесь Я обнаружил, что он устанавливает каждый элемент в списке в качестве возможного ответа своему предшественнику в списке.Как мне изменить это так, чтобы я просто получил пару вопросов и ответов и выставил все позиции в списке на следующие возможные ответы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...