开放领域的问答系统

日期: 2018-11-24 10:33:12 / 人气: 1418

2.1基于规则的开放问答系统

基于规则的开放问答系统背后几乎没有经过严格证明的定理与数学公式,也没有复杂的算法,大多采用模版匹配的方式来寻找最合适的答案。它们的相似点在于对话过程中其回答均基于谈话技巧,而不是根据常识回答。其回答算法依赖于包含大量句型、模板的对话语料库,但其中不包含常识性知识。在面对知道答案的问题时,聊天机器人经常能准确给出合适的回答;而对于那些不知道答案的问题,目前基本有三种常用的回答方法:1)猜一个“无厘头”的答案;2)直接回答不知道;3)用转移话题的方式回避用户的问题。目前市面上现存的聊天机器人由于其知识库规模有限、甚至没有知识库,当面对用户提出的专业性问题时,大多采用了转移话题的办法回避这些问题。因此,这类聊天机器人目前在工业界应用方向有限,除了和用户闲聊,它并不能解决太多的实际问题。具有代表性的主要有“小黄鸡”系列机器人,阿里飞猪智能客服机器人等。

2.2基于知识图谱的问答算法

        近年来,知识图谱技术得到了大量应用于发展,问答系统的构造也从传统的基于模板、规则的方法转为基于知识图谱的方法。一般来说,基于知识图谱的问答系统大多拥有一个或多个知识图谱,并利用检索算法、逻辑推理等工具与算法来回答用户问题,因此,图谱中实体的数量与质量是其性能的决定性因素。总而言之,基于知识图谱的问答系统的主要特征是有一个知识图谱,其中存储一个或者多个领域的相关实体,并能基于该图谱进行推理和演绎,深度回答用户提出的问题。目前基于知识图谱的问答系统其组成结构包括基于实体的问答系统、自然语言界面的用户界面、数据库查询接口等。与基于模板规则的聊天机器人不同,基于知识图谱的问答系统擅长回答知识型问题,对于其不能回答的问题,一般会直接返回失败,而不是转移话题避免尴尬。知识的数量与质量是决定了基于知识图谱的问答系统性能,然而大部分基于知识图谱的问答系统建立图谱多数依靠的是开放的百科知识,因此其实只能回答百科本体相关的问题。总而言之,基于知识图谱的问答系统,其优点在于能准确推理与回答用户提出的问题。并且由于采用了知识图谱,因此系统具有良好的可扩展性,只要扩展知识图谱即可扩展整个问答系统。但是其局限性也较为明显。如果用户的问题落入系统的知识图谱范围之内,系统可以轻松回答问题;一旦超出这个范围,系统性能骤降。总之,目前这类系统的性能不够稳定,适用范围较为狭窄。从知识图谱的角度分析其弱点的来源,可以发现大多数系统的知识图谱规模不足、实体获取困难,如前所述,其瓶颈主要在知识图谱上

2.3端到端问答算法

    在端到端方法出现以前,几乎所有数据驱动的机器学习问答系统都是由若干个组件拼接而成复杂系统,通常由问题理解、信息检索、答案抽取三大子系统构成。对于其中的每一个子系统,在进行构建时都需要实现许多极为复杂的算法,并且需要领域专家对问答数据集进行大量的特征工程设计,总的来说,如果此类系统转为商用,其搭建与维护成本极高,因此当时大部分的数据驱动问答系统都没有实现商用化。

    近年来,由于深度学习的持续火热,越来越多的目光开始集中于自然语言处理中深度学习方法的应用。循环祌经网络(RecurrentNeuralNetwork,RNN)近年来由于其良好的性能替代深度神经网络[3GUDeepNeuralNetwork,DNN)成为主流自然语言处理建模方案。如图2.6,相比DNN,RNN在隐层上增加了一个反馈,也就是说,RNN隐层的输入有一部分是前一级的隐层输出,使RNN能够通过循环反馈看到当前时刻之前的信息,这种特性赋予了RNN记忆功能,能较好的表征上下文的语义。这些特点使得RNN非常适合用于对自然语言进行建模。自WMT2015比赛之后,出现了大量的基于RNN构建的端到端双语翻译系统,其接受平行语料作为训练集,在当年的比赛中超过了各类复杂的统计翻译系统,引起了轰动。

    最近,各大公司也开始尝试在对话系统中应用端到端系统。这是因为端到端对话系统结构极为简单,其结构主要分为编码部分与解码部分。两个部分均由RNN构造而成,用户的问句经过分词按序在每一时间片中输入当前RNN编码部分得到编码后的中间编码向量,在下一时间片,下一个RNN单元接受下一个单词与上一时间片的中间编码变量作为输入,并计算得到当前时间片的编码结果。由此可得,当输入结束时获得的中间编码结果包含了整句问句的语义特征。解码部分获得中间编码变量作为第一时刻的输入并解码生成答句中的第一个单词,下一时刻解码部分的第二个RNN单元接受前一时刻的解码所得的单词与中间编码变量作为输入解码得到答句中的第二个单词,由此往复到解码结束时我们就能得到用户问句对应的答句。整个过程与传统的方案相比极为简单,因此训练成本较低,这种问答系统构建的方式也得到了大量的应用。

    当然,这种看似简单的方法也有比较严重的缺点,首先是端到端系统中的RNN对上下文相关性的拟合较强,更容易陷入过拟合的问题。另外,由于RNN比DNN更加复杂,海量数据环境下的RNN模型训练难度较大,容易出现梯度消失P1]和梯度爆炸[31]问题,导致在构建大型系统方面表现较差。