Java 计算两个字符串的相似度 CosineSimilarity实现

沉淀下来,雕琢技术~

最近遇到需要校验字符串的相似度的需求,遂经常调研查询资料发现,apache 提供的 commons-text 依赖有个 CosineSimilarity类提供可以匹配两个字符串的相似度。

引入依赖


    org.apache.commons
    commons-text
    1.10.0

使用

public void test() {
    String s1 = "text1";
    String s2 = "text2";
    
    Map<CharSequence, Integer> map = Arrays.stream(s1.split(""))
        .collect(Collectors.toMap(c -> c, c -> 1, Integer::sum));
    Map<CharSequence, Integer> map2 = Arrays.stream(s2.split(""))
        .collect(Collectors.toMap(c -> c, c -> 1, Integer::sum));

    CosineSimilarity cosineSimilarity = new CosineSimilarity();
    Double similar = cosineSimilarity.cosineSimilarity(map, map2);
    System.out.println("similar = " + similar);
}

执行结果
运行结果

你可能感兴趣的:(java,开发语言)