如何比较两个句子的相似度

摘自 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

  这个还算是比较高的  

posted @ 2013-04-03 08:30  赤狐(zcm123)  阅读(508)  评论(0编辑  收藏  举报