一.介绍
ChatterBot是一个基于机器学习的聊天机器人引擎,构建在python上,主要特点是可以自可以从已有的对话中进行学习。由于机器学习的特点,代理实例从和人的交互或者其他数据源学习得越久,就越能更精确的交互。
具备语言独立性,可以训练成说任何语言。
二.处理流程
ChatterBot对于输入语句选择最匹配的响应作为回答。输入、输出、存储和处理逻辑,是由各种adapter来处理的,这样使得他非常容易扩展。
输入形式 Input Adapters
Variable input type adapter 允许chatter bot接收不同类型的输入的,如strings,dictionaries和Statements
Terminal adapter 使得ChatterBot可以通过终端进行对话
HipChat Adapter 使得ChatterBot 可以从HipChat聊天室获取输入语句,通过HipChat 和 ChatterBot 进行对话
Speech recognition 语音识别输入,详见chatterbot-voice
预处理部分Preprocessor
对于输入语句在提交给logic adaper处理之前,进行一些特殊的处理。比如:
clean_whitespace 去掉语句中连续的空白字符
unescape_html 将 html中的转义字符变成对应的原字符,比如“<b>” 变成“”.
convert_to_ascii 将unicode转成对应的ASCII码
机器人应答逻辑 Logic Adapters
Best Match Adapter 最佳匹配
Time Logic Adapter 处理涉及时间的提问
Mathematical Evaluation Adapter 涉及数学运算
Specific Response Adapter 针对特点的输入,给出特定的输出。比如用户输入"help me"时,输出"你可以拨打xxxx电话"
存储器后端 Storage Adapters
SQL Storage Adapter 用sql数据库存储对话数据,由于程序是采用Alchemy ORM开发的,需要选择支持Alchemy ORM的数据库,比如mysql
Mongo Database Adapter 以MongoDB database方式来存储对话数据
输出形式 => Output Adapters
Output format adapter支持text,json和object格式的输出
Terminal adapter
HipChat Adapter
Mailgun adapter允许chat bot基于Mailgun API进行邮件的发送
Speech synthesisTTS(Text to speech)部分,详见chatterbot-voice