句子相似度的计算
自然语言处理的子任务
自然语言处理的终极目标是让计算机理解人类所使用的语言。但是由于人类语言的多样性,语义的多样性等原因使得这一目标复杂度极高,目前还无法直接建模和解决。
为了解决这个问题,科学家把自然语言处理分成了很多子问题进行处理,相似度计算这些子任务中的一种。
文本的相似度又分为词级别的相似度,句子级别相似度,段落级别的相似度和文章级别的相似度。
词级别的相似度计算相对容易,从几十年前人们建立的WordNet字典到近几年十分火热的Word2Vec都是用来解决词与词之间相似度的问题。
尤其是随着各种词向量的出现,词级别的相似度问题已经得到了较好的解决。
基于词向量计算句子的相似度
不过句子或更长的文本由于复杂性更高,包含的信息更多,其相似度问题还没有一个非常完善的解决方案。
这里就先介绍几种利用词向量信息,计算句子level相似度方法:
直接对句子编码
前面几种方法都没有考虑中句子中的词序信息,但是我们知道词的顺序对句意是有很大影响的。
下面介绍的几种不使用词向量的相似度对比方法。这些方法的思路基本上都是直接对句子进行编码(和词向量类似的句向量)——直接把句子编码成向量。
在这个过程中包括词序信息在内的各种句子信息都会被考虑进来:
除了上面介绍的之外,孪生网络也是相似度对比不可不提的一个概念,它很简单,但是很有效果。孪生网络结构如下图所示,使用两个权值共享的网络(两个网络相同)对一对输入进行编码,然后通过计算两个输入编码结果的相似度来判断输入的相似度。这种网络被广泛应用于各种相似度计算任务重中。在进行句子相似度计算可以使用上面介绍的InferSent或者Google sentence encoder作为编码网络来进行相似度的预测。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有