余弦计算相似度度量【转】 此博文包含图片(2014-11-17 10:18:40)转载▼ 标签: 数学 基础 自然语言处理分类: 学习 http://blog.csdn.net/u0121606
来源:互联网 发布:vb页面跳转 编辑:程序博客网 时间:2024/06/06 05:34
余弦计算相似度度量【转】
(2014-11-17 10:18:40)数学
基础
自然语言处理
分类: 学习http://blog.csdn.net/u012160689/article/details/15341303
余弦计算相似度度量
相似度度量(Similarity),即计算个体间的相似程度,相似度度量的值越小,说明个体间相似度越小,相似度的值越大说明个体差异越大。
对于多个不同的文本或者短文本对话消息要来计算他们之间的相似度如何,一个好的做法就是将这些文本中词语,映射到向量空间,形成文本中文字和向量数据的映射关系,通过计算几个或者多个不同的向量的差异的大小,来计算文本的相似度。下面介绍一个详细成熟的向量空间余弦相似度方法计算相似度
向量空间余弦相似度(Cosine Similarity)
余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。
上图两个向量a,b的夹角很小可以说a向量和b向量有很高的的相似性,极端情况下,a和b向量完全重合。如下图:
如上图二:可以认为a和b向量是相等的,也即a,b向量代表的文本是完全相似的,或者说是相等的。如果a和b向量夹角较大,或者反方向。如下图
如上图三: 两个向量a,b的夹角很大可以说a向量和b向量有很底的的相似性,或者说a和b向量代表的文本基本不相似。那么是否可以用两个向量的夹角大小的函数值来计算个体的相似度呢?
向量空间余弦相似度理论就是基于上述来计算个体相似度的一种方法。下面做详细的推理过程分析。
想到余弦公式,最基本计算方法就是初中的最简单的计算公式,计算夹角
图(4)
的余弦定值公式为:
但是这个是只适用于直角三角形的,而在非直角三角形中,余弦定理的公式是
图(5)
三角形中边a和b的夹角 的余弦计算公式为:
公式(2)
在向量表示的三角形中,假设a向量是(x1, y1),b向量是(x2, y2),那么可以将余弦定理改写成下面的形式:
图(6)
向量a和向量b的夹角 的余弦计算如下
扩展,如果向量a和b不是二维而是n维,上述余弦的计算法仍然正确。假定a和b是两个n维向量,a是
余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,夹角等于0,即两个向量相等,这就叫"余弦相似性"。
【下面举一个例子,来说明余弦计算文本相似度】
句子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度,意味着方向正好相反。因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。
使用上面的公式(4)
计算两个句子向量
句子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是基本相似的
由此,我们就得到了文本相似度计算的处理流程是:
(2)每篇文章各取出若干个关键词,合并成一个集合,计算每篇文章对于这个集合中的词的词频
(3)生成两篇文章各自的词频向量;
(4)计算两个向量的余弦相似度,值越大就表示越相似。
- 余弦计算相似度度量【转】 此博文包含图片(2014-11-17 10:18:40)转载▼ 标签: 数学 基础 自然语言处理分类: 学习 http://blog.csdn.net/u0121606
- (转)如何创建Filter的属性页 [此博文包含图片] (2012-09-06 10:15:58) 转载 ▼ 标签: 杂谈 分类: DirectShow http://blog.csdn.net/
- 余弦计算相似度度量【转】
- 余弦计算相似度度量【转】
- 余弦计算相似度度量
- 余弦计算相似度度量
- 余弦计算相似度度量
- 余弦计算相似度度量
- 余弦计算相似度度量
- C4.5决策树 此博文包含图片(2011-10-20 23:22:19)转载▼ 标签: 分类树
- [推荐系统]余弦计算相似度度量
- 余弦计算相似度度量(优秀)
- 单端反激式变换器开关稳压电源原理图 此博文包含图片(2009-02-24 12:17:53)转载▼ 标签: 单端反激式 变换器 高频变压器 原理图 磁滞回线 磁心 杂谈分类: technical
- 修改UITableViewStyleGrouped形式的tableview的背景色 此博文包含图片(2013-09-10 11:11:57)转载▼ 分类: IOS笔记 在使用UITable
- matlab一次读取多张图片[转] 此博文包含图片 (2009-11-28 21:20:17)转载▼ 标签: 杂谈 我要一次读取E:\0.bmp到E:\500.bmp的图片怎么弄啊?用imr
- 反欺诈技术揭秘-设备指纹VS关系网络模型 此博文包含图片(2017-05-12 10:23:52)转载▼ 标签: 设备指纹 关系网络 反欺诈 神经网络模型分类: 风控 文章来源:网络(经整合梳理
- python自然语言处理-----计算文本相似度
- 硬盘MBR详细介绍[转载自CSDN] [此博文包含图片]
- Frament+ViewPager
- jquery全解(1)
- 模拟试——repair
- 计算机网络总结
- js中onblur和onfocus事件(用于文本框)
- 余弦计算相似度度量【转】 此博文包含图片(2014-11-17 10:18:40)转载▼ 标签: 数学 基础 自然语言处理分类: 学习 http://blog.csdn.net/u0121606
- Spring 03
- Django 1.8.2 文档
- Spring 各个jar包的作用
- [CF600E]Lomsat gelral
- Ubuntu下用apt-get安装最新版本的Redis
- CreateProcess
- 通过MyEclipse 9.0对Liferay6.1.2进行编译与部署
- 安卓仿手机网易新闻app项目开发系列之(二)轮播图显示和RecyclerView适配器编写