前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >句子相似度的计算 | NLP基础

句子相似度的计算 | NLP基础

作者头像
叶锦鲤
发布于 2019-12-26 06:35:48
发布于 2019-12-26 06:35:48
3.4K0
举报
文章被收录于专栏:悦思悦读悦思悦读
NLP基础系列

1. 浅论语言与认知的关系

2. 为什么要处理自然语言

3. 计算机是如何理解自然语言的

4. 文本标注十要点

5. 把自然语言文本转换为向量



句子相似度的计算

自然语言处理的子任务

自然语言处理的终极目标是让计算机理解人类所使用的语言。但是由于人类语言的多样性,语义的多样性等原因使得这一目标复杂度极高,目前还无法直接建模和解决。

为了解决这个问题,科学家把自然语言处理分成了很多子问题进行处理,相似度计算这些子任务中的一种。

文本的相似度又分为词级别的相似度,句子级别相似度,段落级别的相似度和文章级别的相似度。

词级别的相似度计算相对容易,从几十年前人们建立的WordNet字典到近几年十分火热的Word2Vec都是用来解决词与词之间相似度的问题。

尤其是随着各种词向量的出现,词级别的相似度问题已经得到了较好的解决。

基于词向量计算句子的相似度

不过句子或更长的文本由于复杂性更高,包含的信息更多,其相似度问题还没有一个非常完善的解决方案。

这里就先介绍几种利用词向量信息,计算句子level相似度方法:

  1. 直接使用词向量平均值表示短语 前面我们说过利用词向量对词和词之间的相似度进行计算已经比较完善,准确率也很高。那么如果对一句话中的每个词的词向量求平均值,那么这个向量也应该能表示句子的意思。出于这个思路就有了这一种句子相似度比较方法。这种方法实现起来非常简单,但是也忽略了很多句子原有的重要信息,所以一般会被用做Baseline。
  2. Word Mover’s Distance 另一种计算句子之间相似度的方法叫做Word Mover‘ Distance 。该方法的思路是记录一句话中每个词与另一句话中距离最短的词,并将该距离作为两句话之间相似度的度量(词与词之间的距离仍使用词向量计算),下面这幅图比较好的解释了这种方法的思路。
  1. Smooth Inverse Frequency 前面我们说过,方法1中会忽略句子中很多的信息,这其中就包括句子中每个词的重要性信息。我们知道the, and, but等词对句子整体的影响是比较小的(从语义上来讲,主语谓语比介词连词有更多的语义信息),而Smooth Inverse Frequency就是利用了这些信息来为句子中的词语设置不同的权重。他的原理类似于TF-IDF。

直接对句子编码

前面几种方法都没有考虑中句子中的词序信息,但是我们知道词的顺序对句意是有很大影响的。

下面介绍的几种不使用词向量的相似度对比方法。这些方法的思路基本上都是直接对句子进行编码(和词向量类似的句向量)——直接把句子编码成向量。

在这个过程中包括词序信息在内的各种句子信息都会被考虑进来:

  1. InferSent 该算法是一种句子level的embedding算法,由Facebook研究院发明,它是一种基于双向LSTM的网络,使用SNLI数据集通过有监督学习进行训练。
  2. GSE,Google Sentence Encoder Google 提出的一种句子embedding算法,同时使用了有监督学习(SNLI语料)和无监督学习(类似Word2Vec的方法)对模型进行训练,效果略微好于InferSent。

使用孪生网络计算句子相似度

除了上面介绍的之外,孪生网络也是相似度对比不可不提的一个概念,它很简单,但是很有效果。孪生网络结构如下图所示,使用两个权值共享的网络(两个网络相同)对一对输入进行编码,然后通过计算两个输入编码结果的相似度来判断输入的相似度。这种网络被广泛应用于各种相似度计算任务重中。在进行句子相似度计算可以使用上面介绍的InferSent或者Google sentence encoder作为编码网络来进行相似度的预测。

性能对比

总体来说,基准方法(直接使用词向量平均值表示短语)虽然简单,但是效果不错。 综合来看,google的GSE效果最好,不过其与其他模型相比优势并不十分明显。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-12-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 智汇AI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
python实现之初等函数一
初等函数是由基本初等函数经过有限次的四则运算和复合运算所得到的函数。基本初等函数和初等函数在其定义区间内均为连续函数。高等数学将基本初等函数归为五类:幂函数、指数函数、对数函数、三角函数、反三角函数。
python与大数据分析
2022/03/11
3370
python实现之初等函数一
python实现之激活函数
激活函数(Activation Function),就是在人工神经网络的神经元上运行的函数,负责将神经元的输入映射到输出端。
python与大数据分析
2022/03/11
4360
python实现之激活函数
python实现之导数
导数(Derivative),也叫导函数值。又名微商,是微积分中的重要基础概念。当函数y=f(x)的自变量x在一点x0上产生一个增量Δx时,函数输出值的增量Δy与自变量增量Δx的比值在Δx趋于0时的极限a如果存在,a即为在x0处的导数,记作f'(x0)或df(x0)/dx。
python与大数据分析
2022/03/11
5470
python实现之导数
python学习之matplot
import matplotlib.pyplot as plt import numpy as np import pandas as pd from mpl_toolkits.mplot3d import Axes3D import matplotlib.gridspec as gridspec from matplotlib import animation
py3study
2020/01/08
7960
python实现之初等函数二——反函数
一般来说,设函数y=f(x)(x∈A)的值域是C,若找得到一个函数g(y)在每一处g(y)都等于x,这样的函数x= g(y)(y∈C)叫做函数y=f(x)(x∈A)的反函数,记作x=f-1(y) 。反函数x=f -1(y)的定义域、值域分别是函数y=f(x)的值域、定义域。最具有代表性的反函数就是对数函数与指数函数。
python与大数据分析
2022/03/11
5980
python实现之初等函数二——反函数
python实现之初等函数三——三角函数
三角函数在python和numpy中实现的不够全面,主要包括cos, cosh, sin sinh, tan, tanh三角函数和arccos, arccosh, arcsin, arcsinh, arctan, arctanh反三角函数,cot,sec,csc,arccot,arcsec,arccsc均为提供,不过可以通过其他函数进行组合或变形得以实现。
python与大数据分析
2022/03/11
1.9K0
python实现之初等函数三——三角函数
通俗易懂讲解梯度下降法!
知乎 | https://zhuanlan.zhihu.com/p/335191534
Datawhale
2022/01/05
1.6K0
通俗易懂讲解梯度下降法!
通俗易懂讲解梯度下降法!
前言:本篇文章用讲解+实战的形式,浅显易懂讲解“梯度下降”,拥有高中数学知识即可看懂。
算法进阶
2022/06/02
3090
通俗易懂讲解梯度下降法!
五万字总结,深度学习基础。「建议收藏」
人工神经网络(Artificial Neural Networks,简写为ANNs)是一种模仿动物神经网络行为特征,进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的,并具有自学习和自适应的能力。神经网络类型众多,其中最为重要的是多层感知机。为了详细地描述神经网络,我们先从最简单的神经网络说起。
全栈程序员站长
2022/08/31
1K0
五万字总结,深度学习基础。「建议收藏」
Python数据可视化-第6章-坐标轴的定制
matplotlib支持向画布的任意位置添加自定义大小的绘图区域,同时显示坐标轴。通过pyplot模块的axes()函数创建一个Axes类的对象,并将Axes类的对象添加到当前画布中。
用户2225445
2025/04/04
1770
Python数据可视化-第6章-坐标轴的定制
Python—线性回归
折腾了许久,觉得还是要记录点什么,不管是给有兴趣的小伙伴做参考,还是加深自己的学习理解,都是有一定裨益的。
Ed_Frey
2020/11/10
6880
Python—线性回归
python实现之一阶二阶导数
f'(x)=(x^3)‘+(4cosx)‘-(sin(π/2))‘=3x^2-4sinx-0
python与大数据分析
2022/03/11
5870
python实现之一阶二阶导数
梯度下降法Python实现
[梯度下降算法] 几点说明 给定数据集即样本点 求出拟合的直线,给定模型f(x)=kx+b,k,b为要求的参数 定义损失函数(Loss function),回归问题里常用的是平方损失函数 初始化模型f(x)=x+1,即k,b都为1 步长即学习率alpha 代码如下: import numpy as np import matplotlib.pyplot as plt # Size of the points dataset. m = 20 # Points x-coordinate and dummy
_咯噔_
2020/04/12
9810
python实现之极限
“极限”是数学中的分支——微积分的基础概念,广义的“极限”是指“无限靠近而永远不能到达”的意思。数学中的“极限”指:某一个函数中的某一个变量,此变量在变大(或者变小)的永远变化的过程中,逐渐向某一个确定的数值A不断地逼近而“永远不能够重合到A”(“永远不能够等于A,但是取等于A‘已经足够取得高精度计算结果)的过程中,此变量的变化,被人为规定为“永远靠近而不停止”、其有一个“不断地极为靠近A点的趋势”。极限是一种“变化状态”的描述。此变量永远趋近的值A叫做“极限值”(当然也可以用其他符号表示)。
python与大数据分析
2022/03/11
4860
python实现之极限
Python进阶之Matplotlib入门(四)
Matplotlib是Python的画图领域使用最广泛的绘图库,它能让使用者很轻松地将数据图形化以及利用它可以画出许多高质量的图像,是用Python画图的必备技能。对于这个教程,大家最好亲自码一遍代码,这样可以更有收获。
HuangWeiAI
2019/10/31
5440
matplotlib学习之基本使用
1.figure学习2.设置坐标轴3.Legend 图例4.Annotation 标注5.tick能见度
公众号guangcity
2019/09/20
7960
matplotlib学习之基本使用
深度学习4大激活函数
如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出实际上都是上层输入的线性函数。
皮大大
2023/08/25
4060
深度学习4大激活函数
快速上手matplotlib画图
本文是我在学习莫烦老师视频教程时候整理的笔记。Matplotlib是一个python的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。通过Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,散点图等。
触摸壹缕阳光
2020/04/26
1.5K0
用Python随手画个图
最近遇到个任务需要画一些坐标图,我就在想,用了这么长时间的 Python 了,能不能用 Python 画图呢?学习一门语言不能只为了学习语言而学习,要做到学以致用。Google 了一下,果然有新的发现,Python 中 matplotlib 库是专门用来画图的,操作了一番后,发现用 Python 画图真的爽,人生苦短,快用 Python!下面简单的介绍一下 matplotlib 库的用法,起到一个抛转引玉的作用,更多好玩的事情等待着咱们一起来探索。
SuperFeng
2019/09/26
2K0
用Python随手画个图
matplotlib 设置移动边框
绘制余弦曲线的代码在 Pycharm 中执行调用,执行的结果会弹出一个独立的桌面端图形界面。这里以二维图形为例,在 matplotlib 中的图形是由几个部分构成,如果想要更好的理解 matplotlib 模块,清楚这几个部分尤为的重要。由于本文主要介绍边框,因此只介绍与之相关的部分。
触摸壹缕阳光
2020/08/13
2.3K0
matplotlib 设置移动边框
相关推荐
python实现之初等函数一
更多 >
LV.1
中国移动通信集团海南有限公司技术专家
目录
  • 使用孪生网络计算句子相似度
  • 性能对比
  • 总体来说,基准方法(直接使用词向量平均值表示短语)虽然简单,但是效果不错。 综合来看,google的GSE效果最好,不过其与其他模型相比优势并不十分明显。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档