ACL2017|哈工大:笨笨:一个中文智能聊天机器人
ACL 2017 System Demonstrations
笨笨:一个中文智能聊天机器人
Benben: A Chinese Intelligent Conversational Robot
哈尔滨工业大学
Harbin Institute of Technology
【摘要】最近,会话式机器人在移动终端中被广泛应用于虚拟助手或伴侣。主流的对话机器人的设计目标主要集中在四个类别,即沟通、任务完成、问答和推荐。本文介绍了一种中国的智能对话机器人笨笨,旨在在统一架构下实现上述所有功能。此外,还具有饮食地图、隐含反馈对话、交互式机器阅读、新闻推荐等功能。 自笨笨于2016年6月6日发布以来,共有2,505名用户(至2017年2月22日)和11,107次完整的人机交互,共完成了198,998次对话。
1 背景介绍
聊天机器人的研究可以追溯到上个世纪五十年代,阿兰图灵提出了一个图灵测试来回答“机器能思考吗”的问题,随后掀起了人工智能研究的热潮。聊天机器人可应用于多个人机交互场景,比如问答系统、谈判、电子商务、辅导等。最近,随着移动终端数量的急剧增加,它也可以用于手机终端的虚拟助理,如Apple的Siri、微软的Cortana、Facebook的Messenger,Google助手等,让用户更容易地从终端上获取信息和服务。
当前主流的聊天机器人的设计目标主要集中在四个方面:
(1) 闲聊,即回答问候、情感和娱乐等信息;
(2) 指令执行,帮助用户完成特定的任务,包括酒店及餐厅预订、机票查询、旅行向导、网络搜索等;
(3) 问答,满足用户对知识和信息获取的需求;
(4) 推荐,通过分析用户兴趣和会话历史,推荐个性化内容。
目前,已有的聊天机器人仅能完成其中一个或几个任务,本文提出的机器人“笨笨”可以在一个统一的框架下完成以上所有任务。“笨笨”是由哈尔滨工业大学社会计算与信息检索研究中心自主研发的一款聊天机器人,2016年6月6日正式对外发布。
图1 “笨笨”的技术架构
图1所示为该中文聊天机器人的技术架构,底层包括自然语言处理的基本技术,例如中文分词、词性标注,词义消歧,命名实体识别,依存分析,语义角色标注和语义依存分析等。这些技术可以从哈工大的语言技术处理平台LTP(http://www.ltp-cloud.com)上获取。中间层包括基本NLP技术支持的核心技术。最顶层是“笨笨”的四大功能。
2结构设计
如图2所示,“笨笨”的主要架构包含四个组成部分:1)语言理解,2)会话状态跟踪,3)功能选择和处理,4)响应生成。可以看出,笨笨的架构可以对应于(Young et al。,2013)提出的口语对话系统的经典架构。具体来说,口语对话系统中的自然语言理解、对话管理和自然语言生成分别对应于笨笨架构的1),2)和3),4)组件。接下来我们将详细介绍每个组件。
2.1 语言理解
用户的输入可以为语音或文本,因此第一步是理解语音或文本内容。LTP工具包被用来进行基本的语言处理,包括中文分词、词性标注,词义消歧,命名实体识别,依存分析,语义角色标注和语义依存分析等。这些处理结果最终被视为词汇、句法和语义特征,并在接下来的处理步骤中转换为不同的表示。
我们利用(Tang et al., 2015)提出的方法获取句子级的情感分析结果。这些结果被用于两个方面,一方面是直接对情感产生回应,另一方面是将情感视为用户的隐含反馈,对会话进行长期优化。
我们利用(Fu and Liu, 2013)提出的弱监督方法来识别用户的意图,用户意图可以被当作响应生成的线索或功能选择的特征。例如,如果用户说:“我想去北京”,那他/她可能是想预订飞机或火车票,或进一步在北京预订酒店房间。
我们还设计了一个过滤掉含有粗俗、淫秽或敏感词语句子的方案。训练分类器利用手工整理的词典自动识别这些句子。同时,“笨笨”还需要对不属于其响应范围的请求进行拒绝。
2.2 会话状态跟踪
经过第一步处理之后,一个输入的句子被转换为多个特征表示,这些特征被用于会话状态跟踪和功能选择的输入。会话状态跟踪器记录了历史内容,当前域,历史触发域,确认、澄清、过滤、拒绝等状态的序列及其组合。给定一个输入的特征表示,多域状态跟踪器会产生多个域上的状态的概率分布,用于域选择。确认、澄清、过滤、拒绝等的跟踪器各自评估它们的触发概率。这些概率将直接作为它们当前状态或者触发置信度被发送到响应生成器。值得注意的是,对话有可能变成僵局,这表明用户对当前对话话题不感兴趣或者对笨笨的响应不满意。一旦僵局被检测到,笨笨将转到别的话题以维持对话。
同时,从图2中可以看到,在会话状态跟踪、域选择和域处理间存在一个迭代交互。交互式循环表示状态跟踪模块提供多个域的当前状态分布给域选择。触发的域被处理以更新会话状态以及生成中间结果给响应生成器。
2.3 域选择
域选择模块用于触发一个或多个域产生给响应生成器的中间结果。它将从语言理解中取得的特征表示和从会话状态跟踪中取得的当前多域状态分布作为输入,并且使用一个卷积神经网络评估触发域分布。
图3 主题增强卷积神经网络框架
在笨笨上,我们提出了一个主题增强卷积神经网络,将连续词表示和离散主题信息整合成一个统一的域选择框架。图3展示的就是所提出的用于域选择的主题增强卷积神经网络框架。词嵌入矩阵和主题矩阵分别用word2vec(https://code.google.com/archive/p/word2vec/)和标签LDA获得。输入对话语音的两个表示在全连接层组合并且输出域触发分布。最后,选择触发概率大于所选阙值的域执行接下来的域处理。注意在域选择之后,可能有一个或多个触发的域。如果没有域被触发,会话状态将被更新并且发送到响应生成模块。
2.4 域处理
一旦选出域,响应的处理步骤就被触发。我们将详细介绍四种域的处理方式。
2.4.1 闲聊
闲聊处理由两个组件组成。第一个是生成闲聊对话的基于索引的模型。这里,我们使用Lucene工具包从在线论坛和微博对话中索引了三百万单回合响应对。第二,使用“<EOS>”初始化基于序列到序列学习(Seq2Seq)的响应生成模块通常导致模糊或者无意义的回答,例如“我不知道”、“我也是”等等。为了解决这个问题,我们使用优化方案,即从开始学习(LTS)模型,利用特定神经网络学习怎么生成响应的第一个单词。
图4是所提的LTS模型的框架。从NTCIR-12中的短文对话发布的五百万帖子和评论对用于训练LTS模型。
2.4.2 指令执行
指令执行域也还有子域,如饭店酒店预订、机票火车票预订、巴士和地铁线路指导等等。对每一个子域,指令执行处理都在图5中展示。
我们可以看到,在识别用户意图之后,使用条件随机场模型识别用户输入中的值,通过子域的特征填充语义槽。对相同的语义槽,可能会填写不同形式的值。因此,我们提出一个值归一化方法用于语义槽。填充完一个空隙后会话状态被更新。在任务进程中,指令执行是一个终端和用户间的交互过程,所以需要一个多回合对话控制器。在笨笨,通过会话状态跟踪和域选择控制多回合对话。通过确认、澄清状态跟踪和响应生成实现域交替。
2.4.3 问答系统
问答域有两个模式,即事实型QA和交互型QA。在用户输入的意图识别后,问题分类模型将用户问题路由到事实型QA或者交互型QA。对于事实型QA,我们从在线百科全书中检索候选段落、句子和信息框消息,并从一个社区QA网站上采集的大规模社区QA库中检索QA对。正如笨笨目前处理中文对话,百度百科和百度知道都分别被选为在线百科全书和社区QA网站。答案提取模块从候选答案中提取答案。答案选择将候选答案排名并选第一个作为答案发送给用户作为响应。对于交互型QA和指令执行相似,并且他们共享槽归一化、槽填充和澄清的常见过程。一个交互性QA的例子是天气预报和查询某天某位置的天气。图6显示了笨笨问答的过程。
2.4.4 推荐
笨笨中的推荐有两个功能,第一个是满足用户在特定内容上所需的信息,第二个是打破对话中的僵局。以新闻推荐为例,笨笨可以回应一些特定主题的新闻阅读需求,如运动、时尚、电影、金融等。例如,用户说:“告诉我关于电影的最新消息,“他们也可以说“再来一次”看另一部电影的消息。除了查询模式,当在一次谈话中发现一个僵局,笨笨会根据用户的分析信息推荐最近的新闻。需要注意的是,新闻推荐也是一个互动的方式,这意味着笨笨会询问用户是否想以一个委婉的方式阅读一类新闻。
2.4.5 响应生成
如图2所示,响应生成会拿会话状态和中间结果作为输入来生成给用户的文本或语音应答。过滤、排斥、确证和澄清反应是通过考虑相应的状态生成的,它是从会话状态跟踪获得的。转移话题和推荐的响应生成用来打破对话中的僵局。
值得注意的是,域选择和处理步骤中可能存在多个触发域。因此,该中间结果可能包含多个输出域。这些输出实际上是相应的域产生的响应。然而,在会话的每一个回合中,只有一个响应来响应用户。因此,提出了响应质量估计模块,以生成对用户的唯一响应。质量评价过程中考虑状态,输出的置信度和域的响应特性。例如,如果QA的触发概率高于其他区域并且生成答案的置信度大于一个阈值,那么答案更像是对用户的响应。模块也将识别一个答案类型,以检查生成的答案是否与预测类型匹配。如果QA域输出一个位置或一个人名,则应答类型不匹配,因此答案不应是对用户的响应。
3 笨笨的特性功能
基于地图的对话:饮食地图是一个数据库,包含中国饮食的地理分布。它是通过挖掘新浪微博里的位置和饮食对构建的。膳食地图不仅包括相关的饮食和位置信息,还区分了早餐、午餐、晚餐以及使用者的性别。这些方面可以看作是谈话中的难点。基于饮食地图,通过与笨笨聊天,开发了一个查询特定饮食的定位的功能。
基于隐式反馈的对话:我们发现,用户可以表达自己的情感,观点,情绪等作为会话过程中的输入。这些都是隐性的用户反馈。因此,我们研究会话隐式反馈来持续优化会话生成模型,并在增强学习中将隐式反馈作为基本奖励函数的一个成型方案。
交互式机器阅读:给定一个文档或是关于一个特定的主题或事件的一个段落,笨笨不断与用户交谈给定的内容,这是我们提出的互动机读功能。笨笨将首先阅读并理解给定材料的使用提出的方法,用户可以根据材料内容问几个事实问题。需要注意的是,由于这些问题是关联文本的,有许多回指和省略现象。我们因此利用推荐的回指和零回指方法。
5 结论
在这篇论文中,我们介绍了一个中文对话机器人,它被设计用来实现聊天、指令执行、回答问题和人机对话等目标。在当前版本中,笨笨在三个平台实现,分别是电脑、手机和Nao机器人。将来我们计划把它用在其他平台,例如车、家具、玩具等等。与此同时,我们计划将笨笨从中文版改成英文版。
论文下载链接:
http://www.aclweb.org/anthology/P/P17/P17-4003.pdf