1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 余弦相似度(Cosine Similarity)

余弦相似度(Cosine Similarity)

时间:2020-02-16 13:04:47

相关推荐

余弦相似度(Cosine Similarity)

定义

余弦相似度(Cosine Similarity)是n维空间中两个n维向量之间角度的余弦。它等于两个向量的点积(向量积)除以两个向量长度(或大小)的乘积。

公式

Similarity(A,B)=A⋅B∣∣A∣∣×∣∣B∣∣=∑i=1n(Ai×Bi)∑i=1nAi2×∑i=1nBi2Similarity(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∑n​Ai2​​×i=1∑n​Bi2​​i=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度,意味着方向正好相反。

因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。

计算结果如下:

cos⁡(θ)=1×1+1×1+2×1+1×0+1×1+1×1+0×1+0×1+0×112+12+22+12+12+12+02+02+02×12+12+12+02+12+12+12+12+12=67×8=0.81\begin{aligned} \cos(\theta) &= \frac{1 \times 1 + 1 \times 1 + 2 \times 1 + 1 \times 0 +1 \times 1 + 1 \times 1 + 0 \times 1 + 0 \times 1 + 0 \times 1}{\sqrt{1^2+1^2+2^2+1^2+1^2+1^2+0^2+0^2+0^2} \times \sqrt{1^2+1^2+1^2+0^2+1^2+1^2+1^2+1^2+1^2}} \\ &\\ &= \frac{6}{\sqrt{7}\times\sqrt{8}} \\ &\\ &= 0.81 \end{aligned}cos(θ)​=12+12+22+12+12+12+02+02+02​×12+12+12+02+12+12+12+12+12​1×1+1×1+2×1+1×0+1×1+1×1+0×1+0×1+0×1​=7​×8​6​=0.81​

计算结果中夹角的余弦值为0.81非常接近于1,所以,上面的句子A和句子B是基本相似的。

参考:/zz_dd_yy/article/details/51926305

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。