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
你完全正確,公式保持不變。那麼我相信你應該檢查你如何計算餘弦相似度!如果您正在使用任何庫或包,則應確保按照您的預期計算相似度。除此之外,我認爲你的理解沒有任何問題。 –