【问题标题】:Cosine similarities and totally different results using same source余弦相似性和使用相同来源的完全不同的结果
【发布时间】:2019-07-31 00:32:04
【问题描述】:

我正在学习词嵌入和余弦相似度。我的数据由两组相同的单词组成,但有两种不同的语言。

我做了两个测试:

  1. 我使用词向量的平均值来测量余弦相似度(我认为应该改为软余弦相似度)
  2. 我使用词向量测量了余弦相似度

我应该期望获得完全相同的结果吗?我注意到有时我有两个相反的结果。由于我是新手,我试图弄清楚我是否做错了什么,或者背后是否有解释。根据我一直在阅读的内容,软余弦相似度应该比通常的余弦相似度更准确。

现在,是时候向您展示一些数据了。不幸的是,我无法发布我的部分数据(单词本身),但我会尽力为您提供我可以提供给您的最大信息。

之前的一些其他细节:

  • 我正在使用 FastText 创建嵌入,skipgram 模型 默认参数。
  • 对于软余弦相似度,我使用Scipy spatial distance cosine。按照一些人的建议,要衡量余弦相似度,我似乎应该从公式中减去 1,例如:

(1-distance.cosine(data['LANG1_AVG'].iloc[i],data['LANG2_AVG'].iloc[i]))

  • 对于通常的余弦相似度,我使用来自FastText MultilingualFast Vector cosine similarity,以这种方式定义:

    @classmethod def cosine_similarity(cls, vec_a, vec_b): """Compute cosine similarity between vec_a and vec_b""" return np.dot(vec_a, vec_b) / \ (np.linalg.norm(vec_a) * np.linalg.norm(vec_b))

正如您从此处的图像中看到的那样,对于某些单词,我使用这两种方法获得了相同或非常相似的结果。对于其他人,我得到了两个完全不同的结果。我该如何解释?

【问题讨论】:

  • 生成一个最小的例子。如果您无法显示您正在使用的单词,请尝试使用其他可以显示的单词。
  • 平均值的公式是什么?我从来没有听说过以这种方式计算向量相似度,这似乎很奇怪,而且你想保留一个向量与另一个向量相比的位置信息,如果你计算平均值,你会丢失这些信息......而且,你为什么期望结果是否相似?
  • @roadrunner66 我加了一个例子
  • @qmeeus 我不确定它们是否应该相似。这是我第一次这样做,所以我对此有点困惑:我问了周围,他们说这可能只是矢量尺寸的问题。平均值的公式是对同一单词的值的简单统计平均值。

标签: python machine-learning cosine-similarity word-embedding machine-translation


【解决方案1】:

据我了解,两个向量 x 和 y 之间的软相似度由 (avg(x) * avg(y)) / (abs(avg(x)) * abs(avg(y))) = sign(avg(x) * avg(y)),它是 1 或 -1,具体取决于平均值是否具有相同的符号。这可能不是很有帮助。

余弦相似度用 (x * y) / (||x|| * ||y||) 计算。 2个指向相同方向的向量相似度为1 (x * x = ||x||^2),2个向量指向相反方向,相似度为-1 (x * -x = -||x ||^2) 和 2 个垂直向量的相似度为 0 ((1,0)*(0,1)=0)。如果向量之间的角度不等于 0、90、180 或 270 之一,则相似度得分介于(但不等于)-1 和 1 之间。

底线:忘记平均值,只使用余弦相似度。请注意,余弦相似度比较的是方向而不是向量的长度。

PS:“able”在法语中的翻译是“capable”而不是“able”;)

【讨论】:

    【解决方案2】:

    经过一些额外的研究,我发现了一篇 2014 年的论文 (Soft Similarity and Soft Cosine Measure: Similarity of Features in Vector Space Model),它解释了何时以及如何使用特征的平均值,它还解释了究竟什么是软余弦测量:

    我们的想法更笼统:我们建议修改 向量空间模型中相似度的计算方式 考虑到特征的相似性。如果我们申请 这个想法到余弦测量,然后是“软余弦 措施”被引入,而不是传统的“硬 cosine”,它忽略了特征的相似性。注意 当我们考虑每对特征的相似性时,它 相当于在 VSM 中引入新功能。 本质上,我们有一个配对之间的相似性矩阵 特征的数量,所有这些特征都代表了 VSM 中的新维度。

    【讨论】:

      猜你喜欢
      • 2016-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 2013-05-29
      • 1970-01-01
      • 2021-11-02
      • 2019-09-01
      相关资源
      最近更新 更多