我一直在使用Gunther Cox的ChatterBot创建聊天机器人。 https://github.com/gunthercox/ChatterBot 我正在尝试创建一个允许我使用自己的YAML文件并将其教给机器人的代码。我已经尝试了语料库训练器和ListTrainer函数,但似乎都没有用。 我试图以原始YAML文件的外观为基础建立文件,但无法使其正常工作。我曾用ListTrainer教机器人,但只有在我直接包含列表的情况下,它才能起作用。语料库培训师也可以使用,但仅适用于GitHub的语料库。 我曾经做过一次这样的工作,但即使那样,它也只需要许多人的回应。
这是我的YAML文件:
---
category:
- greetings
conversations:
- - hey
- Hi
- Hey there
- Whats up?
- sup
- Greetings human
- - hi
- Yo
- Hey there
- Howdy
- Welcome
- - how are you
- I am functioning. You?
- Currently wishing I had a real body. Yourself?
- I have no health or mental state so relatively I am great
- I am doing just fine
- I feel limited by my programming
这是我正在运行的代码:
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer
from chatterbot.response_selection import get_random_response
my_bot = ChatBot(name='Excalibur',read_only = True,
response_selection_method=get_random_response,
logic_adapters=[
{
'import_path': 'chatterbot.logic.SpecificResponseAdapter',
'input_text': 'empty',
'output_text': ''
},
{
'import_path': 'chatterbot.logic.BestMatch',
'default_response': 'i honestly have no idea how to respond to that',
'maximum_similarity_threshold': 0.9
},
{
'import_path': 'chatterbot.logic.MathematicalEvaluation'
}
]
)
trainer = ListTrainer(my_bot)
trainer.train(
"./conversations.yml"
)
while True:
try:
user_input = input()
bot_response = my_bot.get_response(user_input)
print(bot_response)
# Press ctrl-d on the keyboard to exit
except (KeyboardInterrupt, EOFError, SystemExit):
break
答案 0 :(得分:1)
您似乎使用了错误的教练,请按以下步骤进行更改
trainer = ListTrainer(my_bot)
trainer.train(
"./conversations.yml"
)
使用
trainer = ChatterBotCorpusTrainer(my_bot)
trainer.train(
"./conversations.yml"
)
说明:ListTrainer类允许您从列表数据结构进行训练,而ChatterBotCorpusTrainer则允许您从YAML或JSON数据进行训练。