1. 含义

文本匹配算法主要用与搜索引擎,问答系统等,是为了找到与目标文本最相关的文本。例如信息检索可以归结成查询项和文档的匹配,问答系统可以归结为问题和候选答案的匹配,对话系统可以归结为对话和回复的匹配。

2. 传统模型

  • 基于字面匹配:TF-IDF、BM25
  • 语义匹配:LSA类模型

3. 深度学习文本匹配模型发展过程

  • 单语义模型:简单的用全连接、CNN类或RNN类的神经网络编码两个句子然后计算句子之间的匹配度,没有考虑到句子中短语的局部结构
  • 多语义模型:从多颗粒的角度解读句子,考虑到和句子的局部结构
  • 匹配矩阵模型:更多的考虑待匹配的句子间不同单词的交互,计算两两之间的匹配度,再用深度网络提取特征,更精细的处理句子中的联系
  • 深层次的句子间模型:用更精细的结构去挖掘句子内和句子间不同单词之间的联系

4. 单语义模型

4.1 DSSM




NLP键值识别配对 nlp文本匹配_相似度


4.1.1 网络结构

  • 输入: Q是一个查询,D是各个候选文档,输入特征是最简单的one-hot词袋(500k维)
  • word Hashing: 按tri-grams做bag-of-word,将维度压缩到30k
  • 三层FC:使用tanh激活函数,embedding成128维特征(y)
  • 采用余弦距离计算Q下各个D的相关性R(Q,D)
  • 使用点击率来代替相关性,这也是模型需要train的东西


NLP键值识别配对 nlp文本匹配_lucene 按照匹配度排序_02


  • Loss Function


NLP键值识别配对 nlp文本匹配_权重_03


D+表示被点击的文档,这里就是最大化点击文档的相关性的最大似然

4.1.2 优势

  • 在真实检索场景下可行性很高
  • 结果不仅可以直接排序,还可以拿中间见过做文章

4.1.3 缺陷

  • 没有考虑到单词之间的时序联系
  • 相似度匹配用的余弦相似度是一个无参的匹配公式(再接入一个MLP会更加好

4.1.4 讨论

  • 特征的抽取部以是包括CNN、RNN、FC在内的任意网络类型或者组合

CDSSM


NLP键值识别配对 nlp文本匹配_mybatis按匹配度排序_04


DSSM-LSTM


NLP键值识别配对 nlp文本匹配_权重_05


  • loss 函数针对建模问题不同,解决分类应用时,例如交叉熵问题时,使用交叉熵;当处理回归问题时,使用cosine距离;解决排序问题时,则使用pairwise loss函数
  • 网络设计: 双塔型 f(g(x),h(q))

5. 多语义模型

5.1 MV-DSSM


NLP键值识别配对 nlp文本匹配_lucene 按照匹配度排序_06


5.1.1 网络结构

  • 用双向LSTM处理两个句子
  • Multi-View(MV)过程:每个单词节点会对应两个隐藏层的输出,用每个单词的输出进行单词间两两的相似度匹配计算(Interaction tensor),形成一个匹配矩阵
  • 对匹配矩阵进行K-Max的动态池化

5.1.2 优点(改进)

  • 双向LSTM模型能考虑到句子的时序关系,能捕捉到长距离的单词依赖,而且采用双向的模型,能够减轻这种有顺序的模型权重偏向句末的问题
  • 用Interaction tensor计算句子之间的两两相似度,从多个角度解读句子
  • 相似度计算公式采用了带参数的计算公式

6. 匹配矩阵模型

6.1 MatchPyramid


NLP键值识别配对 nlp文本匹配_lucene 按照匹配度排序_07


  • 构建相似度矩阵(序列数据 => 网格型数据):是否完全一样 (Indicator),余弦相似度 (Cosine),点乘 (Dot Product)三种,后两种使用预训练的Glove
  • 两层CNN:由于上一层的相似度矩阵shape不一致,在第一层CNN进行maxpool的时候,要使用动态poolling(pooling size=内容大小/kernel大小);第一层分别算,第二层求和算;RELU激活函数


NLP键值识别配对 nlp文本匹配_权重_08


  • 两层MLP:使用sigmoid激活,最后使用softmax,交叉熵损失函数

7. 深层次的句子间模型

7.1 基本原理

这些深层次的模型每个单词都是采用glove的预训练和characters卷积拼接作为单词的embedding输入。另外模型可能还会用到EM特征和POS特征,EM特征是excat match特征,就是这个单词在另一个句子中是否出现;POS是词性的特征,每个单词的词性作独热表示后纳入模型考虑。

7.2 BiMPM


NLP键值识别配对 nlp文本匹配_相似度_09


  • 输入:预训练的glove embeddings 和 chars embeddings
  • 经过BiLSTM的编码之后,对每一个step的LSTM的输出进行从p到q和从q到p的两两配对,有四种组合方式,然后将所有的结果进行拼接和预测结果。


NLP键值识别配对 nlp文本匹配_NLP键值识别配对_10


(a) Full,是一个句子中的每个单词,更另外一个句子中最后一个隐藏层的输出作匹配,前向的LSTM是最后一个,后向的LSTM是第一个。
(b) Maxpooling,与另一个句子每一个隐藏层的输出作匹配,取最大值。
(c) Attentive,利用这个单词的embedding和另一个句子各个单词的embeddings分别计算余弦相似度,然后用softmax归一化做成attention权重,加权求和再进行带参余弦相似度计算。
(d) Max-Attentive,与Attentive相似,先计算出attention的权重,取其中权重最大的,做相似度匹配

7.3 DINN


NLP键值识别配对 nlp文本匹配_NLP键值识别配对_11


  • 输入
    1)EM特征是excat match特征,就是这个单词在另一个句子中是否出现
    2)POS是词性的特征,每个单词的词性作独热编码
    3)characters卷积是对每个字母随机赋予一个向量,对单词的所有字母卷积得出特征作为单词的补充特征
    4)单词glove
  • highway network对特征进行编码,这个编码的输出构造一个句子内的attention
  • 对单词a和单词b的向量和它们的点积进行拼接,再做一个线性的映射得到一个权重参数,经过softmax归一化后成为句内attention的权重参数
  • 对highway出来的向量和带了句内交互的attention项的向量用门机制进行了过滤,得到每个单词的向量表示
  • 将向量表示两两之间做一个匹配形成匹配矩阵
  • 用DenseNet对匹配矩阵进行特征提取

参考文献

1、DSSM : Learning deep structured semantic models for web search using clickthrough data, PS Huang et al.

2、ARC:Convolutional Neural Network Architectures for Matching Natural Language Sentences, B Hu et al.

3、MV-LSTM : A Deep Architecture for Semantic Matching with Multiple Positional Sentence Representations, S Wan et al

4、MatchPyramid:Text Matching as Image Recognition, L pang et al.

5、BiMPM:Bilateral Multi-Perspective Matching for Natural Language Sentences, Z Wang et al.

6、DIIN:Natural Language Infefence Over Interaction space, Y Gong et al.

7、DRCN:Semantic Sentence Matching with Densely-connected Recurrent and Co-attentive Information, S Kim et al.