随着人工智能的发展,人机对话系统在智能家居、智能助理等领域得到长足的发展。从前年开始,大量的智能音箱(天猫精灵,小米智能音箱等)开始出现在To
C端,很多互联网公司将其视作新的入口不断布局,而在To B端,阿里小蜜、网易七鱼、微软的AI
Solution等系统也在不断迭代完善。特别是近年来随着深度学习技术、自然语言处理技术和人工构造的知识库规模的提升,对话系统涌现出大量的研究成果和方法,本篇博客将对部分方法进行梳理和概述。
  
  一般而言,根据对话系统的任务类型不同,对话系统框架分为任务导向性系统(Task-oriented Dialogue System)和
非任务导向性系统(Non-Task-Oriented Dialogue System)。



*
*
* 1任务导向性系统
<https://blog.csdn.net/qq_28031525/article/details/79855018#1任务导向性系统>
* 1.1 任务型对话 
<https://blog.csdn.net/qq_28031525/article/details/79855018#11-任务型对话>
* 1.1.1 管道方法
<https://blog.csdn.net/qq_28031525/article/details/79855018#111-管道方法>
* 1.1.2 端到端方法
<https://blog.csdn.net/qq_28031525/article/details/79855018#112-端到端方法>
* 1.2 问答 <https://blog.csdn.net/qq_28031525/article/details/79855018#12-问答>
* 2非任务导向性系统
<https://blog.csdn.net/qq_28031525/article/details/79855018#2非任务导向性系统>
* 2.1 生成方法
<https://blog.csdn.net/qq_28031525/article/details/79855018#21-生成方法>
* 2.2 基于检索式方法
<https://blog.csdn.net/qq_28031525/article/details/79855018#22-基于检索式方法>
* 3总结 <https://blog.csdn.net/qq_28031525/article/details/79855018#3总结>
* 4参考文献 <https://blog.csdn.net/qq_28031525/article/details/79855018#4参考文献>


1任务导向性系统

  任务导向性系统以任务型对话和问答为代表,满足用户特定性的目标需求,在训练过程中需要用户的反馈(require user feedback on
dialogue quality)。
  目前的多数商业目标导向型对话系统仍然具有很强的领域性,并较多地依赖于人工构造特征。从方法角度划分,任务型对话系统可分为管道方法和端到端方法。

1.1 任务型对话 

1.1.1 管道方法

  经典的管道方法包括自然语言理解(Natural Language Understanding)、对话管理(Dialogue Management)、
自然语言生成(Natural Language Generation)三个模块。流程图如下:
  

  在管道方法中,首先借助自然语言理解模块将用户的自然语言转化为语义表达,随后对话管理模块根据语义表示、上下文、用户元信息,找到合适的执行动作,再借助自然语言生成模块根据具体的动作生成回复。

  自然语言理解
在于对query的意图识别和解析填充预先定义的语义槽,将自然语言的query转化为结构化语义表示。用户的意图识别相对比较简单,可以将其看做分类方法,语义槽的填充可以利用CFR、RNN或者LSTM等方法。

  对话状态跟踪,概括的说,对话状态跟踪就是根据多轮的对话来确定用户当前的目标(user goal)到底是什么的过程。

  对话策略,是利用对话状态跟踪给出的置信状态来决策的过程,对话策略的输出是一个系统动作,系统动作也是一个由用户意图和slot-value
pairs组成的语义表示,表明系统要执行的动作的类型和参数。“每次决策的目标不是当前动作的对与错,而是当前动作的选择会使得未来的收益的预期最大化”

  自然语言生成,是将对话策略输出的语义表示转化成自然语言的句子,反馈给用户。

1.1.2 端到端方法

  传统的管道式存在过程依赖(process interdependence)的问题,一个部分的输入依赖于另一个部分的输出,缺乏系统的连贯性。
  且上述管道式的对话缺乏领域迁移
。因此基于端到端的任务对话称为热点,基于神经网络的端到端可训练任务导向性对话系统,将对话系统的学习作为学习从对话历史到系统恢复的映射问题,并应用在Encoder-Decoder模型中。

1.2 问答


  问答系统侧重于一问一答,即直接根据用户的问题给出精确的答案。问答系统更接近一个信息检索(IR)的过程,虽然过程可能涉及简单的上下文处理,但通常是通过指代消解和query补全来完成。
问答系统和任务导向性系统的最根本区别在于是否需要维护一个用户目标状态的表示和是否需要一个决策过程来完成任务。
  
  问答系统可以简略划分为基于知识库符号式、检索式以及生成式的方法。
  基于知识库问答
(适合处理一些事实类的问题,如“谁是美国总统”)是一个语义匹配的过程,通过表示学习知识库以及用户的语义表示,将知识库中的实体、关系转化为一个低维语义空间中的数值向量,在此基础上,利用数值计算,直接匹配与问句语义最相似的答案。
  检索式问答
是将自然语言处理的提问简化为机器可以识别的方式,包括关键词的提取,提问方式与扩展、语义分析等。检索模块是用某种检索算法找到相关的句子、段落或者文章,答案提取模块是从检索答案中找到与提问答案一致的实体,通过某种方式对答案进行排序,选择概率最大的候选答案作为最终答案。
  
  生成式方法
基于序列到序列模型的encoder-decoder框架,类似于机器翻译的方式,给出答案。然而,这种监督式学习不仅需要大量的训练数据,而且由于缺乏对话管理,使得该系统的鲁棒性不强。

  一个典型的自动问答系统包括如下三个主要部分:问题分析、信息检索和答案抽取。
  
  1.问题分析
  一般包括:问题分类、关键词提取和关键词扩展
  (1)问题分类:针对不同类型的问题进行抽取,以便在答案抽取阶段抽取答案;
  (2)关键词提取:提取出对后面检索系统中有用的关键字,去停用词;
  (3)关键词扩展:为了提高检索系统的召回率,对关键词做适当扩展,当然这部分的词的重要性要低于从问题中提取出的关键词。
  
  2.信息检索
  根据关键词在信息检索模块中检索,信息检索模块中的关键是对文档权重的确定和对文档进行排序。信息检索模块可以返回的是文档或者段落,甚至是句子。
  
  3.答案抽取
  答案抽取是对信息检索返回的一堆相关的网页内容抽取答案,也是自动问答最为重要的部分。

  信息检索出来的答案一般又可以句子作为答案,以词或者短语作为答案,以文摘作为答案。在以句子作为答案时,需要对检索出的句子进行权重排序。在以文摘作为答案中,目前可以结合一些深度学习的方法如Seq2Seq进行文摘自动生成。
  
  4.一般的还会有一个FAQ(常见问题)库,把用户经常问的问题及答案保存起来,这样有了FAQ库之后,对用户问的问题现在FAQ库中搜索。

2非任务导向性系统

  非任务导向性型系统的特点是:非面向目标,通常期待的是语义相关性和渐近性,对准确率要求不高,且都是面向开放领域(open
domain),在对话质量上不需要用户的反馈(does not require feedback on dialogue quality)。
  在实际的购物场景中,大概80%的表达都是非正式信息,处理这部分问句显然能够提高用户体验。
  非任务导向性系统是通过生成方法或者基于检索的方式实现。

2.1 生成方法


  生成式对话系统通过逐个词采样,计算每时每刻的概率分布作为当前时刻的响应输出词来完成响应对话,此类方法可根据内部状态生成概率更高的新序列文本作为系统响应,生成粒度更细,灵活性更强,目前的生成式对话系统中的一个主要流派是依赖于机器翻译技术。
   
  但是,目前的生成方法还是倾向于产生平淡无奇或者无意义的回复,如“I don’t know what you are talking
about”,同时在对话过程中,很难保持统一的语言风格和“人物”性格,此外目前系统也主要关注于单轮对话,最多两轮对话,还很难产生流利、连贯且有意义的多轮对话。

2.2 基于检索式方法

  检索式对话系统是将对话回复考虑为一个信息检索问题,该系统需要维护一个比较大的对话历史数据存储库,并基于信息检索技术完成对话响应。
  
  基于检索式方法的优点在于:1相比于生成模型,它实现比较简单;2从语料库中提取答案,语法是符合规范的;3排序时可以人为的添加一些特征来选择最好的回答;
  缺点在于:1.在处理自然语言时缺乏灵活性;2是很难利用上下文信息;3是很难辨别不同场景下输入的细微差别。

3总结

  在阿里小蜜的技术变迁中,我们看到小蜜的整个生态中融合了任务导向性系统和非任务导向性系统,通过意图识别和对话管理系统
识别query的真实意图,然后针对不同类型的问题可组合以及进行单独的算法选型。

  

  同时在非任务型对话中也将基于检索式方法和深度学习的生成方法相互结合,先通过传统的检索模型检索出候选集数据,再通过Seq2Seq对候选集进行Rerank,重排序之后超过制定的阈值就进行输出,不到阈值就通过Seq2Seq进行答案生成。
  

4参考文献

* 论文 《A Survey on Dialogue Systems: Recent Advances and New Frontiers》
<https://arxiv.org/pdf/1711.01731.pdf>
* 《A survey of Task-Oriented Dialogue Systems》
* 最新人机对话系统简略综述 <https://mp.weixin.qq.com/s/fRw4DBX_Gl5CD0kvuiS5ag>
* 阿里小蜜这一年,经历了哪些技术变迁?
<https://mp.weixin.qq.com/s?__biz=MzIzOTU0NTQ0MA==&mid=2247486879&idx=1&sn=60333513fc2d705a13e2d8005519a464&chksm=e9293090de5eb986cabc43d16e6e52b940e20c6d5355946bd890ea306ec4e2e39b5c68ab9400&scene=21#wechat_redirect>
* 论文《自动问答综述》
* 李纪为博士论文《Teaching Machines to Converse》
<https://github.com/jiweil/Jiwei-Thesis>
* 了解人机对话—聊天、问答、多轮对话和推荐 <https://www.jianshu.com/p/cde686e81b15>