我是ChatterBot的初学者,其功能给我留下了深刻的印象!
但是,如果该漫游器无法使用更好的解决方案进行回答,我会对用户的反馈意见感兴趣。
例如:如果我问“你好吗?”并且它的数据库只有答案“我很好”,而我希望答案是“我不太好”,我将需要使用新答案来更新数据库。
在我的代码中,我实现了在列表“ ans”中插入两个新闻句子的过程。但是,提出新问题后,该机器人无法实现我的愿望。
GitHub“ learning feedback”和“ default response”上的示例似乎运行得不太好(至少在我的计算机中如此)。
有人可以帮助我强加给机器人以我的反馈意见来选择更好的答案吗? 我想使用反馈直接更新数据库文件(db.sqlite3),删除数据库的旧语句,为此,在新的询问中,机器人用新条目回答了我。我不知道如何删除数据库语句。
在许多尝试中,尽管列表已更新,但答案并没有改变...
谢谢。
PS:这个问题也称为issue in GitHub。
PS2:如何删除response of the database? Image of Statement-response relationship
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.')