1、聊天机器人的类型
从应用目的或者技术手段进行抽象,可以有以下两种划分方法:
目标驱动(Goal –Driven)VS 无目标驱动(Non-Goal Driven)聊天机器人
目标驱动的聊天机器人指的是聊天机器人有明确的服务目标或者服务对象;无目标驱动聊天机器人指的是聊天机器人并非为了特定领域服务目的而开发的,称作为开放领域的聊天机器人。
检索式 VS 生成式聊天机器人
检索式聊天机器人指的事先存在一个对话库,聊天系统接收到用户输入句子后,通过在对话库中以搜索匹配的方式进行应答内容提取;生成式聊天机器人,在接收到用户输入句子后,采用一定技术手段自动生成一句话作为应答。
2、几种主流技术思路
常见的几种主流技术包括:基于人工模板的聊天机器人、基于检索的聊天机器人、基于机器翻译技术的聊天机器人、基于深度学习的聊天机器人。
基于人工模板的技术通过人工设定对话场景,并对每个场景写一些针对性的对话模板,模板描述了用户可能的问题以及对应的答案模板。目前市场上各种类似于Siri的对话机器人中都大量使用了人工模板的技术,主要是其精准性是其他方法还无法比拟的。
基于检索技术的聊天机器人则走的是类似搜索引擎的路线,事先存储好对话库并建立索引,根据用户问句,在对话库中进行模糊匹配找到最合适的应答内容。
基于深度学习的聊天机器人技术,绝大多数技术都是在Encoder-Decoder(或者称作是Sequence to Sequence)深度学习技术框架下进行改进的。使用深度学习技术来开发聊天机器人相对传统方法来说整体思路是非常简单可扩展的。
3、深度学习构建聊天机器人
目前对于开放领域生成式聊天机器人技术而言,多数技术采用了Encoder-Decoder框架,所以本节首先描述Encoder-Decoder框架技术原理。
Encoder-Decoder框架
Encoder-Decoder框架可以看作是一种文本处理领域的研究模式,可以直观地去理解:把它看作适合处理由一个句子(或篇章)生成另外一个句子(或篇章)的通用处理模型。对于句子对<X,Y>,我们的目标是给定输入句子X,期待通过Encoder-Decoder框架来生成目标句子Y。X和Y可以是同一种语言,也可以是两种不同的语言。而X和Y分别由各自的单词序列构成,如图:
下图是文本处理领域里常用的Encoder-Decoder框架最抽象的一种表示:
Encoder顾名思义就是对输入句子X进行编码,将输入句子通过非线性变换(如图)转化为中间语义表示C:
对于解码器Decoder来说,其任务是根据句子X的中间语义表示C和之前已