余弦相似度基本思路是:如果这两句话的用词越相似,它们的内容就应该越相似。因此,可以从词频入手,计算它们的相似程度。
第一步,预处理主要是进行中文分词和去停用词,分词。
第二步,列出所有的词。
第三步,计算词频。
第四步,写出词频向量。
余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。
余弦相似度缺陷
这类算法没有很好地解决文本数据中存在的自然语言问题,即同义词和多义词。这样对于搜索的精度产生很大的影响。
衡量文本相似度的几种手段:
(1)最长公共子串(基于词条空间)
(2)最长公共子序列(基于权值空间、词条空间)
(3)最少编辑距离法(基于词条空间)
(4)汉明距离(基于权值空间)
(5)余弦值(基于权值空间)
向量空间余弦相似度(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,即两个向量相等,这就叫"余弦相似性"。
相关推荐
余弦相似度算法
余弦相似度算法文本相似度算法的对比及python实现五种常见的相似度算法:余弦相似度(cosine_similarity)、jaccard相似度、编辑距离(Levenshtein)、MinHash、SimHash + 海明距离。
余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值, 来评估他们的相似度。 余弦相似度将向量根据坐标值,绘制到向量空间中,如常见的二维空间。 余弦相似度衡量的是2个向量间的夹角大小,通过夹角的...
(python)使用余弦相似度算法计算两个文本的相似度的简单实现
中文文本相似度匹配算法 simHash 海明距离 IK分词 完整的可运行的示例代码 包含simHash 算法,使用IK 对中文文本进行分词处理
易语言文本相似度算法源码,文本相似度算法,文本_相似度,min
文本相似度计算的Simhash算法的实现与改进
kmeans算法 文本相似度计算(可控制台手动输入数据)
易语言快速计算文本相似度源码,快速计算文本相似度,取文本相似度,GetMaxLenSubStr,GetCharList,max
易语言源码易语言文本相似度算法源码.rar 易语言源码易语言文本相似度算法源码.rar 易语言源码易语言文本相似度算法源码.rar 易语言源码易语言文本相似度算法源码.rar 易语言源码易语言文本相似度算法源码.rar ...
余弦相似度算法
JAVA查重算法,包括HanLP 相似度比较、二叉树、DFA算法实现、敏感词处理工具、IKAnalyzer中文分词工具、分词进行敏感词过滤等查重算法,可以计算海明距离、余弦相似性、莱文斯坦距离、Jaccard 相似度、Sorensen Dice...
Matlab余弦相似度算法判断图片相似度并识别源代码 Matlab 余弦相似度 图像匹配 可直接运行 Matlab余弦相似度算法判断图片相似度并识别源代码 Matlab 余弦相似度 图像匹配 可直接运行
基于语义相似度的中文文本相似度算法研究.pdf基于语义相似度的中文文本相似度算法研究.pdf基于语义相似度的中文文本相似度算法研究.pdf
易语言文本相似度比较,逐字比较,是把第一个字符串每个字都拆分开来和第二个字符串相比较第
毕业设计:python文本相似度计算系统(源码 + 数据库 + 说明文档) 第二章 可行性分析 7 2.1 业务流程可行性分析 7 2.2 经济可行性 7 2.3 技术可行性 8 2.4 运行可行性 8 第三章 需求分析 8 3.1 文本相似度的应用 8 ...
利用TF_IDF算法计算两个英文文章的文本相似度(C++实现),提取文本关键词,仅用于应付课程任务。
1.提供基于余弦相似度、编辑距离和Jaccard相似度等算法的文本相似度计算功能; 2.完成文本预处理功能,其中包括去除停用词、分词和词性标注等; 3.提供文本相似度计算结果的可视化功能,可以直观地展示两个文本之间...
主要介绍了Java基于余弦方法实现的计算相似度算法,简单说明了余弦相似性的概念、原理并结合实例形式分析了java实现余弦相似性算法的相关操作技巧,需要的朋友可以参考下
易语言文本相似度判断模块源码,文本相似度判断模块,文本相似度判断,逐字分割