短文本相似度,即求解两个短文本之间的相似程度;它是文本匹配任务或文本蕴含任务的一种特殊形式,返回文本之间相似程度的具体数值。然而在工业界中,短文本相似度计算占有举足轻重的地位。

例如:在问答系统任务(问答机器人)中,我们往往会人为地配置一些常用并且描述清晰的问题及其对应的回答,我们将这些配置好的问题称之为“标准问”。当用户进行提问时,常常将用户的问题与所有配置好的标准问进行相似度计算,找出与用户问题最相似的标准问,并返回其答案给用户,这样就完成了一次问答操作。

目前,短文本相似度算法可以分为三大类:(1)无监督相似度计算;(2)有监督相似度计算;(3)有监督+无监督相似度计算。

一、无监督相似度计算

首先使用大规模语料库通过word2vec训练出词向量,然后将短文本进行分词操作,并找出每个词对应的词向量,最后对短文本的所有词的词向量进行求和(也可以根据词性或规则进行加权求和)操作,获得该短文本的句子向量。对两个短文本句子向量进行距离度量,最终获得其相似度值。

距离度量的方法有:(1)欧式距离;(2)余弦距离;(3)曼哈顿距离;(4)切比雪夫距离;(5)闵可夫斯基距离;(6)马氏距离;(7)标准化欧式距离;(8)汉明距离;(9)杰卡德距离;(10)相关距离。

举例介绍欧式距离和余弦距离公式:

(1)欧式距离,也称欧几里得距离,是最常见的距离度量,衡量的是多维空间中两个点之间的绝对距离。

二维平面上点  与  间的欧氏距离为 :

N维向量空间中点  与  间的欧氏距离为 : 

欧式距离值越小表示两个向量离的越近,即两个向量越相似。

(2)余弦距离,即使用两个向量的夹角余弦来衡量两个向量方向的差异。

二维空间中向量 与 的夹角余弦公式: 

N维向量空间中向量  与  间的夹角余弦公式为 : 

规定夹角余弦取值范围为[0,1]。余弦值越大表示两个向量的夹角越小,即两个向量越相似。

非监督学习方法,虽然可以较快得计算出相似度值,并且不需要标注预料。但是其句子向量的质量往往依赖于人为设置的词权值,易受到主管因素的影响,并且效果往往不尽如人意。

二、有监督相似度计算

有监督相似度计算,是在具有标注预料的条件下进行的,即根据标注数据进行深度学习建模,通过模型的端到端学习,直接求解出短文本的相似度值。目前,分为三种框架结构:(1)暹罗”架构;(2)“交互聚合”架构;(3)“预训练”架构。

1、“暹罗”架构:在该框架结构中,将两个短文本分别输入到相同的深度学习编码器中(如CNN或RNN),使得两个句子映射到相同的空间中,然后将得到得两个句子向量进行距离得度量,最终获取短文本的相似度值。代表模型是孪生网络【1】,如图1所示。

如图1 孪生网络模型结构图

其优点是共享参数使模型更小,更容易训练。虽然其短文本的句向量通过模型得出,具有一定的语义信息;但缺点也不容忽视,在映射过程中两个文本之间没有明确的交互作用,会丢失很多相互影响的信息。

2、“交互聚合”架构:该框架结构是针对于第一种框架结构的缺点而提出的,它的框架前部分与第一种框架相同,也是将两个文本分别输入到相同的深度学习编码器中得到两个句子向量,但之后不是直接将两个句子向量进行距离的度量,而是通过一种或多种注意力机制将两个句子向量进行信息的交互,最终将其聚合成一个向量,并通过值映射(全连接到一个节点)获取短文本的相似度值。代表模型有:ESIM【2】、BiMPM【3】、DIIN【4】和Cafe【5】等。如图2所示,

图2 BiMPM模型结构图

这种框架捕获了两句话之间更多的交互特性,因此它相较于第一种框架获得了显著的改进。

3、“预训练”架构:该框架结构来自近期较火的pre-trained模型(代表模型有:ELmo【6】,GPT【7】和BERT【8】等)。它主要采用两阶段模式,第一阶段使用很大的通用语料库训练一个语言模型,第二阶段使用预训练的语言模型做相似度计算任务,即将两个文本到预训练模型中,得到信息交互后的向量,并通过值映射(全连接到一个节点)获取短文本的相似度值。如图3所示,

图3 BERT模型结构图

这种框架通常具有很大的参数量,并且由于使用了很大通用语料库,使其普适性更好,可以获取两个短文本之间更隐蔽的交互特征,因此它相较于第二种框架也获取了一些改进。

虽然,监督学习方法比非监督学习方法求得的短文本相似度更加准确;但是,监督学习模型网络对计算要求较高。例如,如果我们想要从标准问库中找到一个与用户问题最相似的标准问,每一次一个新的用户问题来到时,我们都要与所有标准问题进行新的编码计算。如果标准问库很庞大时,需要大量的时间;而在事实问答场景中,用户很难去等待这么久。这也就是为什么监督学习模型效果虽好,但是现实问答机器人中依然采用无监督的方法的原因吧?

三、有监督+无监督相似度计算

鉴于无监督学习和有监督学习的优缺点,我们可以将其结合到一起,提高无监督学习的准确率并且降低有监督学习的时间成本。

那么如何去实现呢?

(1)无监督学习的弊端在于文本的句向量生成,通过词向量人为地加权求和并不能得到很好的句向量,并且得到的句向量也不包含上下文的语义信息。

我们可以使用监督学习的方法,去获取一个短文本的句向量。如上文所所,我们可以通过孪生网络获取到短文本的句向量,虽然没有两个文本句向量直接的相互信息,但是包含了各自文本的上下文语义信息。

(2)有监督学习的时间复杂度太高,为了避免每一次来一个新的文本,都将所有文本都计算一遍。我们舍弃文本之间的交互作用,直接使用生成好的句向量。

我们可以在问答系统或问答机器人启动阶段,先将标准问库中所有的标注问的句向量计算完成并存储;当一个用户问题过来时,我们只需要求解用户问题的句向量,然后与存储在库中的标准问句向量进行距离度量,最终就可以获得最相似的标准问了。节约了很大一部分时间成本。

(3)有监督学习可以获取优于无监督学习的句向量,那么如何可以提高句向量的质量呢?在2018年前,人们都是使用CNN或LSTM对其短文本进行编码,为获取更好的句子向量,但是效果一般,相较于无监督学习提高的程度也有限。同时又需要标注预料,其实在工业界使用价值并不明显。在2018年,BERT横空出世后,句向量的获取又被提高到了一个新的高度。借助于庞大的预训练语料库和模型参数,BERT模型称霸各大榜单的榜首,我们可以将BERT模型代替原来孪生网络中的CNN或LSTM结构,获取具有更多语义信息的句向量,将监督模型在工业界使用变成了可能。代表模型:Sentence-bert【9】。

由于BERT模型太过于庞大,我们还可以使用蒸馏模型的方法(有机会可以再次分享),将其进行蒸馏,来降低时间成本。

总结

本文介绍的短文本相似度计算方法,都是基于词向量的方法。还有一些传统的方法,例如TF-IDF、主题模型等,有兴趣的同学可以自行学习。

Reference:

[1]Learning a similarity metric discriminatively, with application to face verification

[2]Enhanced LSTM for Natural Language Inference

[3]Bilateral Multi-Perspective Matching for Natural Language Sentences

[4]Natural Language Inference over Interaction Space

[5]Compare, Compress and Propagate: Enhancing Neural Architectures with Alignment Factorization for Natural Language Inference

[6]Deep contextualized word representations

[7]Improving Language Understanding by Generative Pre-Training

[8]BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding

[9]Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks

发布于 2020-03-07

短文本相似度算法研究相关推荐

  1. 【TF-IDF】传统方法TF-IDF解决短文本相似度问题

    机器学习算法与自然语言处理出品 @公众号原创专栏作者 刘聪NLP 学校 | 中国药科大学 药学信息学硕士 知乎专栏 | 自然语言处理相关论文 前几天写了一篇短文本相似度算法研究的文章,不过里面介绍的方 ...

  2. 【短文本相似度】传统方法BM25解决短文本相似度问题

    之前介绍过TF-IDF计算短文本相似度,见:传统方法TF-IDF解决短文本相似度问题,想着就把这一系列都介绍完吧,也算是自己的归纳总结,今天就介绍一下如何使用BM25算法计算短文本相似度. 上一篇短文 ...

  3. gensim词向量Word2Vec安装及《庆余年》中文短文本相似度计算 | CSDN博文精选

    作者 | Eastmount 来源 | CSDN博文精选 (*点击阅读原文,查看作者更多精彩文章) 本篇文章将分享gensim词向量Word2Vec安装.基础用法,并实现<庆余年>中文短文 ...

  4. 短文本相似度在线计算_短文本相似度在线比较_短文本相似度在线查询_自然语言处理_百度AI开放平台

    短文本相似度计算服务能够提供不同短文本之间相似度的计算,输出的相似度是一个介于0到1之间的实数值,越大则相似度越高.相似度数值建议在一组数据中进行整体比对选用,输出数值越大,则代表语义相似程度相对越高 ...

  5. 《基于压缩传感的匹配追踪重建算法研究》读书笔记

    基于压缩传感的匹配追踪重建算法研究 1.压缩感知与传统数据获取和处理过程比较: 压缩感知理论表明,在对信号获取的同时,就对数据进行适当的压缩. 传统的数据获取和处理过程主要包括:采样.压缩.传输.解压 ...

  6. 图像和视频的快速去雾算法研究

    王昕, 孙莹莹, 李影昉. 图像和视频的快速去雾算法研究[J]. 影像科学与光化学, 2016, 34(1): 82-87.   WANG Xin, SUN Yingying, LI Yingfang ...

  7. 图像连通域标记算法研究

    搬以前写的博客[2014-03-01 08:09] 图像连通域标记算法研究 ConnectedComponent Labeling 最近在研究一篇复杂下背景文字检测的论文. "Detecti ...

  8. 遗传算法经典实例代码_经典算法研究系列 之 深入浅出遗传算法

    关注数学,关注AI,关注我们公众号ID:Math-AI 经典算法研究系列 遗传算法 1 初探遗传算法 Ok,先看维基百科对遗传算法所给的解释: 遗传算法是计算数学中用于解决最优化的搜索算法,是进化算法 ...

  9. 经典算法研究系列:十、从头到尾彻底理解傅里叶变换算法、上

     经典算法研究系列:十.从头到尾彻底理解傅里叶变换算法.上 作者:July.dznlong   二零一一年二月二十日 推荐阅读:The Scientist and Engineer's Guide t ...

最新文章

  1. 视频jourk--hadoop2.2.0(第一个2.x的正式版本)框架介绍:笔记
  2. 使用Javaweb实现在线调查问卷系统
  3. 重构第12天 分解依赖(Break Dependencies)
  4. python 连接oracle_常用的Python库,给大家分享一下!
  5. 自动提示_EXCEL2013版突然打不开,自动修复提示1907错误
  6. bzoj 3028 食物——生成函数
  7. 两个可用的ntp服务器地址
  8. 每日算法系列【LeetCode 128】最长连续序列
  9. ros重置后地址_RouterOS中BGP软重新配置 - ROS软路由论坛 - ROS教程 - RouterOS - ROS之家 - ROS脚本生成器 - Powered by Discuz!...
  10. 2022开源的群管理机器人源码+实测可用
  11. ss命令在linux上的安装
  12. android进阶2之有道词典开发,Android进阶2之有道词典开发
  13. mysql怎么删除临时表里的数据_MySQL如何创建和删除临时表 | 学步园
  14. 动图ps在html不动,教你如何用ps把动态图片加到静态图片上
  15. Android编程随机抽奖,Android 滚动抽奖的实现
  16. 博科光纤交换机常用命令
  17. scrapy crawl爬取我爱我家二手房的数据
  18. Visual Hull基于序列图像的三维重建
  19. EndNote20 快速入门
  20. 联发科2021笔试题1

热门文章

  1. np.random.permutation
  2. TFIDF的简单解释
  3. BorderlineSMOTE 的使用实例code
  4. TSNE 正规英文api
  5. 什么是两阶段提交协议2PC CAP
  6. 2021北京智源大会圆满闭幕,现场8千人,参会7万人,发布「悟道2.0」全球最大万亿级模型...
  7. SIGIR 2020开幕在即,智源学者论文收录占10%
  8. 智源青年科学家代季峰:用“数据+知识”解决图像理解的四大挑战
  9. 连岳读书|这是不让人害怕的数学,课堂上学不到的数学!
  10. 一本真正讲“大数据”处理思路的书