初衷
本人从事NLP开发5年了,其中多数项目都涉及文本匹配任务,类似文本分类和序列标注,文本匹配也是很多主流产品功能的实现技术,如:
- 搜索引擎中的召回和排序
- 推荐系统中的相似计算
- 对话机器人中的意图匹配,问答匹配
为了更好的学习和记忆,同时也希望能对同行入门者有所帮助,避免些弯路,本人将工作实践整理出本系列专题,旨在完成:任务介绍、数据集介绍、经典模型到现在主流模型的解读以及代码实现、实验对比。尽量让读者能从0开始,由浅入深地掌握和应用文本匹配技术。
文本匹配任务
如上图的两串文本S1与S2,文本匹配研究的是他们之间的关系,根据关系定义不同可分为以下具体任务:
信息检索
Information Retrieval,IR,研究的关系为相关程度。模型输入一般为query和doc,模型输出为doc和query的相关程度得分(0-1.0),目的是找出与query最相关的知识。常见场景有query-title匹配、query-document匹配。
例如
S1:中国首都
S2:中国首都北京
S3:北京F(S1,S3)=0.99,表示模型认为S1,S3是高度相关的,可以理解为是用户想要的检索答案。
F(S1,S2)=0.95,表示模型认为S1,S2是相关的,但相关度不是最高的。
语义相似
Text similarity,研究的关系为相似程度,即两者是否为复述关系。模型输入一般为query1和query2,模型输出为两者的语义相似程度得分(0-1.0)或者分类为是否相似,1为相似,0为不相似。
例如
S1:中国首都在哪
S2:哪是中国的首都
S3:北京F(S1,S3)=0.1,表示模型认为S1,S3的语义相似程度低,这两句话表达的不是一个意思。
F(S1,S2)=0.95,表示模型认为S1,S3的语义是和相似的,这两句话几乎表示一个意思。
语义蕴含
Textual Entailment,研究的关系为推理。模型输入一般为query1作为前提(premise)和query2作为假设(hypothesis),模型输出为两者的推理关系分类,类别1为query1能够推理得出query2的语义,类别2为两者语义相反或者逻辑矛盾,类别3为两者无任何关系。
例如
S1:中国首都在北京
S2:中国的首都
S3:纽约
F(S1,S2)=1,表示模型认为S1包含了S2的语义。
F(S1,S3)=3,表示模型认为S1,S3的语义是没有关系的。
问答匹配
Question Answering,QA,研究的关系为是否为答案。模型输入一般为query和answer,模型输出为两者的语义关系分类,类别1为answer为query的答案,类别2为不是。
例如
S1:中国首都在哪?
S2:中国的首都
S3:北京F(S1,S2)=2,表示模型认为S2是S1的答案。
F(S1,S3)=1,表示模型认为S3不是S1的答案。
文本匹配数据集
上文的4种文本匹配任务分别有其经典数据集
信息检索
CAsT-19:是一个支持对话信息检索(对话式检索)研究的新数据集,该数据集共有来自TREC Complex Answer Retrieval(CAR)和MS MARCO的38,426,252篇passage,
语义相似
MSRP:Microsoft Research Paraphrase Corpus,英文,5081个句子对,标签为是否相似0/1。
STS:SemEval STS Task,英文,句子对,标签为相似程度0.0~5.0。
Quora QP:Quora Question Pairs,英文,400k条,标签为是否相似0/1。
LCQMC:A Large-scale Chinese Question Matching Corpus,中文,260k句子对,全人工标注,标签为0/1。
BQ corpus:A Large-scale Domain-specific Chinese Corpus For Sentence Semantic Equivalence Identification,中文,120k问题对,标签为0/1。
文本蕴含
SNLI:The Stanford Natural Language Inference (SNLI) Corpus,英文,570k人工编写的英语句子对,标签:蕴含/矛盾/中性。
问答匹配
InsuranceQA:英文,保险相关问答数据集。给定一个问句(题干),需要从备选项中选出一条最符合题干的答案。
WikiQA:英文,开放领域问答数据集,包含3,047 个问题和29,258答案,其中 1,473个答案被标注为带有问题的答案.
文本匹配模型
DSSM
解读:Learning Deep Structured Semantic Models for Web Search using Clickthrough Data
Com-Agg
解读:A Compare-Aggregate Model For Matching Text Sequences
Bert-flow
解读:On the Sentence Embeddings from Pre-trained Language Models
GitHub地址
待发布
参考文献
- https://www.jiqizhixin.com/articles/2019-10-18-14
- https://zhuanlan.zhihu.com/p/85088152
- https://blog.csdn.net/sinat_41144773/article/details/89873865