Чаттербот с обратной связью - PullRequest
0 голосов
/ 03 ноября 2018

Я новичок в ChatterBot и очень впечатлен его возможностями!

Но меня интересуют отзывы пользователей, если бот не сможет ответить лучшим решением.

Например: если я спрошу "Как дела?" и в его базе данных есть только ответ «У меня все хорошо», и я хочу получить ответ «У меня не очень хорошо», мне нужно обновить базу данных новым ответом.

В моем коде я достигаю его, вставляя в список два предложения новостей "ans". Но, задавая новые вопросы, бот не отвечает на мои вопросы.

И примеры на GitHub " обратная связь по обучению " и " ответ по умолчанию ", кажется, не очень хорошо работают (по крайней мере, на моем компьютере).

Может ли кто-нибудь помочь мне навязать ботам выбор лучшего ответа на основе моих отзывов? Я хотел бы использовать обратную связь для непосредственного обновления файла базы данных (db.sqlite3), удалив старое утверждение базы данных, для этого при новом опросе бот отвечает мне новой записью. Я не знаю, как удалить заявление базы данных.

Во многих попытках ответ не изменился, хотя список обновился ...

Заранее спасибо.

PS: этот вопрос также является проблемой в GitHub .

PS2: как удалить ответ из базы данных ? Изображение отношения оператор-ответ

from chatterbot.trainers import ListTrainer
from chatterbot import ChatBot

question,answer,y,n="","","",""

bot = ChatBot('Answ Bot')

ans= ['How are you?', 'I'm fine','And you?','I'm fine too, thanks']

bot.set_trainer(ListTrainer)
bot.train(ans)

while True:
    question= input("User: ")
    answer= bot.get_response(question)
    if float(question.confidence) > 0.5:
        print('Answ Bot: ', answer)
        print('Answ Bot: was my response good? [y/n]')
        r1=input()
        if r1=='y':
            print('Answ Bot: thank you for feedback')
        else:
            print('Answ Bot: may you teach me a better answer?')
            r2=ans.index(answer)
            ans2=ans.copy()
            del ans2[r2]            
            answer2 = input("User: ")
            ans2.insert(r2,answer2)            
            bot.train(ans2)            
            print(ans2)
    else:
         print('I don't know the answer.')
...