如何比较两个句子的相似度
摘自 http://www.cnblogs.com/jivi/archive/2013/04/02/2995571.html
下图就是判断两个句子想进度的公式
句子A:周杰伦是一个歌手,也是一个叉叉
句子B:周杰伦不是一个叉叉,但是是一个歌手
第一步 分词
句子A : 周杰伦/是/一个/歌手,也/是/一个/叉叉 (注:这分词够先进,叉叉都能识别出来) 句子B: 周杰伦/不/是/一个/叉叉 ,但是/是/一个/歌手
第二步 去重复,列出识别的所有单词
周杰伦、是 、不、一个、叉叉 、歌手、但是、也
第三步 计算词频(这里表示某个词在一个句子里出现的次数)
句子A: 周杰伦1、是2 、不 0 、一个2、叉叉1、歌手1、但是0、也1句子B: 周杰伦1、是2 、不 1 、一个2、叉叉1、歌手1、但是1、也0
第四步 构造词频向量
句子A [1 , 2 , 0 , 2 , 1 , 1 , 0 , 1] 句子B [1 , 2 , 1 , 2 , 1 , 1 , 0 , 1]
有了这个公式就好办了。我们的两个句子
句子A [1 , 2 , 0 , 2 , 1 , 1 , 0 , 1] 句子B [1 , 2 , 1 , 2 , 1 , 1 , 0 , 1]
那么他们夹角的余弦是多少呢
Cosθ = (1*1 + 2*2 + 0*1 + 2*2 + 1*1 + 1*1 + 0*0 + 1*1 )/(sqrt(1^2+2^2+0^2+2^2+1^2+1^2+0^2+1^2)*sqrt(1^2+2^2+1^2+2^2+1^2+1^2+1^2+0^2+1^2)) =>Cosθ ≈0.961
这个还算是比较高的