大家好,欢迎来到IT知识分享网。
定义
余弦相似度(Cosine Similarity)是n维空间中两个n维向量之间角度的余弦。它等于两个向量的点积(向量积)除以两个向量长度(或大小)的乘积。
公式
S i m i l a r i t y ( A , B ) = A ⋅ B ∣ ∣ A ∣ ∣ × ∣ ∣ B ∣ ∣ = ∑ i = 1 n ( A i × B i ) ∑ i = 1 n A i 2 × ∑ i = 1 n B i 2 Similarity(A,B)= \frac{A·B}{||A|| \times ||B||}= \frac{\displaystyle \sum^{n}_{i=1}(A_i \times B_i)}{\sqrt[]{\displaystyle \sum^{n}_{i=1}A^2_i} \times \sqrt[]{\displaystyle \sum^{n}_{i=1}B^2_i}} Similarity(A,B)=∣∣A∣∣×∣∣B∣∣A⋅B=i=1∑nAi2×i=1∑nBi2i=1∑n(Ai×Bi)
值的范围为[-1,1],-1为完全不相似,1为完全相似。
例子
句子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, 0, …])出发,指向不同的方向。
两条线段之间形成一个夹角,
- 如果夹角为0度,意味着方向相同、线段重合,这是表示两个向量代表的文本完全相等;
- 如果夹角为90度,意味着形成直角,方向完全不相似;
- 如果夹角为180度,意味着方向正好相反。
因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。
计算结果中夹角的余弦值为0.7071非常接近于1,所以,上面的句子A和句子B是基本相似的。
参考:余弦相似度(Cosine Similarity)
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118094.html