有人可以告诉我如何以图形方式计算简单的余弦相似度

Posted

技术标签:

【中文标题】有人可以告诉我如何以图形方式计算简单的余弦相似度【英文标题】:can someone show me how to work out simple cosine similarity graphically 【发布时间】:2016-09-14 00:08:47 【问题描述】:

请问有人可以告诉我如何计算余弦相似度吗? 我知道有人在similar question link 之前回答过类似的问题,但我不明白最终结果是如何达到的。

【问题讨论】:

使用等式。 在哪里你失败了? 我不明白等式是我失败的地方 那你需要一本线性代数书去学习!我们不知道从哪里开始。 在问题上发布的类似问题链接上,最佳答案显示余弦相似度为 0.822。我只想知道他是如何从上一步得到答案的 他计算了方程,这是简单的线性代数。 【参考方案1】:

因为余弦相似度方程是

在similar question link 中,所选答案计算了两个向量,代表两个句子的字数。

A = (2,1,0,2,0,1,1,1)
B = (2,1,1,1,1,0,1,1)

所以我们可以计算A和B的点积是

dotProduct(A,B) = 2x2 + 1x1 + 0x1 + 2x1 + 0x1 + 1x0 + 1x1 + 1x1 = 9

A和B的大小分别是

magnitude(A) = sqrt(2x2 + 1x1 + 0x0 + 2x2 + 0x0 + 1x1 + 1x1 + 1x1) = 3.464
magnitude(B) = sqrt(2x2 + 1x1 + 1x1 + 1x1 + 1x1 + 0x0 + 1x1 + 1x1) = 3.162

然后我们可以应用这个等式:

similarity = cos(theta) = dotProduct(A,B) / (magnitude(A) x magnitude(B))
                        = 9 / (3.464 x 3.162)
                        = 0.822

其中 theta 是向量 A 和向量 B 之间的角度

【讨论】:

以上是关于有人可以告诉我如何以图形方式计算简单的余弦相似度的主要内容,如果未能解决你的问题,请参考以下文章

Spark笔记(1) :余弦相似度计算

PySpark中如何计算两个向量的余弦相似度?

如何在 Python 中快速计算大量向量的余弦相似度?

如何有效地计算数百万个字符串之间的余弦相似度

如何使用已计算的 TFIDF 分数计算余弦相似度

我们如何计算由它们的评分表示的两个项目的调整余弦相似度?