文章目录
1、检索类聊天机器人
1.1检索类的机器人的特点
- 需要数据库大
- 回答比较自然
1.2检索类机器人的应用
2、检索匹配
2.1检索类机器人的流程
2.2匹配检索的关键技术
3、Chatterbot
Chatterbot是一个基于机器学习的聊天机器人引擎,构建在python上,主要特点是可以从已有对话中进行学习。
3.1安装chatterbot
pip install chatterbot
3.2chatterbot训练过程
通过调用train方法,并将训练集作为参数。ChatterBot的训练过程涉及将示例对话框加载到聊天机器人的数据库中。这可以构建代表已知语句和响应集的图数据结构。当一个聊天机器人训练师被提供一个数据集时,它会在聊天机器人的知识图中创建必要的条目,以正确表示语句输入和响应。
用上下句来构建一个statement ,statement相当于存储了一个上下对话的关系,在查找的时候,先找到最合适的上文,下文就是答案了。这就是一个训练的过程,训练的这一过程,主要是在构建statement,并把statement放到storage中。
3.3chatterbot总结
4、代码小练
chatterbot的聊天逻辑和输入输出以及存储是由各种adapter来限定的,下面是它的流程图。
创建chatterbot
- ChatBot: 这是 ChatterBot 库中用于创建聊天机器人的类。
- ‘Default Response Example Bot’: 这是你给机器人起的名字,用于标识这个聊天机器人实例。
- storage_adapter=‘chatterbot.storage.JsonFileStorageAdapter’: 指定了用于存储对话数据的适配器。这里使用了 JsonFileStorageAdapter,表示对话数据将被存储在一个 JSON 文件中。
- logic_adapters: 这是一个列表,包含了多个逻辑适配器的配置。逻辑适配器用于处理输入并生成机器人的回复。
- {‘import_path’: ‘chatterbot.logic.BestMatch’}: 使用了 BestMatch 适配器,它根据输入选择最佳的匹配回复。
- ‘import_path’: ‘chatterbot.logic.LowConfidenceAdapter’, ‘threshold’: 0.65, ‘default_response’: ‘I am sorry, but I do not understand.’: 使用了 LowConfidenceAdapter 适配器,它用于处理低置信度的输入。当输入的置信度低于 0.65 时,机器人会回复 ‘I am sorry, but I do not understand.’。
- trainer=‘chatterbot.trainers.ListTrainer’: 指定了训练器的类型。这里使用了 ListTrainer,它允许你通过列表来手动训练机器人,而不是使用自动训练。
from chatterbot import ChatBot
# 构建ChatBot并指定Adapter
bot = ChatBot(
'Default Response Example Bot',
storage_adapter='chatterbot.storage.JsonFileStorageAdapter',
logic_adapters=[
{
'import_path': 'chatterbot.logic.BestMatch'
},
{
'import_path': 'chatterbot.logic.LowConfidenceAdapter',
'threshold': 0.65,
'default_response': 'I am sorry, but I do not understand.'
}
],
trainer='chatterbot.trainers.ListTrainer'
)
# 手动给定一点语料用于训练
bot.train([
'How can I help you?',
'I want to create a chat bot',
'Have you read the documentation?',
'No, I have not',
'This should help get you started: http://chatterbot.rtfd.org/en/latest/quickstart.html'
])
# 给定问题并取回结果
question = 'How do I make an omelette?'
print(question)
response = bot.get_response(question)
print(response)
print("\n")
question = 'how to make a chat bot?'
print(question)
response = bot.get_response(question)