一、任务概述

文本匹配任务,是NLP四大任务之一,主要指的是针对两个句子语义相关性,落地应用场景很广泛,对话系统,搜广推、QA问答系统等等。例如在QA问答系统中,举一个很常见的做法,用户假设说,“苹果电脑怎么下载软件”,后台的数据库有成千上万的query-answer的pair对,我们需要从成千上万的候选中,找出一个最佳的匹配对,给用户反馈answer。此时,我们的语义相似度计算的准确性就显得很重要!!!

本文主要是结合在工作实践中的一些经验,来做下业内方案的对比和学习

二、常用方案

1.传统的方案

  • tf-idf计算
  • BM25计算
  • 编辑距离、Jaccard、Simhash等

传统的方案主要是基于统计学方法通过词汇重合度来计算两段文本的字面相似,通过字面相似度来衡量文本的匹配度不妥,存在较多的不足,因为同一语义的文本在形式上千变万化,两段文本可以表现为字面相似但词序不同而导致语义完全相反;例如:“我喜欢吃苹果”,“我不喜欢吃苹果”,这两句话表现的语义完全不一样,但是从字层面表现的结果,相似度较高。

2.深度神经网络(代表性例子)

  • 表示型
  • 表示型模型主要是将两段文本转换成一个语义向量,然后计算两向量的相似度,其更侧重对语义向量表示层的构建,它的优势是结构简单、解释性强,且易于实现,是深度学习出现之后应用最广泛的深度文本匹配方法。典型的网络结构有 DSSM、LSTM 和 ESIM,  如下图所示:
  • 代表的论文:
  • 《Siamese Recurrent Architectures for Learning Sentence Similarity》,主要思想是将两个不一样长的句子,分别经过LSTM编码成相同尺度的embed向量,以此来比较两个句子的相似性。基于表示的文本匹配模型都是基于这种结构大差不差,即向量表示层+相似度计算层 输入句子 s1 = “He is smart”、 s2 = “A truly wise man”, s1 和s2 进行对齐,获取得到embed,然后经过LSTM网络 分别进行Encode编码,(语义编码层的权重是共享的),得到句子的语义表达 hidden1,hidden2,最终使用曼哈顿距离计算,并使用负指数函数归一化得相似度分数。
  • 其他的变种形式,LSTM模型换成Bi-LSTM模型,每一层的网络隐层进行
  • 《Sentence-BERT》论文
  • 题目:Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks
    论文:https://arxiv.org/pdf/1908.10084
    代码:https://github.com/UKPLab/sentence-transformers
  • Sentence-BERT是目前比较常用的BERT式双塔模型,发表于EMNLP209
  • 《BERT-flow》论文
  • 题目:On the Sentence Embeddings from Pre-trained Language Models
    论文:https://arxiv.org/pdf/2011.05864.pdf
    代码:https://github.com/bohanli/BERT-flow
  • 字节在EMNLP2020提出了BERT-flow,主要是基于Sentence-BERT做改动,因为之前的预训练+迁移都是使用有监督数据,而作者基于对原生BERT表示的分析发现,那些语义表示在整个空间的内分布很不均匀,于是使用flow-based生成模型将它们映射到高斯分布的均匀空间,减少分布的”空洞“,比之前的Sentence-BERT提升了4个点之多,不同的任务,和测试集合效果最终也不一样
  • 主要是解决 Bert模型的embedding 向量的 各向异性,通过flow模型变换成各向同性,具体的名词概念如:https://www.zhihu.com/question/460991118/answer/1906738611
  • 各向异性有个问题,那就是最后学到的向量都挤在一起,彼此之间计算余弦相似度都很高,并不是一个很好的表示。下图左边是各向异性,右边是各向同性
  • 交互型
  • 基于交互型模型摒弃了基于表示型模型的先建模后匹配的思路,通过attention为代表的结构来对两段文本进行不同粒度的交互(词级、短语级等),然后将各个粒度的匹配结果通过一种结构来聚合起来,作为一个超级特征向量进而得到最终的匹配关系。假设全局的匹配度依赖于局部的匹配度,在输入层就进行词语间的匹配和语义建模,它的优势是可以很好的把握语义焦点,对上下文重要性合理建模,效果较优于表示型,后续被广泛使用。具体如下图:

三、QA问题

1.直接使用Bert模型进行文本匹配任务为什么效果较差?

2.文本匹配任务工业界落地方案