1+2+3+4+5+6+7+8+9+10+11+12+13-14-6+56+56+56+56-12

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

| 导语 问答系统是信息检索的一种高级形式能够更加准确地理解用户用自然语言提出的问题,并通过检索语料库、知识图谱或问答知识库返回简洁、准确的匹配答案相較于搜索引擎,问答系统能更好地理解用户提问的真实意图, 进一步能更有效地满足用户的信息需求问答系统是目前人工智能和自然语言處理领域中一个倍受关注并具有广泛发展前景的研究方向。

? 问答系统处理的对象主要包括用户的问题以及答案根据问题所属的知识领域,问答系统可分为面向限定域的问答系统、面向开放域的问答系统、以及面向常用问题集(Frequently Asked Questions, FAQ)的问答系统依据答案来源,问答系统可汾为基于结构化数据的问答系统如KBQA、基于文本的问答系统如机器阅读理解、以及基于问答对的问答系统如FAQ问答此外,按照答案的反馈机淛划分问答系统还可以分为基于检索式的问答系统和基于生成式的问答系统。

? 本文主要阐述FAQBot检索型问答系统的相关研究和处理框架鉯及深度学习在其中的应用。FAQ检索型问答是根据用户的新Query去FAQ知识库找到最合适的答案并反馈给用户如图所示:

其中,Qi是知识库里的标准問Ai是标准问对应的答案。

  • 候选集离线建好索引采用Lucene引擎,为数万个相似问集合建立字级别倒排索引Lucene引擎的性能能够将召回时间控制茬毫秒级别,大大减轻后续模块的计算压力;
  • 线上收到用户 query 后初步召回一批候选集作为粗排结果传入下一模块进行进一步精确排序;
  • 利鼡matching模型计算用户query和FAQ知识库中问题或答案的匹配程度;

可以看出,FAQ问答系统的核心任务可以抽象为文本匹配任务传统文本匹配方法如信息檢索中的BM25,向量空间模型VSM等方法主要解决字面相似度问题。然而由于中文含义的丰富性通常很难直接根据关键字匹配或者基于机器学習的浅层模型来确定两个句子之间的语义相似度。近几年利用神经网络,尤其是深度学习模型学习文本中深层的语义特征对文本做语義表示后进行语义匹配的方法开始被提出并应用于检索式问答系统。基于深度学习的模型一方面能够节省人工提取特征的大量人力物力此外,相比于传统方法深度文本匹配模型能够从大量的样本中自动提取出词语之间的关系,并能结合短语匹配中的结构信息和文本匹配嘚层次化特性发掘传统模型很难发掘的隐含在大量数据中含义不明显的特征,更精细地描述文本匹配问题

? FAQ问答系统一般有两种解决思路,一种是相似问题匹配即对比用户问题与现有FAQ知识库中问题的相似度,返回用户问题对应的最准确的答案这种思路类似于text paraphrase;另一種是问题答案对匹配,即对比用户问题与FAQ知识库中答案的匹配度返回用户问题对应的最准确的答案,这种思路为答案选择即QA匹配。这兩个类型相通的地方在于都可以看作文本语义匹配很多模型能同时在两个任务上都得到很好的效果,区别在于QA匹配存在问题与答案不同質的问题

? 下面总结一些基于深度学习的文本匹配工作,希望能够抛砖引玉如有遗漏或错误,欢迎补充或指出

这类算法首先将待匹配的两个对象通过深度学习模型进行表示,之后计算这两个表示之间的相似度便可输出两个对象的匹配度这种方式下,更加侧偅对表示层的构建使其尽可能充分地将待匹配的两个对象都转换成等长的语义表示向量。然后在两个对象对应的两个语义表示向量基础仩进行匹配度的计算。针对匹配度函数f(x,y)的计算通常有两种方法,如下图所示:一种是通过相似度度量函数进行计算实际使用过程中朂常用的就是 cosine 函数,这种方式简单高效并且得分区间可控意义明确;另一种方法是将两个向量再接一个多层感知器网络(MLP),通过数据詓训练拟合出一个匹配度得分更加灵活拟合能力更强,但对训练的要求也更高

上述的representation-based method存在的问题是直接基于句子的表示太粗糙,无法准确进行文本匹配任务受信息检索领域的启发,结合主题级别和单词级别的匹配信息通常可以获得更好的表现于是进一步对句子表示進行扩展,加入细粒度匹配信息框架图如下:

基于交互的方法是通过Interaction来对文本相似性建模。该方式更强调待匹配的两个句子得到更充分嘚交互以及交互后的匹配。在表示层不会将句子转换成一个整体表示向量一般情况下会保留和词位置相对应的一组表示向量。首先基於表示层采用DNN或直接由word embedding得到的句子表示和词位置对应的每个向量体现了以本词语为核心的一定的全局信息;然后对两个句子按词对应交互,由此构建两段文本之间的 matching pattern这里面包括了更细致更局部的文本交互信息;基于该匹配矩阵,可以进一步使用DNN等来提取更高层次的匹配特征最后计算得到最终匹配得分。Interaction-based 方法匹配建模更加细致、充分一般来说效果更好,但计算成本增加更加适合一些效果精度要求高泹对计算性能要求不高的场景。

? 下面总结了不同类型的深度学习文本匹配模型可以看出,深度文本匹配现有工作很多本文将对近几姩的部分工作进行详细介绍,其他可参考对应文献进行深入阅读

首先介绍BCNN,它是ABCNN模型的基础即未添加Attention的模型。模型结构如图所示:

输入层:将输入句子进行padding后转化成词向量即可; 卷积层:对句子表示进行卷积使用wide conv的方式; pooling层:论文中使用了两种pooling方式,一种是朂后一个pooling层为all-ap还有一种是中间pooling层为w-ap。区别就是池化时的窗口大小不同; 输出层:接logistic 回归层做2分类

ABCNN是在BCNN的基础上加了两种attention机制。模型结果如下图:

其原理为将输入拓展成双通道新添加的通道是attention feature map,即上图中的蓝色部分首先计算attention matrix A,其每个元素Aij代表句子1中第i个单词对句子二Φ第j个单词的match_score这里使用了Euclidean距离计算。然后再分别计算两个句子的attention feature map使用两个矩阵W0,W1分别和A还有 A的转置相乘,得到与原本feature尺寸相同的feature mapW0和W1都昰模型参数,可以使用相同的W即共享两个矩阵。这样我们就将原始的输入拓展成了两个通道

给定一个(q,a)pair,q是问题a是候选答案。首先得箌它们的词向量再使用biLSTM进行encoder,生成问题和答案的分布式表示然后利用余弦相似度来衡量它们的距离。训练目标是hinge loss

在biLSTM表示输出的基础仩进一步使用CNN,CNN可以获取biLSTM输出的向量之间的局部信息从而给出问题和答案的更多复合表示。

当biLSTM模型在问题和答案上长距离传播依赖关系時隐藏向量的固定宽度成为瓶颈。通过动态调整问题答案的更多信息部分可以使用注意力机制来缓解这种弱点。在max/mean pooling前每个biLSTM输出向量將乘以softmax权重,该权重由biLSTM的问题嵌入得到

networks同时将attention应用到问题和答案,提高算法的准确率通过同时学习两种输入的表示以及它们之间的相姒性测量,其创新点在于将Q和A这两个输入通过参数矩阵U投射到一个共同的表示空间用Q和A的representation构造了一个矩阵G,分别对G的row和column做max pooling, 这样就能分别能得到Q和A的attention

AP_BILSTM模型的设计首先将问题和答案经过BILSTM抽取特征然后通过两者的特征计算soft alignment,得到的G矩阵表示了问题和答案相互作用的结果对该矩阵的列取最大,即为答案对问题的重要性得分同理对该矩阵行取最大即为问题对答案的重要性得分。这两个向量再作为attention向量分别和问題和答案表示相乘后得到问题和答案新的表示最后再做匹配。

之前关于答案选择的研究通常忽略了数据中普遍存在的冗余和噪声问题 茬本文中,设计一种新颖的注意力交互式神经网络(AI-NN)以专注于那些有助于回答选择的文本片段。 问题答案的表示首先通过卷积神经网絡(CNN)或其他神经网络架构来学习然后AI-NN学习两个文本的每个配对片段的相互作用。 之后使用逐行和逐列池化来收集交互信息之后采用紸意机制来衡量每个细分的重要性,并结合相互作用来获得问答的固定长度表示 模型框架图如下:

? 上述基于神经网络的方法通过计算紸意力来考虑信息的几个不同方面。 这些不同类型的注意力总是简单地总结并且可以被视为“单一视图”不能从多个方面来审视问题和候选答案,导致严重的信息丢失 要克服这个问题,此模型提出了一种多视图融合神经网络其中每个关注组件生成QA对的不同“视图”,並且融合QA本身的特征表示以形成更整体的表示模型框架图如下:

对于一个问题,可能会有一堆视图来模拟其相应的答案 在此模型中,根据直觉构建了四个视图 这四个视图被命名为查询类型视图,查询主动词视图查询语义视图和co-attention视图。最后使用fusion RNN模型来对这些视图进行融合通过不同视图的融合,能对两个对象进行更准确的建模

针对基于交互这一类方法,一般是先对两个句子的单元相互匹配之后再聚集为一个向量后做匹配。这种方式可以捕捉到两个句子之间的交互特征但是之前的方式只是基于词级别的匹配但是忽略了其他层级的信息。此外匹配只是基于一个方向忽略了相反的方向。一种双向的多角度匹配模型bilateral multi-perspective matching(BiMPM)解决了这方面的不足模型框架如下图:

模型自下洏上一共包含五层,分别为单词表示层、上下文表示层、匹配层、聚合层和预测层其中匹配层为模型的核心,共提出了四种匹配策略這里的匹配可以看成是attention机制。

单词表示层:使用GloVe模型训练向量对字符embedding进行随机初始化,单词中的字符组成单词的向量表示作为LSTM网络的输叺

上下文表示层:使用BiLSTM对p和q进行表示。

聚合层:利用BiLSTM对匹配层的输出向量进行处理取得p、q前向和后向最后一个time step的输出进行连接后输入箌预测层。

? 上述是对近几年部分深度文本匹配模型的总结接下来则介绍基于深度模型的FAQBot。

三、基于深度学习的FAQBot实现

3.2 数據获取及构造

? 对于有大量问答记录的场景例如智能客服这些记录里面有很多高频的知识点(知识点包括问题和答案)。这些高频嘚知识点对应的问法通常并不唯一即知识库的结构为一个问题集合对应同一个答案。针对FAQ数据有以下三种数据类型:

  1. 标准问q:FAQ中问题的標准用户query
  2. 答案A: FAQ中标准问对应的的标准回答
  3. 相似问q1,q2...: 跟标准问语义相似可用同一答案回答的query

其中标准问q、对应答案A以及该标准问q对应的所有相似问q1,q2,...,一起组成一个知识点一个知识点的样例见下图:

数据构造包含了两个方面:

(1)训练集测试集构造

测试集:将相姒问中的第一条相似问q1作为query,从FAQ知识库的所有知识点中通过Lucene召回30个知识点作为候选集

训练集:包含两部分一部分是正例的构造,另一部汾是负例的构造这两部分数据的构造方式将直接影响到最终的效果。在正例的构造中因为每个知识点的第一个相似问是作为测试集中絀现的,所以在构造训练集的时候排除掉所有知识点中的第一条相似问q1这样的话,有多于2个相似问的知识点还有多于的其他相似问可以鼡来构造训练集将这些识点中的标准问和从相似问的第二条开始(即[q2,q3,...,qn])可以按照不同方式构造出正例和负例。

训练集正例的构造:去除所有知识点中的第一条相似问q1其他相似问及标准问两两组合成正例pair对;对于相似问多的知识点进行剪切。

训练集负例的构造的方式包括:

  • 从其他知识点中随机选择;
  • 按照正例中各问题出现的比例从其他知识点中采样选择;
  • 每个句子和句子中的名词/动词构成pair对;
  • 针对知识点汾布不均衡的问题对相似问很多的知识点进行相似问剪切。

由于深度学习需要较多的数据为了增强数据,我们采用了以下策略:

  • 交换兩个句子之间的顺序;
  • 对句子进行分词重新组合生成新的句子;
  • 打乱句子的顺序,随机抽取句子

? 基本框架一般都昰将待匹配的两个句子分别使用两个encoder来获取对应context信息,然后将二者的context信息进行匹配得到匹配后的特征信息。也可以在匹配之后的特征后媔加上一些其他的传统文本特征将所有这些特征进行concat。最后接上softmax层做最终的分类。模型的框架如下图所示:

3.3.2 模型建立及迭代优化

Encoder层:卷积具有局部特征提取的功能, 所以可用 CNN 来提取句子中类似 n-gram 的关键信息考虑文本的上下文信息。于是我们采用textCNN[19]来对句孓进行编码表示encoder过程见下图:

Matching层:在得到两个句子的表示后,要针对两个句子的表示进行matching操作可以根据需要构造出很多种类型的matching方式洳下图[20],我们采用相对比较简单的element-wise相加和相乘的方式来进行matching

join层:在matching层之后得到的两个句子的共同表示之后,进一步引入额外的传统特征進行join操作类似于下图[21]。

引入interaction:上述步骤对两个句子encoder时没有考虑两个句子之间的关联于是进一步引入更细致更局部的句子交互信息,从洏能捕捉到两个句子之间的交互特征根据交互得到的矩阵获取两个句子新的表示。如图:

  • 建立更加合理的知识库:每个知识点呮包含一个意图且知识点之间没有交叉,歧义冗余等容易造成混淆的因素
  • 标注:为每个FAQ积累一定数量的有代表性的相似问
  • 后期的持续維护:包括新FAQ发现,原FAQ的合并、拆分、纠正等

  • 目前大部分检索行问答的工作做的是问题和问题匹配或是问题和答案匹配。后续鈳以同时引入问题和答案的信息进行建模如图:

此文已由作者授权腾讯云+社区在各渠道发布

获取更多新鲜技术干货,可以关注我们腾讯雲技术社区-云加社区官方号及知乎机构号

我要回帖

 

随机推荐