文本匹配技术

概述

本篇博文是智能问答系列的第一篇,纠结半天不知道从何开始,又因文本匹配技术是QA中最核心的技术之一,于是从此开始。
在NLP中,文本匹配技术在各个应用系统中起核心支撑的作用,比如搜索引擎、智能问答、知识检索、信息流推荐等。本篇将纵览文本匹配的技术发展,并重点介绍文本语义相似度计算技术。

文本匹配任务

在真实场景中,如搜索引擎、智能问答、知识检索、信息流推荐等系统中的召回、排序环节,通常面临的是如下任务:从大量存储的 doc 中,选取与用户输入 query 最匹配的那个 doc。

  • 在搜索引擎中,“doc”对应索引网页的相关信息,如 title、content 等,“query”对应用户的检索请求,“最匹配”对应(点击行为)相关度最高。
  • 在智能问答中,“doc”对应 FAQ 中的 question,“query”对应用户的问题,“最匹配”对应语义相似度最高。
  • 在信息流推荐中,“doc”对应待推荐的 feed 流,“query”对应用户的画像,“最匹配”对应用户最感兴趣等众多度量标准。

解决这些任务,无监督和有监督学习都提供了一些具体方法,后面会详解。通常,这些任务的训练样本具有同样的结构:共 N 组数据,每组数据结构相同:1 个 query,对应的 M 个 doc,对应的 M 个标签。

  • 在搜索引擎中,query 会被表征为包含文本语义和用户信息的 embedding,doc 会被表征为包含索引网页各项信息的 embedding。
  • 在智能问答中,query 会被表征为以文本语义为主的 embedding,doc 同样表征为以文本语义为主的 embedding。
  • 在信息流推荐中,query 会被表征为包含文本特征各项信息的 embedding,doc 会被表征为包含用户历史、爱好等信息的 embedding。

可见,query 和 doc 的表征形式较固定,至于具体 embedding 包含的信息根据具体任务、场景、目标变化极大,按需设计。
至于训练数据的格式,总共有三种:pointwise、pairwist、listwise,这里就不展开了。

监督和无监督匹配技术

文本匹配技术可分为监督和无监督两类,无监督主要是基于字面(字符)的匹配,虽然朴素,但是在特定场景下,也能取得不错的效果了。尤其值得一提的是:能有效解决冷启动的问题。

  • 基于词汇重合度:TFIDF、VSM、LD、LCS、BM25、Jaccord、SimHash 等;
  • 基于浅层语义的主题模型:LSA、pLSA、LDA 等;

基于有监督的文本匹配主要是基于语义匹配,又称文本语义匹配,文本语义匹配又分为两大类,sentence encoding(representation)和sentence interaction,下面分别介绍:

SE网络

主要结构如下:

在这里插入图片描述

  • 典型的 Siamese 结构,双塔共享参数,将两文本映射到同一空间,才具有匹配意义;
  • 表征层进行编码,使用 MLP、CNN、RNN、Self-attention、Transformer encoder、BERT 均可;
  • 匹配层进行交互计算,采用点积、余弦、高斯距离、MLP、相似度矩阵均可;
  • 经典模型有:DSSM、CDSSM、MV-LSTM、ARC-I、CNTN、CA-RNN、MultiGranCNN 等;
  • 优点是可以对文本预处理,构建索引,大幅降低在线计算耗时;
  • 缺点是失去语义焦点,易语义漂移,难以衡量词的上下文重要性;

SI网络
主要结构如下:
在这里插入图片描述

  • interaction-based 类模型,思路是捕捉直接的匹配信号(模式),将词间的匹配信号作为灰度图,再进行后续建模抽象;
  • 交互层,由两文本词与词构成交互矩阵,交互运算类似于 attention,加性乘性都可以;
  • 经典模型有:ARC-II、MatchPyramid、Match-SRNN、K-NRM、DRMM、DeepRank、DUET、IR-Transformer 等;
  • 优点是更好地把握了语义焦点,能对上下文重要性进行更好的建模;
  • 缺点是忽视了句法、句间对照等全局性信息,无法由局部匹配信息刻画全局匹配信息

SE网络和SI网络,两者的作用并非谁是谁子集的关系,是相互补充的关系,在实际应用的时候,可以二者进行加权融合。下面针对这两类网络 ,挑选其中比较典型的模型,分别详细讲解,主要讲解MV-LSTM、K-NRM、MatchPyramid 这三个文本语义匹配模型。

MV-LSTM

论文:A Deep Architecture for Semantic Matching with Multiple Positional Sentence Representations
这篇论文采用双向LSTM处理两个句子,然后对LSTM隐藏层的输出进行两两计算匹配度,作者认为这是一个Multi-View(MV)的过程,能够考察每个单词在不同语境下的含义。同时用双向LSTM处理句子,相当于用变长的窗口逐步的解读句子,实现多颗粒度考察句子的效果。

这篇论文有3个创新点:1、使用了双向LSTM模型,这种模型能考虑到句子的时序关系,能捕捉到长距离的单词依赖,而且采用双向的模型,能够减轻这种有顺序的模型权重偏向句末的问题。2、用Interaction tensor计算句子之间的两两匹配度,从多个角度解读句子。3、匹配计算公式采用了带参数的计算公式。
结构图如下:
在这里插入图片描述
用Bi-LSTM同时处理两个句子,每个单词节点会对应两个隐藏层的输出,用每个单词的输出进行单词间两两的相似度匹配计算,形成一个匹配矩阵,这里的相似度计算采用了带参数的公式:
s ( u , v ) = f ( u T M 1 : c v + W u v [ u ; v ] T + b ) s(u,v) = f(u^TM^{1:c}v + W_{uv}[u;v]^T + b)
因为语言的表示有多样性,带参数的公式比不带参数的公式显得更加合理,然后对匹配矩阵进行K-Max的动态池化操作,也就是挑选K个最大的特征,最后采用全连接层进行维度压缩和分类。

MatchPyramid

论文题目: Text Matching as Image Recognition
论文地址:http://www.aaai.org/ocs/index.php/AAAI/AAAI16/paper/download/11895/12024
创新点:

  • 受CNN在图像识别中的启发(可以提取到边、角等特征),作者提出先将文本使用相似度计算构造相似度矩阵,然后卷积来提取特征。把文本匹配处理成图像识别。【想法很特别】
  • 根据结果显示,在文本方面使用作者提出的方法可以提取n-gram、n-term特征。

结构图如下:
在这里插入图片描述
关于衡量单词之间的相似度,论文实验了3种做法,后面两个都是基于词向量的:

  • 如果单词相同就是1,否则为0;
  • 计算词向量的余弦距离;
  • 计算词向量的内积;
    三个匹配矩阵叠加再用CNN在矩阵上进行特征提取是这篇整体的思想。
    在这里插入图片描述

在这里插入图片描述
卷积核第一层分别算,第二层求和算。可以见下图33的kernel分别算,24*4求和算。

K-NRM

论文名称:End-to-End Neural Ad-hoc Ranking with Kernel Pooling
论文地址:K-NRM
K-NRM 全称为 Kernel-based Neural Ranking Model,该模型的主要思路是:构建文本与文本的相似矩阵,使用 RBF Kernel 进行 Kernel Pooling ,取 log 相加后接一个全链接进行二分类(相似与不相似)。请看下图:
在这里插入图片描述

模型主要过程如下:
先把 term 映射为 Word Embedding:
t = v t t=\vec{v_t}
再计算Translation Matrix:
M i j = c o s ( v t i q , v t j d ) M_{ij}=cos(\vec{v_{t^q_i}},\vec{v_{t^d_j}})
然后通过 RBF Kernel:
K k ( M i ) = j e x p ( ( M i j μ k ) 2 2 σ k 2 ) K_k(M_i)=\sum_jexp(-\frac{(M_{ij}-\mu_k)^2}{2\sigma^2_k})
得到 Kernel Pooling:
K ( M i ) = K 1 ( M i ) , K 2 ( M i ) , . . . , K k ( M i ) \vec{K}(M_i)=K_1(M_i),K_2(M_i),...,K_k(M_i)
由 Kernel Pooling 得到 Sotf-TF Features:
ϕ ( M ) = I = 1 n l o g ( K ( M i ) ) \phi(M)=\sum^n_{I=1}log(\vec{K}(M_i))
在用 Sotf-TF Features 做分类:
f ( q , d ) = t a n h ( w T ϕ ( M ) + b ) f(q,d)=tanh(w^T \phi(M)+b)
该模型和 MatchPyramid 的核心的不同之处在于 RBF Kernel,感觉文章对高斯核函数的均值和方差怎么去取的没有写明白,只能看出来均值和方差是超参数,结合代码可以看出来,均值是从-1到1均匀均匀取值的(因为余弦相似度是在 -1 到 1 之间),方差也是取个定值,RBF Kernel得到的特征的含义是分布在均值周围的个数,可能也是 Sotf-TF 的含义(sotf term frequency)。但有个问题就是模型没有考虑文本的长度,所以我觉得他才选择 pairwise learning to rank loss 进行训练,这样对比的是相同 query 的得分,那么 query 的长度是固定的,document 一般都比较长,做截断后长度也应该相同,就解决了长度不同带来结果的不同了。

发布了31 篇原创文章 · 获赞 5 · 访问量 2510

猜你喜欢

转载自blog.csdn.net/qq_40176087/article/details/104406264