zoukankan      html  css  js  c++  java
  • 如何比较两个句子的相似度

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

      这个还算是比较高的  

  • 相关阅读:
    解释之前遗留的方法覆盖问题
    多态在开发中的作用
    多态的基础语法
    Go 统计汉子字符
    Go map
    Go make和new的区别
    Go 指针
    Go 切片
    Go数组
    Go中交换两个值类型
  • 原文地址:https://www.cnblogs.com/zcm123/p/2997178.html
Copyright © 2011-2022 走看看