<center><b><font color=#A52A2A size=5 >公众号:数据挖掘与机器学习笔记</font></b></center>
1.文本匹配概要
文本匹配在信息检索、自动问答、机器翻译、对话系统、复述问题等自然语言处理任务上应用广泛。.这些自然语言处理的任务都可以在一定程度上抽象成文本匹配问题,比如信息检索可以归结为查询项和文档的匹配,自动回答可以归结为问题和候选答案的匹配,机器翻译可以归结为两种语言间的匹配,对话系统可以归结为前一句对话和回复的匹配,复述问题则可以归结为两个同义词句的匹配。文本匹配面临的挑战主要来源于以下几个方面:
词语匹配的多元性
不同的词语可以表示同一个语义,比如同义词;相同的词在不同的语境下会有不同的语义。
短语匹配的结构性
多个词语可以按照一定的结构组合成短语,匹配两个短语需要考虑短语的结构信息.比如“机器学习”和“学习机器”只有词语是匹配的,而顺序是打乱的。
文本匹配的层次性
文本是以层次化的方式组织起来的,词语组成短语,短语组成句子,句子组成段落,段落组成篇章.这样一种特性使得我们在做文本匹配的时候需要考虑不同层次的匹配信息,按照层次的方式组织我们的文本匹配信息。
传统的文本匹配模型需要基于大量的人工定义和抽取的特征,而且可学习的参数相对较少,所以这些特征总是根据特定的任务(信息检索,或者自动问答)人工设计的,很大程度上限制了模型的泛化能力。传统模型在一个任务上表现很好的特征很难用到其他文本匹配任务上.而利用深度学习方法,可以自动从原始数据中抽取特征,免去了大量人工设计特征的开销.首先特征的抽取过程是模型的一部分,根据训练数据的不同,可以方便适配到各种文本匹配的任务当中.以此同时,深度文本匹配模型结合上词向量(word2vec)的技术,更好地解决了词语匹配的多元性问题.最后得益于神经网络的层次化设计原理,深度文本匹配模型也能较好地符合短语匹配的结构性和文本匹配的层次性的特性。
深度文本匹配模型划分成3大类:<font color='red'>基于单语义文档表达的深度学习模型、基于多语义文 档表达的深度学习模型和直接建模匹配模式的深度学习模型</font>.
基于单语义文档表达的深度学习模型主要思路是,首先将单个文本先表达成一个稠密向量(分布式表达),然后直接计算两个向量间的相似度作为文本间的匹配度;
基于多语义的文档表达的深度学习模型认为单一粒度的向量来表示一段文本不够精细,需要多语义的建立表达,也就是分别提取词、短语、句子等不同级别的表达向量,再计算不同粒度向量间的相似度作为文本间的匹配度;
而直接建模匹配模式的深度学习模型则认为匹配问题需要更精细的建模匹配的模式,也就是需要更早地让两段文本进行交互,然后挖掘文本交互后的模式特征,综合得到文本间的匹配度.表1展示了深度文本匹配模型的分类。
2. 文本匹配问题简介
2.1 问题描述
给定标注训练数据集$S_{train}={(s_1^{(i)},s_2^{(i)},r^{(i)})}{i=1}^N$,其中,$s_1^{(i)}\in S_1,s_2^{(i)} \in S_2$为两段文本,$r^{(i)} \in R$表示两段文本的匹配程度。文本匹配的目标是在训练数据上,自动学习匹配模型$f:S_1 \times S_2 \rightarrow R$,使得对于测试数据 $S{test}$上的任意输入$s_1 \in S_1,s_2 \in S_2$,能够预测出$s_1$和$s_2$的匹配度$r$,然后通过匹配度排序得到结果。
对于一个实际任务,我们通常会抽象成一个排序问题.给定一段文本$s_1$,和另一段文本的一个列表$s_2 ^{(i)}$,目标是在这个列表中筛选出与给定文本狊$s_1$匹配的文本.文本匹配模型会计算所有的文本对($s_1$,$s_2 ^{(i)}$)的匹配度$r^{(i)}$,{$r^{(i)}$}列表排序越靠前的文本和$s_1$的匹配度越高。
2.2 评价指标
排序结果的评价指标可以参考这篇文章
2.3 传统文本匹配学习模型
作者 | 模型 | 模型简介 |
---|---|---|
Berger和Lafferty | 统计机器翻译模型 | 使用统计机器翻译模型计算网页词和查询词间的“翻译”概率,从而实现了同义或者近义词之间的匹配映射 |
Gao等 | 统计机器翻译模型 | 在词组一级训练统计机器翻译模型并利用用户点击数据进行模型训练 |
Hardoon等 | 典型相关分析和篇最小二乘等隐空间模型 | 试图为两种对象建立一个公共的隐空间,任意给定的查询和文档都可以被映射到此隐空间中,且在隐空间中查询和文档有一致的表达方式和特征维度,从而可以方便地计算两者的相似度或者距离,进而对其是否具有相同的“语义”做出判断 |
Wu等 | 正则化隐空间映射 | 把查询项和网页映射到同一隐空间中,并在模型训练中引入了正则化因子以避免奇异解 |
Bai等 | 有监督学习索引模型 | |
Gao等 | 双语话题模型 | 扩展了话题模型 |
上述模型还存在许多问题:
- 人工提取特征的代价很大.
- 基于主题模型的隐空间模型还比较粗糙,不能精确建模文本匹配中的语义相近程度
- 传统模型很难发掘一些隐含在大量数据中,含义不明显的特征,而往往有些特殊情况需要这样的特征才能提高性能
3.基于深度学习的文本匹配模型
优势:
- 深度学习模型可以将单词表示为语义空间中的向量,利用向量之间的距离运算更准确地描述两个单词之间的语义关系
- 深度学习模型自身的结构是层次化和序列化的,能够比较自然地描述自然语言中的层次结构、序列结构和组合操作
- 更好地地利用大规模数据和高性能计算,端到端学习
3.1 深度文本匹配形式化
定义$s_1={x_i}{i=1}^n,s_2={y_i}{i=1}^m$表示文本样本$s_1和s_2$中的单词序列,其中$n$和$m$表示句子长度,$x_i$和$y_i$表示句子中的单词。
单词表达
函数$w_i=\phi(x_i),v_i=\phi(y_i)$表示单词$x_i$和$y_i$到词向量$w_i,v_i$的一个映射。整个句子映射后得到矩阵$w$和$v$
短语、句子表达
利用函数$p=\Phi(w),q=\Phi(v)$,得到短语或者整个句子的表达
文本交互
用$M_0$表示两段文本交互后的结果,定义$M_0=f(p,q)$
匹配空间内的模式提取.在得到基本交互信息的基础上进一步提取匹配空间的模式信息,可以表示为函数$M_k=g(M_{k-1})$,这里的函数$g$可以由多个函数级联而成。
匹配程度得分
最后一步旨在综合前面的信息,得到一个匹配程度的打分,也即$r=h(M_n)$
3.2 基于单语义文档表达的深度学习模型
文档表达就是将文本表示成一个向量,传统方法得到的只基于一个文档的特征就可以看做一个文档的表达。而基于单语义深度学习模型中的文档表达则是利用深度学习的方法生成一个文档的高维度稠密向量。首先将待匹配的两个对象通过深度学习表达成两个向量,然后通过计算这两个向量之间的相似度便可输出两者的匹配度。
基于单语义文档表达的深度学习模型的核心是构建单个文档表达的差异。分成了基于全连接神经网络、卷积神经网络和循环神经网络这样的3类。
<img src="https://gitee.com/chengbo123/images/raw/master/image-20201011145804735.png" alt="image-20201011145804735" style="zoom:150%;" />
基于单语义文档表达的深度学习算法的重心在于得到一个适合的文档表达。
具有<font color='red'>3个优点</font>:
将文本映射为一个简洁的表达,便于储存;
匹配的计算速度快,可以和一些加速方法如位置敏感哈希技术结合,进一步提高计算速度;
模型可以用大量无监督的数据进行预训练,尤其是在匹配监督数据很少的时候,用大量文本进行预训练是相当有效的方法.
因此,该模型非常适合于信息检索这种对存储和速度要求都比较高的任务
<font color='red'>缺点:</font>
- 很多匹配问题不具备传递性(例如问答系统中问题和答案的位置不能互换),因此不适合用一个度量空间(参数相同的神经网络)来描述
- 文本的表示学习本身是非常困难的问题,只有效捕捉与描述对匹配有用的局部化(细节)信息
3.3 基于多语义文档表达的深度学习模型
不仅会考虑两段文本最终的表达向量的相似程度,也会生成局部的短语或者更长的短语的表达进行匹配.这样多粒度的匹配可以很好地补充基于单语义文档表达的深度学习模型在压缩整个句子过程中的信息损失,而达到更好的效果.
3.4 直接建模匹配模式的深度学习模型
直接建模匹配模式的深度学习模型旨在直接捕获匹配的特征:匹配的程度和匹配的结构。
论文:《深度文本匹配综述》