文本相似度
tags: NLP
500 questions : 18.5.6 如何做语义匹配?
[TOC]
前言
文本匹配算是一个基础性的任务,其可以应用到其他上游任务中如:信息检索,问答系统,对话等,这些上游任务本质上还是文本匹配的机制,只不过关注的核心在于,不同的任务需要不同的匹配机制。
文本匹配简介
0. 问题简介
文本匹配在信息检索,自动问答等任务有着广泛的应用,而随着文本匹配逐渐从传统的文本匹配模型向深度文本匹配模型转移,在不同任务上的应用也有很大的改变。
文本匹配问题可以简述为,一个样本中有两段文本:$s_1, s_2$, 在搜索引擎中,二者分别为查询项和文档;在问答系统中,两者分别为问题和答案, 文本匹配的目的是预测二者之间的匹配程度 $r$。
在实际开发中,问题往往会抽象成一个排序问题,即给定一段文本 $s_1$, 然后给定另一个文本列表,其中包含多个文本段$S_2$, 目标是在这个文本列表中筛选出与给定文本 $s_1$ 匹配的文本。 文本匹配模型回计算 $s_1$ 与 其他文本的相似度。
最关键的是,语义匹配详细可以划分为5个子任务,分别是:
- 相似度计算
- 问答匹配
- 对话匹配
- 自然语言推理
- 信息检索中的匹配
- 阅读理解匹配
1. 文本匹配的挑战
- 词语匹配的多元性: 不同词可以表示同一个语义; 同一个词在不同语境下会有不同的语义。
- 短语匹配的结构性:中文中这种词非常常见, 如:“机器学习” 与 “学习机器” 是两个不同的概念
- 文本匹配的层次性:文本是以层次化的方式组织起来的,词语组成短语,短语组成句子,句子形成段落,段落形成篇章,在设计模型时,如何考虑不同层次的匹配信息是十分重要的。
2. 深度学习文本匹配模型[3]
根据特征提取的不同方式,深度学习在文本匹配模型中的应用大致可分为三类:
- 基于单语义文本表达的深度学习模型: 将单个文本表达成一个稠密向量,然后计算两个向量之间的相似度来作为文本的匹配度[1] [2]。
- 基于多语义文本表达的深度学习模型:认为单一粒度的向量来表示一段文本不够精细,需要多语义的简历表达,即分别提取词,短语,句子等不同级别的表达向量,再计算不同粒度向量间的相似度作为文本间的匹配度
- 直接建模匹配模式的深度学习模型:认为匹配问题需要更惊喜的建模匹配的模式,即需要更早的让两段文本进行交互,然后挖掘文本交互后的模式特征,综合得到文本间的匹配度。
单粒度语义文本表达
1. DSSM,2013
2. CSDDM, 2014
ARC-I — 卷积
CNTN — 卷积
LSTM-RNN
2. 多粒度语义文本表达
MultiGranCNN
https://github.com/NTMC-Community/awesome-neural-models-for-semantic-match
https://github.com/sebastianruder/NLP-progress/blob/master/english/semantic_textual_similarity.md
MANM
Reference
[1] Siamese Recurrent Architectures for Learning Sentence Similarity
[2] Learning Text Similarity with Siamese Recurrent Networks
[3] 深度文本匹配综述
[3]