实现微信聊天机器人-中级篇

本文介绍了ChatterBot的工作原理,通过创建输入、逻辑处理和输出层的适配器来构建对话软件。ChatterBot利用Levenshtein Distance等逻辑适配器选择最相似的回应。此外,文章还探讨了如何集成DeepQA,利用RNN和LSTM进行更复杂的对话处理,以提升聊天机器人的智能和准确率。
摘要由CSDN通过智能技术生成

一、ChatterBot工作原理

Chatbot Engine的技术框架采用了开源项目ChatterBot (github.com/gunthercox/C)。

ChatterBot是一个python库,利用它可以轻松的创建对话软件。

一个未经训练的ChatterBot实例开始不知道如何沟通,每次用户输入一个语句,ChatterBot就会保存这个语句以及它对应的问句。随着它接受更多的输入,它可以回应的语句数量会增加,每个输入和回应的对应关系准确性也会提高。程序通过搜索与输入语句最相似匹配的语句,来选择最相似的回应,然后基于人们对机器人回应语句的频次,返回最可能的回应。

下图展示了ChatterBot的工作流图:

总体上分为3个层次,输入层,逻辑处理层,输出层。各层都可以扩展自定义的模式。

· 输入层

从一些来源获得输入(如:终端控制台,API接口,语音识别输入等),然后将其转换成ChatterBot可以理解的格式。 目前支持VariableInputTypeAdapter,TerminalAdapter,HipChat等输入适配器。 可以定义自己的输入适配器,通过继承InputAdapter基类,重写process_input方法并返回指定对象Statement就可以实现。

逻辑处理层

逻辑处理层包含了一些逻辑适配器,ChatterBot通过这些逻辑选择一个给定输入语句的回应。 目前支持ClosestMatchAdapter,ClosestMeaningAdapter,ApproximateSentenceMatchAdapter,TimeLogicAdapter,MathematicalEvaluation等逻辑适配器。 ClosestMatchAdapter采用Levenshtein Distance来计算文本相似度。 ClosestMeaningAdapter基于由两个句子形成的字矩阵中每个单词的同义词集的接近程度。 TimeLogicAdapter用来回答关于当前时间的问句。 MathematicalEvaluation用来回答一些数学计算问题。 可以同时使用多个逻辑适配器来处理,机器人将返回最高计算置信度值的回应;如果多个适配器返回相同的置信度,那么选择适配器列表中第一个适配器。 同样,也可以定义自己的逻辑适配器,通过继承LogicAdapter基类,重写相关方法返回指定的值就可以实现。

输出层

返回输入语句的回应,支持多种输出源,如OutputFormatAdapter,TerminalAdapter,HipChat,Mailgun。 可以定义自己的输出适配器,通过继承OutputAdapter基类,重写process_response方法并返回指定对象Statement就可以实现。

以上3层分别对应了Chatterbot的3种适配器类型,输入适配器、逻辑适配器和输出适配器,另外,还有一种类型是存储适配器,存储适配器用来存储所有的对话及问答关系,以供逻辑适配器使用。

存储适配器也是可扩展的,目前支持JsonFileStorageAdapter,MongoDatabaseAdapter,TwitterAdapter,同样也可以自定义存储适配器。


二、ChatterBot使用

ChatterBot可以下载源码编译安装,也可以直接使用pip工具安装。

本例使用pip安装,如下

pip install chatterbot

下面通过一个简单例子说明如何使用:

from chatterbot import ChatBot

# 创建ChatBot实例

bot = ChatBot("Terminal",##bot名字

storage_adapter="chatterbot.adapters.storage.JsonFileStorageAdapter",##使用json文件存储数据

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值