JAVA代码之余弦相似度

该博客介绍了余弦相似度的基本概念,用于衡量文本相似度。通过预处理、词频计算、向量表示,利用JAVA实现余弦相似度算法,并提供了一段示例代码进行演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

余弦相似度基本思路是:如果这两句话的用词越相似,它们的内容就应该越相似。因此,可以从词频入手,计算它们的相似程度。

第一步,预处理主要是进行中文分词和去停用词,分词。

第二步,列出所有的词。

第三步,计算词频。

第四步,写出词频向量。

 

余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。

余弦相似度缺陷

这类算法没有很好地解决文本数据中存在的自然语言问题,即同义词和多义词。这样对于搜索的精度产生很大的影响。

 

衡量文本相似度的几种手段:

(1)最长公共子串(基于词条空间)

(2)最长公共子序列(基于权值空间、词条空间)

(3)最少编辑距离法(基于词条空间)

(4)汉明距离(基于权值空间)

(5)余弦值(基于权值空间)

 

 

 

 

向量空间余弦相似度(Cosine Similarity)

余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。

上图两个向量a,b的夹角很小可以说a向量和b向量有很高的的相似性,极端情况下,a和b向量完全重合。如下图:

如上图二:可以认为a和b向量是相等的,也即a,b向量代表的文本是完全相似的,或者说是相等的。如果a和b向量夹角较大,或者反方向。如下图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值