将数据看成空间中的点时,评价远近可以用欧式距离或余弦距离 一般可用于文本间的相似度计算,但也不是绝对的 余弦距离计算步骤: 以余弦距离计算文本相似度为例,具体说明其计算过程: 余弦相似度算法: 一个向量空间中两个向量夹角间的余弦值作为衡量两个个体之间差异的大小,余弦值接近1,夹角趋于0,表明两个向量越相似,余弦值接近于0,夹角趋于90度,表明两个向量越不相似。 基本思路是: 如果这两句话的用词越相似,它们的内容就应该越相似。因此,可以从词频入手,计算它们的相似程度。 第一步,分词 句子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度,意味着方向正好相反。因此,我们可以通过夹角的大小,来判断向量的相似程度。夹角越小,就代表越相似。 计算两个句子向量 句子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)计算两个向量的余弦相似度,值越大就表示越相似 参考博客: http://www.ruanyifeng.com/blog/2013/03/cosine_similarity.html https://blog.csdn.net/Jameslvt/article/details/81171972
|