1
我用一个word2vec算法的spark来计算文本的文本向量。word2vec的余弦相似度大于1
然后,我使用模型对象的findSynonyms
函数来获取几个单词的同义词。
我看到这样的事情:
w2vmodel.findSynonyms('science',4).show(5)
+------------+------------------+
| word| similarity|
+------------+------------------+
| physics| 1.714908638833209|
| fiction|1.5189824643358183|
|neuroscience|1.4968051528391833|
| psychology| 1.458865636374223|
+------------+------------------+
我不明白为什么余弦相似度被计算为大于1的余弦相似度应该在0到1或最大-1和1之间(以负角度)。
为什么它在这里超过1?这里有什么问题?
谢谢。但问题很快。如果我对矢量进行归一化,然后取余弦相似性,那么它就类似于仅使用点积。如果我没有进行归一化,然后采用余弦相似性,那么在余弦相似性的公式中,我们将点积乘以每个向量的范数。所以在计算余弦相似性时会发生标准化。所以我不确定为什么会特别要求对其进行标准化。 这将是相同的公式,最后计算应该是相同的 – Baktaawar
谢谢我知道标准化部分。但我的问题为什么会改变余弦相似性。如果你正常化或者没有 – Baktaawar
你完全正确,公式保持不变。那么我相信你应该检查你如何计算余弦相似度!如果您正在使用任何库或包,则应确保按照您的预期计算相似度。除此之外,我认为你的理解没有任何问题。 –