余弦相似度應該如何計算?

時間 2021-05-11 21:13:44

1樓:komen

余弦值相似度演算法是個什麼演算法?

余弦距離,也稱為余弦相似度,是用向量空間中兩個向量夾角的余弦值作為衡量兩個個體間差異的大小的度量。

余弦值越接近1,也就是兩個向量越相似,這就叫"余弦相似性",余弦值越接近0,也就是兩個向量越不相似,也就是這兩個字串越不相似。

是不是更加雲裡霧裡了?沒關係,我數學這麼差的人都能理解,相信你通過下面的例子也能理解的。

舉乙個例子來說明,用上述理論計算文字的相似性。為了簡單起見,先從句子著手。

句子A:這只皮靴號碼大了。那只號碼合適。

句子B:這只皮靴號碼不小,那只更合適。

怎樣計算上面兩句話的相似程度?

基本思路是:如果這兩句話的用詞越相似,它們的內容就應該越相似。因此,可以從詞頻入手,計算它們的相似程度。

第一步,分詞。

句子A:這只/皮靴/號碼/大了。那只/號碼/合適。

句子B:這只/皮靴/號碼/不/小,那只/更/合適。

第二步,計算詞頻。(也就是每個詞語出現的頻率)

句子A:這只1,皮靴1,號碼2,大了1。那只1,合適1,不0,小0,更0

句子B:這只1,皮靴1,號碼1,大了0。那只1,合適1,不1,小1,更1

第三步,寫出詞頻向量。

句子A:(1,1,2,1,1,1,0,0,0)

句子B:(1,1,1,0,1,1,1,1,1)

第四步:運用上面的公式:計算如下:

計算結果中夾角的余弦值為0.81非常接近於1,所以,上面的句子A和句子B是基本相似的。

上面這個例子是網上最常用的例子,理解了這個演算法,這個演算法就能包容所有,有沒有優缺點呢?

句子A:女

句子B: 女性

按照感官看,他們是乙個概念,應該是100%匹配。按照理性,分字詞的邏輯理解,應該是50%的匹配,我們用余弦值計算,得出結果70.7%,很相似但是達不到100%相似,因為電腦無法去理解語意。

這裡扯個題外話,發現英文中有很多輔助工作的外掛程式和軟體,如書寫郵件,幫助提高辦公用語的書寫規範等等,但是搜尋半天,沒有發現任何一款類似的中文工具,難道是因為中文的語義太複雜。

如何設定相似度大於等於80%,這條就不匹配了。

再看乙個例子:

句子A:太好了。

句子B:太好了太好了太好了。

如果按照余弦值計算,相似度才5%左右,完全不達標。

如果出現語義一樣的一句話,但是重疊數很多,可能計算會不達標,優點對單字分組的相似度匹配很高,忽略字的順序影響。

經過這個演算法的學習,更加認識到人類的思維真是乙個複雜的東西,沒有乙個演算法就能解決所有問題,如果AI成功,需要乙個很大很大的架構模型,還是任重道遠的。

2樓:

a,b,c,d,e共5個物品,集合A對a,b,d有行為,那麼A的偏好向量可記為[1,1,0,1,0],C可記為[0,1,1,0,0],現在計算兩個向量的余弦值就可以了。

Spark 千萬級使用者相似度計算?

nns。另外,實際生產還可以結合業務特點優化,比如說先對使用者按基本屬性 性別 年齡這些 進行分群,然後每個分群再單獨兩兩計算相似度,可以降低計算量,達到效能和效果的平衡。 tozh 兩兩相似度是肯定不可能的,一般是top N。這個topN怎麼計算呢,首先你要把相似度為0的都排除掉,具體方法可以參考...

單bert可以用來做文字相似度計算任務嗎?

霍華德 推薦我們中心的乙個工作吧,從中可以解答你的一些問題https zhuanlan p 148729018 TniL 不僅可以使用單BERT,而且BERT中預設匹配任務的使用方法就是將兩段文字用 的形式連線,然後使用 對應的表示分類 回歸。當然兩種模式各有優劣 1,使用文字拼接過單BERT的方法...

比企谷八幡與梓川咲太的相似度如何?

已登出 可以說是兩種不同的人乙個是大老師乙個是青春男 大老師自認為自己是游離於人際關係之外只要不接觸就不會受傷這是他的經驗既然開局不及格索性就把自己貶為0分我先瘋狂自戳十刀八刀你還能傷得了我麼?因為什麼?因為我懶啊要安穩住現在的局面我算下要花多少精力算了還是選擇自爆吧省點力氣看吧最終沒有任何人受傷的...