深度学习在自然语言处理方面的应用打造智能聊天机器人
作者:张俊林,中科院软件所博士,技术书籍《这就是搜索引擎:核心技术详解》、《大数据日知录:架构与算法》作者。曾担任阿里巴巴、百度、新浪微博资深技术专家,目前是用友畅捷通工智能相关业务负责人,关注深度学习在自然语言处理方面的应用。
责编:周建丁(zhoujd@csdn.net)
本文为《程序员》原创文章,未经允许不得转载,更多内容请订阅2016年《程序员》
聊天机器人(也可以称为语音助手、聊天助手、对话机器人等)是目前非常热的一个人工智能研发与产品方向。很多大型互联网公司投入重金研发相关技术,并陆续推出了相关产品,比如苹果Siri、微软Cortana与小冰、Google Now、百度的“度秘”、亚马逊的蓝牙音箱Echo内置的语音助手Alexa、Facebook推出的语音助手M、Siri创始人新推出的Viv……
究其原因在于大家都将聊天机器人定位为未来各种服务的入口,尤其是移动端App及可穿戴设备场景下提供各种服务的入口。
聊天机器人的类型
目前市场上有各种类型的聊天机器人,比如有京东JIMI客服机器人,儿童教育机器人,小冰娱乐聊天机器人,Alexa家居控制、车载控制机器人,Viv全方位服务类型机器人等。这是从应用方向对聊天机器人的一种划分。
如果对应用目的或者技术手段进行抽象,聊天机器人可以有以下两种划分方法。
目标驱动(Goal Driven) VS 无目标驱动(Non-Goal Driven)聊天机器人
目标驱动的聊天机器人指的是聊天机器人有明确的服务目标或者服务对象,比如客服机器人、儿童教育机器人、类似Viv的提供天气/订票/订餐等服务的服务机器人等,这种目标驱动的聊天机器人也可以称作特定领域的聊天机器人。
无目标驱动聊天机器人指的是聊天机器人并非为特定领域服务目的而开发,比如纯粹聊天或者出于娱乐聊天目的以及计算机游戏中的虚拟人物聊天机器人都属于此类。这种无明确任务目标的聊天机器人也可以称作为开放领域的聊天机器人。
检索式 VS 生成式聊天机器人
检索式聊天机器人指的是事先存在一个对话库,聊天系统接收到用户输入句子后,通过在对话库中以搜索匹配的方式进行应答内容提取。很明显,这种方式对对话库要求很高,需要对话库足够大,能够尽量多地匹配用户问句,否则会经常出现找不到合适回答内容的情形(因为在真实场景下用户说什么都是可能的),但它的好处是回答质量高,因为对话库中的内容都是真实的对话数据,表达比较自然。
生成式聊天机器人则采取不同的技术思路,在接收到用户输入句子后,采用一定技术手段自动生成一句话作为应答,这个路线机器人的好处是可能覆盖任意话题的用户问句,但是缺点是生成应答句子质量很可能会存在问题,比如语句不通顺、句法错误等看上去比较低级的错误。
本文重点介绍开放领域、生成式的聊天机器人如何通过深度学习技术来构建,很明显这是最难处理的一种情况。
好聊天机器人应该具备的特点
一般而言,一个优秀的开放领域聊天机器人应该具备如下特点:
首先,针对用户的回答或者聊天内容,机器人产生的应答句应该和用户的问句语义一致并逻辑正确,如果聊天机器人答非所问或者不知所云,或者总是回答说“对不起,我不理解您的意思”,无疑是毁灭性的用户体验。
其次,回答应该语法正确。这个看似是基本要求,但是对于采用生成式对话技术的机器人来说其实有一定困难,因为机器人的回答是一个字一个字生成,要保证这种生成的若干个字句法正确,并不容易做得那么完美。
再次,应答应该是有趣、多样而非沉闷无聊的。尽管有些应答看上去语义没什么问题,但目前技术训练出的聊天机器人很容易产生“安全回答”的问题,就是说,不论用户输入什么句子,聊天机器人总是回答“好啊”、“是吗”等诸如此类,看上去语义说得过去,但是这给人很无聊的感觉。
此外,聊天机器人应该给人“个性表达一致”的感觉。因为人们和聊天机器人交流,从内心习惯还是将沟通对象想象成一个人,而一个人应该有相对一致的个性特征,如果用户连续问两次“你多大了”,而聊天机器人分别给出不同的岁数,那么会给人交流对象精神分裂的印象,这即是典型的个性表达不一致。而好的聊天机器人应该对外体现出各种基本背景信息以及爱好、语言风格等方面一致的回答。
几种主流技术思路
当前聊天机器人的几种主流技术包括:基于人工模板、基于检索、基于机器翻译技术,以及基于深度学习的聊天机器人。
基于 人工模板的技术通过人工设定对话场景,并对每个场景编写针对性的对话模板,模板描述了用户可能的问题以及对应的答案。这个技术路线的好处是精准,缺点是需要大量人工工作,而且可扩展性差,需要一个场景一个场景去扩展。目前市场上各种类似于Siri的对话机器人中都大量使用了人工模板的技术,但其精准性是其他方法还无法比拟的。
基于 检索技术的聊天机器人则走的是类似搜索引擎的路线,事先存储好对话库并建立索引,根据用户问句,在对话库中进行模糊匹配找到最合适的应答内容。
基于 机器翻译技术的聊天机器人把聊天过程比拟成机器翻译过程,就是说将用户输入聊天信息Message,翻译成聊天机器人应答Response的过程类似于把英语翻译成汉语。基于这种假设,就完全可以将统计机器翻译领域相对成熟的技术直接应用到聊天机器人开发中。
基于 深度学习的聊天机器人技术是本文后续内容主要介绍的技术路线,总体而言,绝大多数技术都是在Encoder-Decoder(或者称作Sequence to Sequence)深度学习技术框架下改进的。使用深度学习技术来开发聊天机器人相对传统方法来说,整体思路非常简单并可扩展。
利用深度学习构建聊天机器人
如上所述,目前对于开放领域生成式聊天机器人技术而言,多数采用了Encoder-Decoder框架,所以这里首先描述Encoder-Decoder框架技术原理。然后分别针对聊天机器人研究领域需要特殊考虑的主要问题及其对应的解决方案进行讲解,这些主要问题分别是:多轮会话中的上下文机制、“安全回答”以及个性信息一致性问题。
Encoder-Decoder框架
Encoder-Decoder框架可以看作一种文本处理领域的研究模式,应用场景异常广泛,不仅可用在对话机器人领域,还可以应用在机器翻译、文本摘要、句法分析等各种场合。图1是文本处理领域里常用的Encoder-Decoder框架最抽象的一种表示。Encoder-Decoder框架可以直观地理解为适合处理由一个句子(或篇章)生成另外一个句子(或篇章)的通用处理模型。对于句子对(X,Y),我们的目标是给定输入句子X,期待通过Encoder-Decoder框架来生成目标句子Y。X和Y可以是同一种语言,也可以是两种不同的语言。而X和Y分别由各自的单词序列构成:
Encoder顾名思义就是对输入句子X进行编码,将输入句子通过非线性变换转化为中间语义表示C:
非常好我支持^.^
(0) 0%
不好我反对
(0) 0%