博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
余弦相似度计算
阅读量:6589 次
发布时间:2019-06-24

本文共 981 字,大约阅读时间需要 3 分钟。

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近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(112111000)

句子B(111011111)

到这里,问题就变成了如何计算这两个向量的相似程度。我们可以把它们想象成空间中的两条线段,都是从原点([0, 0, ...])出发,指向不同的方向。两条线段之间形成一个夹角,如果夹角为0度,意味着方向相同、线段重合,这是表示两个向量代表的文本完全相等;如果夹角为90度,意味着形成直角,方向完全不相似;如果夹角为180度,意味着方向正好相反。因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。

使用上面的公式(4)

 

 

计算两个句子向量

句子A(112111000)

和句子B(111011111)的向量余弦值来确定两个句子的相似度。

计算过程如下:

 

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

转载于:https://my.oschina.net/tingzi/blog/3021854

你可能感兴趣的文章
MySQL忘记root密码--不重启mysqd重置root密码
查看>>
Linux 目录简要结构认识
查看>>
Struts 2 的学习笔记(二) struts的配置流程和strut是2的工作原理
查看>>
HP服务器和H3C交换机端口绑定
查看>>
留存光明延续大爱 80后父母捐病儿角膜感动冰城
查看>>
我的友情链接
查看>>
呼叫中心IVR系统的介绍
查看>>
详解Python正则表达式之: (?P<name>…) named group 带命名的组
查看>>
Python的条件判断与循环样例
查看>>
C++用new来创建对象和非new来创建对象的区别
查看>>
mybaties中通用mapper的基本使用
查看>>
RDMA参考
查看>>
几维安全:千锤百炼,锻造移动游戏安全防护黄金铠甲
查看>>
把巧克力球送上天,玛氏用Uni Marketing 打造网红零食
查看>>
JVM 规范小结
查看>>
gatling系列教程(翻译)-第三节(快速开始)
查看>>
新一代视频AI服务 —— 阿里云智能视觉重磅发布
查看>>
阿里小二的日常工作要被TA们“接管”了!
查看>>
数据结构与算法14-栈和队列练习题
查看>>
JEESZ-SSO解决方案
查看>>