Чаттербот с обратной связью

Я новичок в 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.')

0 ответов

Другие вопросы по тегам