Natural language sentence matching领域在2017年的一篇文章
NLSM 一般有两种架构来解决:
-
"Siamese" architecture(单一架构)
训练一个网络,将两个句子编码到同一个向量空间中,根据句向量相似度判断句子是否匹配。
这种方法的优点是模型一般比较简单轻量,得到的向量可以用于可视化或者聚类等任务,其缺点是在编码阶段,两个句子没有显式地交互,这可能会丢失掉一些重要的信息。
-
matching aggregation(匹配聚合)
在这个框架下,首先匹配两个句子中较小的单位(如单词或上下文向量),然后(通过CNN或LSTM)将匹配结果聚合到一个向量中,做出最后的判断。新的框架捕获了两句话之间更多的交互特性,因此它获得了显著的改进。
以前的匹配聚合框架只考虑了单粒度的匹配,比如word to word,没有考虑phrase或sentence级别。
并且只有单向的匹配,没有反向匹配。
本文在匹配聚合框架上提出了一些改进,解决了上述两个问题
-
加入multi-perspective matching(多视角匹配)
-
使用BiLSTM引入双向匹配
BiMPM模型:
1578906269378.pngWord Representation Layer
没什么好说的,贴个别人写的
这一层的目标是用d维向量表示P和Q中的每个单词。我们构造了包含两个分量的d维向量:一个词嵌入和一个字符组合嵌入。单词嵌入是每个单独单词的固定向量,使用GloVe [Pennington et al., 2014]或word2vec [Mikolov et al., 2013]对其进行预处理。字符组合嵌入是通过将单词内的每个字符(表示为字符嵌入)输入长短时记忆网络(LSTM)来计算的,其中字符嵌入是随机初始化的,并与NLSM任务中的其他网络参数共同学习。该层的输出是两个字向量序列P和Q。
Context Representation Layer
使用BiLSTM对句子做双向编码
Matching Layer
核心部分,的每一个节点与做匹配
分别使用四种匹配方式,将结果拼接起来,实现multi-perspective matching的效果
Aggregation Layer
过一遍BiLSTM,将正向和反向最后的拿出来
Prediction Layer
将上一步得到的四个向量拼接到一起,做softmax,算出和的相似度
multi-perspective matching
有时间再详写,大致如图
1578906346954.png原文链接 arxiv
Github实现 BIMPM-pytorch
参考文章
[1] 文本相似度:Bilateral Multi-Perspective Matching for Natural Language Sentences
网友评论