数据分析师

手机号

验证码

30天自动登录

数据分析师

NLP中的相似性指标

来源:CPDA数据分析师网 / 时间:2021-05-11

著名的语言算术例子表明, 皇后=国王-男人+女人
有一个特别著名的例子,我们取 King的向量,减去Man的向量 ,再加上Woman的向量 。接近结果向量的匹配向量是 Queen,我们也可以将相同的逻辑应用于较长的序列,例如句子或段落-并且我们会发现类似的含义与这些向量之间的接近度/方向相对应,因此,相似性很重要-我们将在此处介绍的是用于计算相似性的三个的指标。

欧氏距离
欧式距离(通常称为L2范数)是直观的指标。让我们定义三个向量:

三个向量的例子

仅查看这些向量,我们就可以自信地说 a 和 b 彼此更接近-当在图表上可视化它们时,我们会更加清楚地看到这一点:

向量 a 和 b 接近原点,向量 c 更远

显然,  a 和 b 靠得更近-我们使用欧几里得距离计算得出:


欧氏距离公式

将此公式应用于我们的两个向量 a 和 b, 我们这样做:

向量a 和 b之间的欧式距离的计算 

我们得到的距离为 0.014,对d(a,c)执行相同的计算  返回 1.145,而 d(b,c) 返回 1.136。显然,  a 和 b 在欧几里得空间中更接近。

点积
 
欧几里得距离的一个缺点是计算中缺少方向性-它仅基于幅度。这是我们可以使用其他两个指标的地方。首先是点积。

点积考虑方向(方向),并且也随矢量大小缩放。

我们关心方向,因为相似的含义(我们经常会发现)可以通过向量的方向来表示-不一定是向量的大小。

例如,我们可能发现向量的大小与其在数据集中表示的单词的频率相关。现在,单词 hi的 含义与hello相同 ,并且如果我们的训练数据包含单词hi的 1000次和 hello 两次,则此词可能无法表示 。

因此,向量的方向通常被视为与距离同样重要(如果不是那么重要)。

点积使用以下公式计算:

点积公式

点积考虑矢量之间的角度,其中角度为〜0,公式的 cosθ 分量等于〜1。如果角度更接近180度(正交/垂直),则 cosθ分量等于〜0 。

因此,  当两个矢量之间的角度较小时,cosθ分量会增加结果。因此,较高的点积与较高的方向相关。

同样,让我们将此公式应用于两个向量 a 和 b:

向量a 和 b的点积的计算 

显然,点积的计算非常简单(三个中简单的一个),这在计算时间方面给了我们很多好处。

但是,有一个缺点。它没有被归一化-意味着较大的向量将趋向于获得更高的点积,尽管相似度较低。

例如,如果我们计算 a·a  ,我们期望得到比a·c 高的分数 (a 与a完全匹配 )。不幸的是,但这不是它的工作原理。

当向量的大小不同时,点积就不太好了。

因此,实际上,点积用于识别两个向量的一般方向-因为:

两个向量,在一个类似的方向点返回一个 积极的 点积。
两个垂直向量返回零的点积 。
指向相反方向的向量将返回 负 点积。
 
余弦相似度
 
余弦相似度考虑矢量方向,与矢量幅度无关。

余弦相似度公式

在此公式中,我们首先要意识到的是,分子实际上是点积,它同时考虑了 幅度 和 方向。

在分母中,我们有奇怪的双竖线-这些表示 “的长度”。因此,我们有 u 的长度乘以v的长度 。长度当然考虑 幅度。

当我们采用同时考虑 幅度 和 方向 的函数并将其除以仅考虑幅度的函数时,  这两个 幅度会 抵消,从而给我们留下一个考虑方向而 与幅度无关的函数 。

我们可以将余弦相似度视为 归一化的 点积!它显然有效。a 和 b的余弦相似度  接近 1  ():

向量a 和 b的余弦相似度计算 

并且使用sklearn 余弦相似度的 实现 再次比较 a 和 c给我们更好的结果:

余弦相似度通常可以提供比点积更好的结果。

 
这就是本文的全部内容,涵盖了三个距离/相似度度量标准—欧几里得距离,点积和余弦相似度。

有必要了解它们的工作原理以及它们的优缺点-因为它们在机器学习(尤其是NLP)中都大量使用。

您可以在此笔记本中找到每个指标的Python实现 。



返回列表