余弦距離是大多數自然語言向量表示的相似度計算方法。(計算函式輸入為詞頻向量)
import math
'''1.余弦相似度的值越接近於 1,兩個向量之間的夾角就越小。
對於余弦相似度接近於 1 的 nlp 文件向量,這些文件應該使用了比例相近的相似詞。
因此,那些表示向量彼此接近的文件很可能涉及的是同一主題。
2.余弦相似度為 0 表示兩個向量之間沒有共享任何分量。它們是正交的,在所有維度上都互相
垂直。對於 nlp 中的詞頻向量,只有當兩篇文件沒有公共詞時才會出現這種情況。因為這些文
檔使用完全不同的詞,所以它們一定在討論完全不同的東西。當然,這並不意味著它們一定就有
不同的含義或主題,而只表明它們使用完全不同的詞。
3.余弦相似度為−1 表示兩個向量是反相似(anti-similar)的,即完全相反,也就是兩個向量指
向完全相反的方向。對於簡單的詞頻向量,甚至是歸一化的詞頻(詞項頻率)向量,
都不可能會發生這種情況。因為詞的數目永遠不會是負數,所以詞頻(詞項頻率)向量
總是處於向量空間的同一象限中。詞項頻率向量的分量不可能與另乙個詞項頻率向量分量的符號相反,這是因為頻率不可能是負數。
'''# 輸入為詞頻向量
defcosine_sim
(vec1, vec2)
:""" let's convert our dictionaries to lists for easier matching."""
vec1 =
[val for val in vec1.values()]
vec2 =
[val for val in vec2.values()]
dot_prod =
0for i, v in
enumerate
(vec1)
: dot_prod += v * vec2[i]
mag_1 = math.sqrt(
sum(
[x**
2for x in vec1]))
mag_2 = math.sqrt(
sum(
[x**
2for x in vec2]))
return dot_prod /
(mag_1 * mag_2)
NLP自然語言處理中句子相似度計算
在做自然語言處理的過程中,現在智慧型對話比較火,例如智慧型客服,智慧型家電,智慧型音箱等,我們需要獲取使用者說話的意圖,方便做出正確的回答,這裡面就涉及到句子相似度計算的問題,那麼本節就來了解一下怎麼樣來用 python 實現句子相似度的計算。編輯距離,英文叫做 edit distance,又稱 l...
余弦相似度計算
余弦相似度計算 余弦相似度用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小。余弦值越接近1,就表明夾角越接近0度,也就是兩個向量越相似,這就叫 余弦相似性 我們知道,對於兩個向量,如果他們之間的夾角越小,那麼我們認為這兩個向量是越相似的。余弦相似性就是利用了這個理論思想。它通過計算兩個向...
相似度計算之余弦相似度
一 定義及概念 余弦取值範圍為 1,1 求得兩個向量的夾角,並得出夾角對應的余弦值,此余弦值就可以用來表徵這兩個向量的相似性。夾角越小,趨近於0度,余弦值越接近於1,它們的方向更加吻合,則越相似。當兩個向量的方向完全相反夾角余弦取最小值 1。當余弦值為0時,兩向量正交,夾角為90度。因此可以看出,余...