余弦计算相似度度量
相似度度量(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是 ,b是 ,则a与b的夹角 的余弦等于:
余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,夹角等于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, 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是基本相似的
由此,我们就得到了文本相似度计算的处理流程是:
(1)找出两篇文章的关键词;
(2)每篇文章各取出若干个关键词,合并成一个集合,计算每篇文章对于这个集合中的词的词频
(3)生成两篇文章各自的词频向量;
(4)计算两个向量的余弦相似度,值越大就表示越相似。
分享到:
相关推荐
余弦相似度度量共2页.pdf
我们提出了一种基于层次图的相似度度量(HGSM,hierarchical-graph based similarity measurement)框架地理信息系统一致地建模每个个体并对个体的轨迹进行了有效的相似性度量。在这个框架中,我们同时考虑了人的运动...
余弦相似度计算matlab代码计算余弦相似度 张伯超 该脚本将从免疫数据库中读取数据并计算不同特征样本之间的余弦相似度。 用法 -d name of database -s name of subject -f field of the columns used to separate ...
5.余弦相似度 1.解决问题:通过测量两个向量的夹角的余弦值来度量他们之间的相似性 2.取值:取值在[-1,1]之间 3.说明:两个向量的夹角的余弦值确定两个向
对同一组数据,分别采用不同的系统聚类方法,如组内连接、组间连接、最近邻元素、最远邻元素等,度量标准不变,为夹角余弦,对其相似度进行分类。如何评价采用这些聚类方法得到的结果,找出分类最好的一种方法?我...
目前实现了十几种算法(包括 Levenshtein 编辑距离和兄弟、Jaro-Winkler、最长公共子序列、余弦相似度等)。查看下面的汇总表以获取完整列表... python字符串相似度 下载 概述 归一化、度量、相似性和距离 (归一化...
文本聚类的一种实现,使用 k-means 进行聚类,并使用作为距离度量。 等等,什么? 基本上,如果您有一堆文本文档,并且您想按相似性将它们分成 n 个组,那么您很幸运。 例子 为了测试这一点,我们可以查看test_...
该方法首先对文本进行预处理,其次根据文本的结构特征提取模块文本,然后使用TF-IDF方法提取每个模块文本的TOP-N关键词, 作为模块文本的特征向量表示,最后使用余弦聚类计算文本的相似度。实验结果表明,在电力行业...
此模型考虑了用户间的共同评分、共同评分项目数以及用户的评分值,据此提出了融合正态分布函数相似度的协同过滤算法,该算法通过综合多种评分因素利用正态分布函数和修正的余弦相似度共同度量用户间的相似关系。...
其结构如下在计算句子语义相似度的时候,都是以句子对的形式输入到网络中,孪生网络就是定义两个网络结构分别来表征句子对中的句子,然后通过曼哈顿距离,欧式距离,余弦相似度等来度量两个句子之间的空间相似度。...
其次使用对高维数据有效的余弦相似度经加权后度量各对象在k-邻域内的离群程度,实现高维局部离群点检测;最后采用国家天文台提供的天体光谱数据作为数据集,实验验证了LEAWCD算法具有伸缩性强和检测精度高等优点。
2,基于词袋模型和TFIDF模型,采用余弦相似度作为度量标准,对测试问题语料库中的问题进行文本相似度计算,找出相似度较高的问题作为相似问题集合。 3,将相似问题集合中的问题进行排序,同时返回其对应的答案给...
2,基于词袋模型和TFIDF模型,采用余弦相似度作为度量标准,对测试问题语料库中的问题进行文本相似度计算,找出相似度较高的问题作为相似问题集合。 3,将相似问题集合中的问题进行排序,同时返回其对应的答案给...
针对同一机构实体对应多个机构名称的问题,提出了一种基于Jaccard相似度数据空间...通过计算机构名称对应的相似度向量间的余弦相似度,实现了机构别名的有效挖掘。最后用真实数据进行对比实验验证了该方法的优越性。
距离度量用于矢量模型,即高维数据空间中的余弦角距离 (CAD) 查询。 通过理论分析和实验结果,本项目展示了高维时基于CAD的检索结果。 强调: 1. 使用一百万条数据条目生成结果。 2.结果可以在whispering-sands-...
2,基于词袋模型和TFIDF模型,采用余弦相似度作为度量标准,对测试问题语料库中的问题进行文本相似度计算,找出相似度较高的问题作为相似问题集合。 3,将相似问题集合中的问题进行排序,同时返回其对应的答案给...
然后分别基于余弦相似度和KL散度计算得到项目相似度矩阵,将得到的相似度矩阵结合原评分训练集输出预评分,再将预评分填充到训练集;最后将训练集输入ALS矩阵分解算法得到推荐结果。通过MovieLens数据集的实验结果...
文章利用了一种时间相似系数(利用夹角余弦)的计算方法,结合雅可比系数和CM系数,通过综合考虑上述三个系数,把它作为web访问者行为的相似度度量准则,同时,又采用层次聚类算法,最后实验结果很好。
余弦相似度是一种度量标准,用于衡量文档的相似程度,而与文档的大小无关。 在数学上,它测量在多维空间中投影的两个向量之间的角度的余弦值。 余弦相似度是有利的,因为即使两个相似的文档相距欧几里德距离(由于...