文档相关性

tf-idf

TF-IDF(term frequency–inverse document frequency)词频-逆文档频率。

从感性的角度看,一个词在一篇文档中出现的频率越高,则相关性越高,词频(tf)就越高,相关性也越高。 但是,如果该词在所有文档中出现的频率也很高,则说明该词很普遍,区分度没那么高,文档频率高,逆文档频率(idf)低,相关性就低。

最终已 tf * idf 综合起来评估相关性。

空间向量模型

余弦相似性理论,两个空间向量越相似,夹角越小。
在这里插入图片描述

public class VSM {
    /**
     * 计算两个向量之间的余弦相似度
     * @param vl
     * @param v2
     * @return
     */
    public static double calCosSim(Map<String, Double> vl,
                                   Map<String, Double> v2) {
        double sclar = 0.0, norm1 = 0.0, norm2 = 0.0, similarity = 0.0;
        Set<String> vlKeys = vl.keySet();
        Set<String> v2Keys = v2.keySet();
        Set<String> both = new HashSet<>();
        both.addAll(vlKeys);
        both.retainAll(v2Keys);
        System.out.println(both);

        for (String strl : both) {
            sclar += vl.get(strl) * v2.get(strl);
        }
        for (String strl : vl.keySet()) {
            norm1 += Math.pow(vl.get(strl), 2);
        }
        for (String str2 : v2.keySet()) {
            norm2 += Math.pow(v2.get(str2), 2);
        }
        similarity = sclar / Math.sqrt(norm1 * norm2);
        System.out.println("sclar:" +  sclar);
        System.out.println("norrnl :" + norm1);
        System.out.println("norrn2 :"+ norm2);
        System.out.println("similarity :" + similarity);
        return similarity;
    }

    public static void main(String[] args) {
        Map<String, Double> m1= new HashMap<>();
        m1.put ("Hello", 1.0);
        m1 .put ("css", 2.0) ;
        m1.put ("Lucene", 3.0) ;

        Map<String, Double> m2= new HashMap<>();
        m2.put ("Hello", 1.0);
        m2.put ("Word", 2.0) ;
        m2.put ("Hadoop", 3.0);
        m2.put ("java", 4.0) ;
        m2 .put ("html", 1.0) ;
        m2.put ("css", 2.0);
        calCosSim(m1, m2);
    }
    
}

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值