本文由云+社区发表
| 导语 问答系统是信息检索的一种高级形式,可以更加准确地理解用户用天然语言提出的问题,并经过检索语料库、知识图谱或问答知识库返回简洁、准确的匹配答案。相较于搜索引擎,问答系统能更好地理解用户提问的真实意图, 进一步能更有效地知足用户的信息需求。问答系统是目前人工智能和天然语言处理领域中一个倍受关注并具备普遍发展前景的研究方向。web
问答系统处理的对象主要包括用户的问题以及答案。根据问题所属的知识领域,问答系统可分为面向限定域的问答系统、面向开放域的问答系统、以及面向经常使用问题集(Frequently Asked Questions, FAQ)的问答系统。依据答案来源,问答系统可分为基于结构化数据的问答系统如KBQA、基于文本的问答系统如机器阅读理解、以及基于问答对的问答系统如FAQ问答。此外,按照答案的反馈机制划分,问答系统还能够分为基于检索式的问答系统和基于生成式的问答系统。算法
本文主要阐述FAQBot检索型问答系统的相关研究和处理框架,以及深度学习在其中的应用。FAQ检索型问答是根据用户的新Query去FAQ知识库找到最合适的答案并反馈给用户。如图所示:网络
其中,Qi是知识库里的标准问,Ai是标准问对应的答案。架构
具体处理流程为:框架
能够看出,FAQ问答系统的核心任务能够抽象为文本匹配任务。传统文本匹配方法如信息检索中的BM25,向量空间模型VSM等方法,主要解决字面类似度问题。然而因为中文含义的丰富性,一般很难直接根据关键字匹配或者基于机器学习的浅层模型来肯定两个句子之间的语义类似度。近几年,利用神经网络,尤为是深度学习模型学习文本中深层的语义特征,对文本作语义表示后进行语义匹配的方法开始被提出并应用于检索式问答系统。基于深度学习的模型一方面可以节省人工提取特征的大量人力物力。此外,相比于传统方法,深度文本匹配模型可以从大量的样本中自动提取出词语之间的关系,并能结合短语匹配中的结构信息和文本匹配的层次化特性,发掘传统模型很难发掘的隐含在大量数据中含义不明显的特征,更精细地描述文本匹配问题。机器学习
FAQ问答系统通常有两种解决思路,一种是类似问题匹配,即对比用户问题与现有FAQ知识库中问题的类似度,返回用户问题对应的最准确的答案,这种思路相似于text paraphrase;另外一种是问题答案对匹配,即对比用户问题与FAQ知识库中答案的匹配度,返回用户问题对应的最准确的答案,这种思路为答案选择,即QA匹配。这两个类型相通的地方在于均可以看做文本语义匹配,不少模型能同时在两个任务上都获得很好的效果,区别在于QA匹配存在问题与答案不一样质的问题。 分布式
下面总结一些基于深度学习的文本匹配工做,但愿可以抛砖引玉,若有遗漏或错误,欢迎补充或指出。ide
归纳来说,深度语义匹配模型能够分为两大类,分别是representation-based method 和 interaction-based method。函数
1) Represention-based Method性能
框架图以下:
这类算法首先将待匹配的两个对象经过深度学习模型进行表示,以后计算这两个表示之间的类似度即可输出两个对象的匹配度。这种方式下,更加侧重对表示层的构建,使其尽量充分地将待匹配的两个对象都转换成等长的语义表示向量。而后在两个对象对应的两个语义表示向量基础上,进行匹配度的计算。针对匹配度函数f(x,y)的计算,一般有两种方法,以下图所示:一种是经过类似度度量函数进行计算,实际使用过程当中最经常使用的就是 cosine 函数,这种方式简单高效,而且得分区间可控意义明确;另外一种方法是将两个向量再接一个多层感知器网络(MLP),经过数据去训练拟合出一个匹配度得分,更加灵活拟合能力更强,但对训练的要求也更高。
Represention-based Extended
上述的representation-based method存在的问题是直接基于句子的表示太粗糙,没法准确进行文本匹配任务。受信息检索领域的启发,结合主题级别和单词级别的匹配信息一般能够得到更好的表现。因而进一步对句子表示进行扩展,加入细粒度匹配信息。框架图以下:
2) Interaction-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机制。模型结果以下图:
(1)在输入层加入attention
其原理为将输入拓展成双通道。新添加的通道是attention feature map,即上图中的蓝色部分。首先计算attention matrix A,其每一个元素Aij表明句子1中第i个单词对句子二中第j个单词的match_score,这里使用了Euclidean距离计算。而后再分别计算两个句子的attention feature map。使用两个矩阵W0,W1分别和A还有 A的转置相乘,获得与本来feature尺寸相同的feature map。W0和W1都是模型参数,可使用相同的W,即共享两个矩阵。这样咱们就将原始的输入拓展成了两个通道。
(2)在pooling层加入attention
Attention matrix A的计算方法与上述相同,获得A后须要为两个句子分别计算attention权重向量,如上图中的两个虚线部分col-wise sum和row-wise sum。这两个向量中的每一个元素分别表明了相应单词在作Average Pooling时的权重。至关于pooling再也不是简单的Average Pooling,而是根据计算出的Attention权重向量获得的pooling。
给定一个(q,a)pair,q是问题,a是候选答案。首先获得它们的词向量,再使用biLSTM进行encoder,生成问题和答案的分布式表示,而后利用余弦类似度来衡量它们的距离。训练目标是hinge loss。
在biLSTM表示输出的基础上进一步使用CNN,CNN能够获取biLSTM输出的向量之间的局部信息。从而给出问题和答案的更多复合表示。
当biLSTM模型在问题和答案上长距离传播依赖关系时,隐藏向量的固定宽度成为瓶颈。经过动态调整问题答案的更多信息部分,可使用注意力机制来缓解这种弱点。在max/mean pooling前,每一个biLSTM输出向量将乘以softmax权重,该权重由biLSTM的问题嵌入获得。
QA_LSTM with attention中attention的设计是经过问题对答案的影响进行特征加权,可是它忽略了答案对问题的影响。Attentive pooling networks同时将attention应用到问题和答案,提升算法的准确率。经过同时学习两种输入的表示以及它们之间的类似性测量,其创新点在于将Q和A这两个输入经过参数矩阵U投射到一个共同的表示空间,用Q和A的representation构造了一个矩阵G,分别对G的row和column作max pooling, 这样就能分别能获得Q和A的attention vector。AP_BILSTM模型框架图以下:
AP_BILSTM模型的设计首先将问题和答案通过BILSTM抽取特征,而后经过二者的特征计算soft alignment,获得的G矩阵表示了问题和答案相互做用的结果。对该矩阵的列取最大,即为答案对问题的重要性得分,同理对该矩阵行取最大即为问题对答案的重要性得分。这两个向量再做为attention向量分别和问题和答案表示相乘后获得问题和答案新的表示,最后再作匹配。
2.2.4 AICNN[16]
以前关于答案选择的研究一般忽略了数据中广泛存在的冗余和噪声问题。 在本文中,设计一种新颖的注意力交互式神经网络(AI-NN),以专一于那些有助于回答选择的文本片断。 问题答案的表示首先经过卷积神经网络(CNN)或其余神经网络架构来学习。而后AI-NN学习两个文本的每一个配对片断的相互做用。 以后使用逐行和逐列池化来收集交互信息。以后采用注意机制来衡量每一个细分的重要性,并结合相互做用来得到问答的固定长度表示。 模型框架图以下:
2.2.5 MVFNN[17]
上述基于神经网络的方法经过计算注意力来考虑信息的几个不一样方面。 这些不一样类型的注意力老是简单地总结而且能够被视为“单一视图”,不能从多个方面来审视问题和候选答案,致使严重的信息丢失。 要克服这个问题,此模型提出了一种多视图融合神经网络,其中每一个关注组件生成QA对的不一样“视图”,而且融合QA自己的特征表示以造成更总体的表示。模型框架图以下:
对于一个问题,可能会有一堆视图来模拟其相应的答案。 在此模型中,根据直觉构建了四个视图。 这四个视图被命名为查询类型视图,查询主动词视图,查询语义视图和co-attention视图。最后使用fusion RNN模型来对这些视图进行融合。经过不一样视图的融合,能对两个对象进行更准确的建模。
2.2.6 BiMPM[18]
针对基于交互这一类方法,通常是先对两个句子的单元相互匹配,以后再汇集为一个向量后作匹配。这种方式能够捕捉到两个句子之间的交互特征,可是以前的方式只是基于词级别的匹配可是忽略了其余层级的信息。此外,匹配只是基于一个方向忽略了相反的方向。一种双向的多角度匹配模型bilateral multi-perspective matching(BiMPM)解决了这方面的不足。模型框架以下图:
模型自下而上一共包含五层,分别为单词表示层、上下文表示层、匹配层、聚合层和预测层,其中匹配层为模型的核心,共提出了四种匹配策略,这里的匹配能够当作是attention机制。
单词表示层:使用GloVe模型训练向量,对字符embedding进行随机初始化,单词中的字符组成单词的向量表示做为LSTM网络的输入。
上下文表示层:使用BiLSTM对p和q进行表示。
匹配层:模型的核心层,包含四种匹配策略,分别是:Full-Matching、Maxpooling-Matching、Attentive-Matching和 Max-Attentive-Matching。四种匹配策略以下图:
聚合层:利用BiLSTM对匹配层的输出向量进行处理,取得p、q前向和后向最后一个time step的输出进行链接后输入到预测层。
预测层:softmax层,softmax函数分类。
上述是对近几年部分深度文本匹配模型的总结,接下来则介绍基于深度模型的FAQBot。
3、基于深度学习的FAQBot实现
3.1 模型化流程
对于有大量问答记录的场景例如智能客服,这些记录里面有不少高频的知识点(知识点包括问题和答案)。这些高频的知识点对应的问法一般并不惟一。即知识库的结构为一个问题集合对应同一个答案。针对FAQ数据有如下三种数据类型:
其中,标准问q、对应答案A以及该标准问q对应的全部类似问q1,q2,...,一块儿组成一个知识点。一个知识点的样例见下图:
数据构造包含了两个方面:
(1)训练集测试集构造
测试集:将类似问中的第一条类似问q1做为query,从FAQ知识库的全部知识点中经过Lucene召回30个知识点做为候选集
训练集:包含两部分,一部分是正例的构造,另外一部分是负例的构造,这两部分数据的构造方式将直接影响到最终的效果。在正例的构造中,由于每一个知识点的第一个类似问是做为测试集中出现的,因此在构造训练集的时候排除掉全部知识点中的第一条类似问q1。这样的话,有多于2个类似问的知识点还有多于的其余类似问能够用来构造训练集。将这些识点中的标准问和从类似问的第二条开始(即[q2,q3,...,qn])能够按照不一样方式构造出正例和负例。
训练集正例的构造:去除全部知识点中的第一条类似问q1,其余类似问及标准问两两组合成正例pair对;对于类似问多的知识点进行剪切。
训练集负例的构造的方式包括:
(2)数据加强策略
因为深度学习须要较多的数据,为了加强数据,咱们采用了如下策略:
基本框架通常都是将待匹配的两个句子分别使用两个encoder来获取对应context信息,而后将两者的context信息进行匹配,获得匹配后的特征信息。也能够在匹配以后的特征后面加上一些其余的传统文本特征,将全部这些特征进行concat。最后接上softmax层,作最终的分类。模型的框架以下图所示:
Embedding层:使用word2vec和fasttext训练词向量和字符向量。
Encoder层:卷积具备局部特征提取的功能, 因此可用 CNN 来提取句子中相似 n-gram 的关键信息,考虑文本的上下文信息。因而咱们采用textCNN[19]来对句子进行编码表示,encoder过程见下图:
Matching层:在获得两个句子的表示后,要针对两个句子的表示进行matching操做。能够根据须要构造出不少种类型的matching方式以下图[20],咱们采用相对比较简单的element-wise相加和相乘的方式来进行matching。
join层:在matching层以后获得的两个句子的共同表示以后,进一步引入额外的传统特征进行join操做,相似于下图[21]。
引入interaction:上述步骤对两个句子encoder时没有考虑两个句子之间的关联。因而进一步引入更细致更局部的句子交互信息,从而能捕捉到两个句子之间的交互特征,根据交互获得的矩阵获取两个句子新的表示。如图:
引入attention机制:采用注意机制使用权重向量来衡量句子不一样部分重要性的不一样。attention的计算主要思想沿用了AICNN和ABCNN中的几种attention,分别是feature的attention,interaction后新的表示和句子原表示之间的attention。
[1] Huang P S, He X, Gao J, et al. Learning deep structured semantic models for web search using clickthrough data[C]// ACM International Conference on Conference on Information & Knowledge Management. ACM, 2013:2333-2338.
[2] Shen Y, He X, Gao J, et al. A Latent Semantic Model with Convolutional-Pooling Structure for Information Retrieval[C]// Acm International Conference on Conference on Information & Knowledge Management. ACM, 2014:101-110.
[3] Hu B, Lu Z, Li H, et al. Convolutional Neural Network Architectures for Matching Natural Language Sentences[J]. Advances in Neural Information Processing Systems, 2015, 3:2042-2050.
[4] Qiu X, Huang X. Convolutional neural tensor network architecture for community-based question answering[C]// International Conference on Artificial Intelligence. AAAI Press, 2015:1305-1311.
[5] Palangi H, Deng L, Shen Y, et al. Deep Sentence Embedding Using Long Short-Term Memory Networks: Analysis and Application to Information Retrieval[J]. IEEE/ACM Transactions on Audio Speech & Language Processing, 2016, 24(4):694-707.
[6] Yin W, Schütze H. MultiGranCNN: An Architecture for General Matching of Text Chunks on Multiple Levels of Granularity[C]// Meeting of the Association for Computational Linguistics and the, International Joint Conference on Natural Language Processing. 2015:63-73.
[7] Wan S, Lan Y, Guo J, et al. A Deep Architecture for Semantic Matching with Multiple Positional Sentence Representations[J]. 2015:2835-2841.
[8] Hu B, Lu Z, Li H, et al. Convolutional Neural Network Architectures for Matching Natural Language Sentences[J]. Advances in Neural Information Processing Systems, 2015, 3:2042-2050.
[9] Pang L, Lan Y, Guo J, et al. Text Matching as Image Recognition[J]. 2016.
[10] Wan S, Lan Y, Xu J, et al. Match-SRNN: Modeling the Recursive Matching Structure with Spatial RNN[J]. Computers & Graphics, 2016, 28(5):731-745.
[11] Lu Z, Li H. A deep architecture for matching short texts[C]// International Conference on Neural Information Processing Systems. Curran Associates Inc. 2013:1367-1375.
[12] Yin W, Schütze H, Xiang B, et al. ABCNN: Attention-Based Convolutional Neural Network for Modeling Sentence Pairs[J]. Computer Science, 2015.
[13] Tan M, Santos C D, Xiang B, et al. LSTM-based Deep Learning Models for Non-factoid Answer Selection[J]. Computer Science, 2015.
[14] Tan M, Santos C D, Xiang B, et al. Improved Representation Learning for Question Answer Matching[C]// Meeting of the Association for Computational Linguistics. 2016:464-473.
[15] Santos C D, Tan M, Xiang B, et al. Attentive Pooling Networks[J]. 2016.
[16] X Zhang , S Li , L Sha , H Wang. Attentive Interactive Neural Networks for Answer Selection in Community Question Answering[C]// International Conference on Artificial Intelligence.
[17] L Sha , X Zhang , F Qian , B Chang , Z Sui. A Multi-View Fusion Neural Network for Answer Selection[C]// International Conference on Artificial Intelligence.
[18] Wang Z, Hamza W, Florian R. Bilateral Multi-Perspective Matching for Natural Language Sentences[C]// Twenty-Sixth International Joint Conference on Artificial Intelligence. 2017:4144-4150.
[19] Kim Y. Convolutional Neural Networks for Sentence Classification[J]. Eprint Arxiv, 2014.
[20] Wang S, Jiang J. A Compare-Aggregate Model for Matching Text Sequences[J]. 2016.
[21] Severyn A, Moschitti A. Learning to Rank Short Text Pairs with Convolutional Deep Neural Networks[C]// The International ACM SIGIR Conference. ACM, 2015:373-382.
[22] Xiaodong Zhang, Xu Sun, Houfeng Wang. Duplicate Question Identification by Integrating FrameNet with Neural Networks[C]//In the Thirty-Second AAAI Conference on Artificial Intelligence (AAAI-18)
[23] Gong Y, Luo H, Zhang J. Natural Language Inference over Interaction Space[J]. 2018.
此文已由做者受权腾讯云+社区在各渠道发布
获取更多新鲜技术干货,能够关注咱们腾讯云技术社区-云加社区官方号及知乎机构号