文本匹配概述
文本语义匹配是自然语言处理中一个重要的基础问题,NLP 领域的很多任务都可以抽象为文本匹配任务。例如,信息检索可以归结为查询项和文档的匹配,问答系统可以归结为问题和候选答案的匹配(基于文本的问答系统),对话系统可以归结为对话和回复的匹配。语义匹配在搜索优化、推荐系统、快速检索排序、智能客服上都有广泛的应用。如何提升文本匹配的准确度,是自然语言处理领域的一个重要挑战。
基于词的传统召回
传统文本匹配方法
传统的文本匹配技术有BoW、VSM、TF-IDF、 BM25、Jaccord、SimHash等算法,如BM25算法通过网络字段对查询字段的覆盖程度来计算两者间的匹配得分,得分越高的网页与查询的匹配度更好。主要解决词汇层面的匹配问题,或者说词汇层面的相似度问题。而实际上,基于词汇重合度的匹配算法有很大的局限性,原因包括:
- 语义局限,这些传统方法无法理解词义,比如在不同语境下单词有相同或者不同的意思。
- 结构局限,“机器学习”和“学习机器”虽然词汇完全重合,但表达的意思不同。
- 知识局限,“秦始皇打Dota”,这句话虽从词法和句法上看均没问题,但结合知识看这句话是不对的。
所以对于文本匹配不能只停留在字面匹配的层面,需要语义层面的匹配。
主题模型
本博客有详细介绍。
将语句映射到等长的低维连续空间,在隐式的潜在语义空间上进行相似度的计算,这与协同过滤中的矩阵分解很类似。但是对于主题模型来讲对应的是LSA,即潜在语义分析,还有PLSA与LDA等高级的模型,但主题模型也是基于词袋模型来的,也是只停留在了字面匹配的层面,没有上升到语义层面的匹配。
深度语义匹配模型
基于神经网络训练出的Word Embedding来进行文本匹配计算,训练方式简洁,所得的词语向量表示的语义可计算性进一步加强。但是只利用无标注数据训练得到的Word Embedding在匹配度计算的实用效果上和主题模型技术相差不大。他们本质都是基于共现信息的训练。另外,Word Embedding本身没有解决短语、句子的语义表示问题,也没有解决匹配的非对称性问题。
一般来说,深度文本匹配模型分为两种类型: 表示型和交互型。
表示型(单语义)
表示型模型更侧重对表示层的构建,会在表示层将文本转换成唯一的一个整体表示向量。
representation-based
类模型,思路是基于Siamese
(孪生神经网络)网络,提取文本整体语义再进行匹配- 典型的
Siamese
结构,双塔共享参数,将两文本映射到统一空间,才具有匹配意义 - 表整层进行编码,使用
MLP, CNN, RNN, Self-attention, Transformer encoder, BERT
均可。 - 匹配层进行交互计算,采用点积、余弦、高斯距离、MLP、相似度矩阵均可
- 经典模型有:
DSSM, CDSSM, MV-LSTM, ARC-I, CNTN, CA-RNN, MultiGranCNN
等
优点
可以对文本预处理,构建索引,大幅度降低在线计算耗时
缺点
失去语义焦点,易语义漂移,难以衡量词的上下文重要性
交互型(多语义)
交互性模型摒弃后匹配的思路,假设全局的匹配度依赖于局部的匹配度,在输入层就进行词语间的先匹配,并将匹配的结果作为灰度图进行后续的建模。
- 交互层,由两文本词与词构成交互矩阵,交互运算类似于
attention
,加性乘性都可以 - 表征层,负责对交互矩阵进行抽象表征,
CNN、S-RNN
均可 - 经典模型有:
ARC-II、MatchPyramid、Match-SRNN、K-NRM、DRMM、DeepRank、DUET、IR-Transformer、DeepMatch、ESIM、ABCNN、BIMPM
等
优点
更好的把握了语义焦点,能对上下文进行更好的建模
缺点
忽略了句法、句间对照等全局性信息,无法由局部匹配信息刻画全局匹配信息。 ### BERT及后辈 ## 应用(基于主题模型)
短文本-短文本语义匹配
由于主题模型在短文本上的效果不太理想(众所周知),在短文本-短文本匹配任务中 词向量的应用 比主题模型更为普遍。简单的任务可以使用Word2Vec
这种浅层的神经网络模型训练出来的词向量。
如,计算两个Query的相似度, q1 = “推荐好看的电影”与 q2 = “2016年好看的电影”。
- 通过词向量按位累加的方式,计算这两个Query的向量表示
- 利用余弦相似度(Cosine Similarity)计算两个向量的相似度。
对于较难的短文本-短文本匹配任务,考虑引入有监督信号并利用“DSSM”
或“CLSM”
这些更复杂的神经网络进行语义相关性的计算。
短文本-长文本语义匹配
在搜索引擎中,需要计算用户 Query 和一个网页正文(content)的语义相关度。由于 Query 通常较短,因此 Query 与 content 的匹配与上文提到的短文本-短文本不同,通常需要使用短文本-长文本语义匹配,以得到更好的匹配效果。
在计算相似度的时候,我们规避对短文本直接进行主题映射,而是根据长文本的 主题分布,计算该分布生成短文本的概率,作为他们之间的相似度。
这个学习过主题模型的很容易可以理解。
长文本-长文本语义匹配
以新闻个性化推荐为例:
一图流。我们可以将用户近期阅读的新闻(或新闻标题)合并成一篇长“文档”,并将该“文档”的主题分布作为表达用户阅读兴趣的用户画像。