「余弦相似度算法java」余弦相似度算法伪代码的编写
今天给各位分享余弦相似度算法java的知识,其中也会对余弦相似度算法伪代码的编写进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
本文目录一览:
Spark笔记(1) :余弦相似度计算
spark
在推荐系统中,基于物品的协同过滤算法是业界应用最多的算法,它的思想是给用户推荐那些和他们喜欢的物品相似的物品,主要分为两个步骤:一,计算物品之间的相似度;二,根据物品相似度和用户的历史行为给用户生成推荐列表。
其中物品的相似度的计算,可以通过余弦相似度计算。余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性"。
计算公式如下:
以文本相似度为例,用上述理论计算文本的相似性。
怎样计算上面两句话的相似程度?
基本思路是:如果这两句话的用词越相似,它们的内容就应该越相似。因此,可以从词频入手,计算它们的相似程度。
第一步,分词
第二步,列出所有的词
第三步,计算词频
第四步,写出词频向量
问题就变成了如何计算这两个向量的相似程度。可以想象成空间中的两条线段,都是从原点出发,指向不同的方向。两条线段之间形成一个夹角,如果夹角为0度,意味着方向相同、线段重合,这是表示两个向量代表的文本完全相等;如果夹角为180度,意味着方向正好相反。因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。
使用上面的公式计算可得:
计算结果中夹角的余弦值为0.81非常接近于1,所以,上面的句子A和句子B是基本相似的。
spark例子:
运行结果:
余弦相似度怎么用java程序写
ArrayList a = new ArrayList(); // 创建动态数组,记录不同的单词
ArrayList aNum = new ArrayList(); // 创建动态数组,统计不同的单词各自出现的次数
ArrayList b = new ArrayList();
ArrayList bNum = new ArrayList();
for (int i = 0; i s1.length; i++) // 将s1复制到动态数组a, 且词频统计数组初始化
{
a.add(s1[i]);
aNum.add(i, 1);
}
余弦相似度计算
余弦相似度,又称为余弦相似性,是通过计算两个向量的夹角余弦值来评估他们的相似度。余弦相似度将向量根据坐标值,绘制到向量空间中,如最常见的二维空间。
余弦相似度的计算用的很广泛,在NLP计算中,常用来计算词语的相似度,因为词,或者文本表示成分布式向量之后,可以很方便的计算他们的余弦相似度来评估他们的语义相似性。
余弦相似度算法java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于余弦相似度算法伪代码的编写、余弦相似度算法java的信息别忘了在本站进行查找喔。