0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算文本相似度几种最常用的方法,并比较它们之间的性能

zhKF_jqr_AI 来源:未知 作者:李倩 2018-06-30 11:16 次阅读

编者按:本文作者为Yves Peirsman,是NLP领域的专家。在这篇博文中,作者比较了各种计算句子相似度的方法,并了解它们是如何操作的。词嵌入(word embeddings)已经在自然语言处理领域广泛使用,它可以让我们轻易地计算两个词语之间的语义相似性,或者找出与目标词语最相似的词语。然而,人们关注更多的是两个句子或者短文之间的相似度。如果你对代码感兴趣,文中附有讲解细节的Jupyter Notebook地址。以下是论智的编译。

许多NLP应用需要计算两段短文之间的相似性。例如,搜索引擎需要建模,估计一份文本与提问问题之间的关联度,其中涉及到的并不只是看文字是否有重叠。与之相似的,类似Quora之类的问答网站也有这项需求,他们需要判断某一问题是否之前已出现过。要判断这类的文本相似性,首先要对两个短文本进行embedding,然后计算二者之间的余弦相似度(cosine similarity)。尽管word2vec和GloVe等词嵌入已经成为寻找单词间语义相似度的标准方法,但是对于句子嵌入应如何被计算仍存在不同的声音。接下来,我们将回顾一下几种最常用的方法,并比较它们之间的性能。

数据

我们将在两个被广泛使用的数据集上测试所有相似度计算方法,同时还与人类的判断作对比。两个数据集分别是:

STS基准收集了2012年至2017年国际语义评测SemEval中所有的英语数据

SICK数据库包含了10000对英语句子,其中的标签说明了它们之间的语义关联和逻辑关系

下面的表格是STS数据集中的几个例子。可以看到,两句话之间的语义关系通常非常微小。例如第四个例子:

A man is playing a harp.

A man is playing a keyboard.

通过判断,两句话之间“非常不相似”,尽管它们的句法结构相同,并且其中的词嵌入也类似。

STS数据集中的例子

相似度检测方法

用于计算两句子间语义相似度的方法非常广泛,下面是常见的几种方法。

基准方法

估计两句子间语义相似度最简单的方法就是求句子中所有单词词嵌入的平均值,然后计算两句子词嵌入之间的余弦相似性。很显然,这种简单的基准方法会带来很多变数。我们将研究,如果忽略终止词并用TF-IDF计算平均权重会带来怎样的影响。

词移距离

两文本之间的词移距离指的是文本一种中所有单词与文本二中的单词之间最小累计距离

替代上述基准方法的其中一种有趣方法就是词移距离(Word Mover’s Distance)。词移距离使用两文本间的词嵌入,测量其中一文本中的单词在语义空间中移动到另一文本单词所需要的最短距离。

Smooth Inverse Frequency

从语义上来讲,求一句话中词嵌入的平均值似乎给与不相关的单词太多权重了。而Smooth Inverse Frequency试着用两种方法解决这一问题:

加权:就像上文用的TF-IDF,SIF取句中词嵌入的平均权重。每个词嵌入都由a/(a + p(w))进行加权,其中a的值经常被设置为0.01,而p(w)是词语在语料中预计出现的频率。

常见元素删除:接下来,SIF计算了句子的嵌入中最重要的元素。然后它减去这些句子嵌入中的主要成分。这就可以删除与频率和句法有关的变量,他们和语义的联系不大。

最后,SIF使一些不重要的词语的权重下降,例如but、just等,同时保留对语义贡献较大的信息

预训练编码器

上述两种方法都有两个重要的特征。首先,作为简单的词袋方法,它们并不考虑单词的顺序。其次,它们使用的词嵌入是在一种无监督方法中学习到的。这两种特点都有潜在的威胁。由于不同的词语顺序会有不同的意思(例如“the dog bites the man”和“the man bites the dog”),我们想让句子的嵌入对这一变化有所反馈。另外,监督训练可以更直接地帮助句子嵌入学习到句意。

于是就出现了预训练编码器。预训练的句子编码器的目的是充当word2vec和GloVe的作用,但是对于句子嵌入来说:它们生成的嵌入可以用在多种应用中,例如文本分类、近似文本检测等等。一般来说,编码器在许多监督和非监督的任务中训练,目的就是能尽量多地获取通用语义信息。目前已经有好几款这样的编码器了,我们以InferSent和谷歌语句编码器为例。

预训练句子编码器以来自然语言推理等任务,来学习句子嵌入,以便用于今后的迁移任务中

InferSent是由Facebook研发的预训练编码器,它是一个拥有最大池化的BiLSTM,在SNLI数据集上训练,该数据集含有57万英语句子对,所有句子都属于三个类别的其中一种:推导关系、矛盾关系、中立关系。

为了与Facebook竞争,谷歌也推出了自己的语句编码器,它有两种形式:

其中一种高级模型,采用的是变换过的模型编码子图生成的语境感知词所表示的元素总和。

另一种是简单一些的深度平均网络(DAN),其中输入的单词和双字符的嵌入相加求平均数,并经过一个前馈深层神经网络

基于变换的模型的结果更好,但是在书写的时候,只有基于DAN的编码器可用。与InferSent不同,谷歌的橘子编码器是在监督数据和非监督数据上共同训练的。

结果

我们在SICK和STS数据集上测试了上述所有方法,得出句子对之间的相似度,并与人类判断相比较。

基准方法

尽管他们很简洁,在平均词嵌入之间求余弦相似性的基准方法表现得非常好。但是,前提仍要满足一些条件:

简单word2vec嵌入比GloVe嵌入表现的好

在用word2vec时,尚不清楚使用停用词表或TF-IDF加权是否更有帮助。在STS上,有时有用;在SICK上没用。仅计算未加权的所有word2vec嵌入平均值表现得很好。

在使用GloVe时,停用词列表对于达到好的效果非常重要。利用TF-IDF加权没有帮助。

我们简单的基准方法表现得都不错

词移距离

基于我们的结果,好像没有什么使用词移距离的必要了,因为上述方法表现得已经很好了。只有在STS-TEST上,而且只有在有停止词列表的情况下,词移距离才能和简单基准方法一较高下。

词移距离的表现令人失望

Smooth Inverse Frequency

SIF是在测试中表现最稳定的方法。在SICK数据集上,它的表现和简单基准方法差不多,但是在STS数据集上明显超过了它们。注意,在带有word2vec词嵌入的SIF和带有GloVe词嵌入的SIF之间有一些差别,这种差别很显著,它显示了SIF的加权和去除常用元素后减少的非信息噪音。

SIF的表现最稳定

预训练编码器

预训练编码器的情况比较复杂。但是我们的结果显示编码器还不能完全利用训练的成果。谷歌的句子编码器看起来要比InferSent好一些,但是皮尔森相关系数的结果与SIF的差别不大。

预训练编码器表现得不错,但是SIF也没比它们差多少

而斯皮尔曼相关系数的效果更直接。这也许表明,谷歌的句子编码器更能了解到句子的正确顺序,但是无法分辨其中的差别。

斯皮尔曼相关系数表现出与皮尔森不同的效果

结论

语句相似度是一个复杂现象,一句话的含义并不仅仅取决于当中的词语,而且还依赖于它们的组合方式。正如开头我们举的那个例子(harp和keyboard),语义相似度有好几种维度,句子可能在其中一种维度上相似,而在其他维度上有差异。目前的句子嵌入方法也只做到了表面。通常我们在皮尔森相关系数(Pearson correlation)上进行测试,除了有些情况下斯皮尔曼相关系数(Spearman correlation)会有不一样的结果。

所有判断句子相似度的方法比较

所以,如果你想计算句子相似度,你会选择哪种方法呢?我们的建议如下:

word2vec比GloVe的选择更保险

虽然句子中无加权的平均词嵌入是简单的基准做法,但是Smooth Inverse Frequency是更强有力的选择

如果你可以用预训练编码器,选择谷歌的那款吧。但是要记住它的表现可能不会总是那么惊艳。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 编码器
    +关注

    关注

    41

    文章

    3364

    浏览量

    131571
  • 数据集
    +关注

    关注

    4

    文章

    1179

    浏览量

    24356
  • 自然语言
    +关注

    关注

    1

    文章

    271

    浏览量

    13209

原文标题:计算文本相似度常用的四种方法

文章出处:【微信号:jqr_AI,微信公众号:论智】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    [2.2]--2.2向量空间模型及文本相似计算

    深度学习
    jf_60701476
    发布于 :2022年12月01日 01:42:28

    边缘相似及其在散斑噪声抑制算法比较中的应用

    边缘相似及其在散斑噪声抑制算法比较中的应用 对于滤波算法,噪声抑制能力和边缘保持能力一直是考核其性能的两个重要指标。对于前者,通常都有相应的参数进行表征,而对于后者,通常却只能依靠人
    发表于 08-08 09:38

    数据库最常用几种基 本操作

    连接上数据库之后,就可以对数据库进行操作了。这里主要介绍数据库最常用几种基本操作,包括创建表格、删除表格、添加记录、查询记录。为了方便,在一个程序框图中建立一个条件结构,嵌入分支选择器以实现不同的功能。
    发表于 07-01 21:24

    常用的工业控制机有几种它们各有什么用途

    调节器控制系统,2)SCC加DCC系统;(4)分布控制系统(DCS);(5)计算机集成制造系统(CIMS)2、常用的工业控制机有几种它们各有什么用途?参考:单片微型
    发表于 09-10 08:03

    电机具有哪几种控制方法它们之间的区别是什么?

    电机具有哪几种控制方法它们之间的区别是什么?
    发表于 10-13 08:07

    记录几种最常见、最基础的通信方法

    去处理,本文将记录几种最常见、最基础的通信方法。数据类型和编码格式数据类型通信前,我们得先对各个数据类型有基础的了解。其中单片机常见的无非是u8/u16/int/float/char/str。通信
    发表于 01-05 06:19

    总结比较几种常用的数字滤波技术

    滤波是信号分析与处理过程中的一个非常重要的环节,滤波的效果的好坏可以直接影响后续一系列的对信号的处理。滤波可以分为硬件滤波和数字滤波。后者由于稳定性好、灵活性高、成本低的优势,在一些含有微机的控制系统中获得了极为广泛的应用。本文主要总结比较
    发表于 01-11 07:58

    基于双语LDA的跨语言文本相似计算方法

    基于双语主题模型思想分析双语文本相似性,提出基于双语LDA跨语言文本相似计算方法。先利用双语平行语料集训练双语LDA模型,再利用该模型预测新语料集主题分布,将新语料集的双语文档映射到同一个主题向量
    发表于 11-21 14:41 1次下载
    基于双语LDA的跨语言<b class='flag-5'>文本相似</b>度<b class='flag-5'>计算方法</b>

    基于R-Grams文本相似计算方法文本聚类方法

    针对传统文本聚类中存在着聚类准确率和召回率难以平衡等问题,提出了一种基于R-Grams文本相似计算方法文本聚类方法。该
    发表于 12-29 17:09 0次下载

    基于划分思想的文件结构化相似比较方法

    积法进行改进,通过改进方法将函数内的基本块进行分类,再结合基本块签名与属性的权重求得基本块间的相似率,从而计算出最终的函数相似率及文件相似
    发表于 01-02 14:04 0次下载
    基于划分思想的文件结构化<b class='flag-5'>相似</b>性<b class='flag-5'>比较</b><b class='flag-5'>方法</b>

    思必驰在中文文本相似计算方向上取得阶段性成果

      文本相似计算旨在识别两段文本在语义上是否相似,是自然语言处理领域的一个重要研究方向,其在智能问答、信息检索等领域都发挥重要作用,具有很高的商业价值。 近期,思必驰知识服务团队在中
    的头像 发表于 01-14 11:29 1880次阅读

    知乎搜索中文本相关性和知识蒸馏的工作实践

    导读:大家好,我是申站,知乎搜索团队的算法工程师。今天给大家分享下知乎搜索中文本相关性和知识蒸馏的工作实践,主要内容包括: 知乎搜索文本相关性的演进 BERT在知乎搜索的应用和问题 知识蒸馏及常见
    的头像 发表于 01-18 17:20 2523次阅读
    知乎搜索中<b class='flag-5'>文本相</b>关性和知识蒸馏的工作实践

    快速了解文本语义相似度领域的研究脉络和进展

    文本表示:当数据被预处理完成后,就可以送入模型了。在文本相似度任务中,需要有一个模块用于对文本的向量化表示,从而为下一步相似比较做准备。这
    的头像 发表于 08-16 10:04 646次阅读

    最常用的可充电电池以及它们之间的区别

    随着技术的发展,可充电电池已经无处不在,这些类型的电池变得越来越强大和紧凑。本文重点介绍市场上最常用的可充电电池以及它们之间的区别。我们不会更深入地研究它们的化学成分或种类,而是
    的头像 发表于 06-18 15:12 1189次阅读

    Python比较两个时间序列在图形上是否相似

    和谷值比较:通过比较两个时间序列中的峰值和谷值来进行比较。可以比较它们的幅度和位置。 相关性分析:计算
    的头像 发表于 10-16 11:33 259次阅读