| 导语 问答系统是信息检索的一种高级形式,能够更加准确地理解用户用自然语言提出的问题,并通过检索语料库、知识图谱或问答知识库返回简洁、准确的匹配答案。相较于搜索引擎,问答系统能更好地理解用户提问的真实意图, 进一步能更有效地满足用户的信息需求。问答系统是目前人工智能和自然语言处理领域中一个倍受关注并具有广泛发展前景的研究方向。
一、引言 问答系统处理的对象主要包括用户的问题以及答案。根据问题所属的知识领域,问答系统可分为面向限定域的问答系统、面向开放域的问答系统、以及面向常用问题集(Frequently Asked Questions, FAQ)的问答系统。依据答案来源,问答系统可分为基于结构化数据的问答系统如KBQA、基于文本的问答系统如机器阅读理解、以及基于问答对的问答系统如FAQ问答。此外,按照答案的反馈机制划分,问答系统还可以分为基于检索式的问答系统和基于生成式的问答系统。
本文主要阐述FAQBot检索型问答系统的相关研究和处理框架,以及深度学习在其中的应用。FAQ检索型问答是根据用户的新Query去FAQ知识库找到最合适的答案并反馈给用户。如图所示:
其中,Qi是知识库里的标准问,Ai是标准问对应的答案。
具体处理流程为:
候选集离线建好索引。采用Lucene引擎,为数万个相似问集合建立字级别倒排索引。Lucene引擎的性能能够将召回时间控制在毫秒级别,大大减轻后续模块的计算压力;
线上收到用户 query 后,初步召回一批候选集作为粗排结果传入下一模块进行进一步精确排序;
利用matching模型计算用户query和FAQ知识库中问题或答案的匹配程度;
利用ranking 模型对候选集做 rerank 并返回 topk个候选答案。
可以看出,FAQ问答系统的核心任务可以抽象为文本匹配任务。传统文本匹配方法如信息检索中的BM25,向量空间模型VSM等方法,主要解决字面相似度问题。然而由于中文含义的丰富性,通常很难直接根据关键字匹配或者基于机器学习的浅层模型来确定两个句子之间的语义相似度。近几年,利用神经网络,尤其是深度学习模型学习文本中深层的语义特征,对文本做语义表示后进行语义匹配的方法开始被提出并应用于检索式问答系统。基于深度学习的模型一方面能够节省人工提取特征的大量人力物力。此外,相比于传统方法,深度文本匹配模型能够从大量的样本中自动提取出词语之间的关系,并能结合短语匹配中的结构信息和文本匹配的层次化特性,发掘传统模型很难发掘的隐含在大量数据中含义不明显的特征,更精细地描述文本匹配问题。
二、深度学习文本匹配 FAQ问答系统一般有两种解决思路,一种是相似问题匹配,即对比用户问题与现有FAQ知识库中问题的相似度,返回用户问题对应的最准确的答案,这种思路类似于text paraphrase;另一种是问题答案对匹配,即对比用户问题与FAQ知识库中答案的匹配度,返回用户问题对应的最准确的答案,这种思路为答案选择,即QA匹配。这两个类型相通的地方在于都可以看作文本语义匹配,很多模型能同时在两个任务上都得到很好的效果,区别在于QA匹配存在问题与答案不同质的问题。
下面总结一些基于深度学习的文本匹配工作,希望能够抛砖引玉,如有遗漏或错误,欢迎补充或指出。
2.1 模型框架 概括来讲,深度语义匹配模型可以分为两大类,分别是representation-based method 和 interaction-based method。
1) Represention-based Method
框架图如下:
这类算法首先将待匹配的两个对象通过深度学习模型进行表示,之后计算这两个表示之间的相似度便可输出两个对象的匹配度。这种方式下,更加侧重对表示层的构建,使其尽可能充分地将待匹配的两个对象都转换成等长的语义表示向量。然后在两个对象对应的两个语义表示向量基础上,进行匹配度的计算。针对匹配度函数f(x,y)的计算,通常有两种方法,如下图所示:一种是通过相似度度量函数进行计算,实际使用过程中最常用的就是 cosine 函数,这种方式简单高效,并且得分区间可控意义明确;另一种方法是将两个向量再接一个多层感知器网络(MLP),通过数据去训练拟合出一个匹配度得分,更加灵活拟合能力更强,但对训练的要求也更高。
Represention-based Extended