【问题标题】:apache.commons.text cosine distanceapache.commons.text 余弦距离
【发布时间】:2017-07-10 18:21:23
【问题描述】:

我正在尝试使用 apache commons 的余弦距离类。但它总是返回 1.0。我错过了什么吗?这是我的代码:

public class ComputeDistance {
    public static void main(String[] args)throws Exception{

        CosineDistance dist = new CosineDistance();
        CharSequence c1 = "example text1";
        CharSequence c2 = "another file";
        System.out.println(dist.apply(c1,c2));
    }
}

【问题讨论】:

    标签: java apache-commons cosine-similarity


    【解决方案1】:

    CosineDistance 返回1 - cosineSimilarity(leftVector, rightVector)leftVectorrightVector 是单词的映射和 char 序列中的出现次数,所以是 cosineSimilarity(leftVector, rightVector) = 0 的结果。您可以更改代码以使用您的 char 序列的字符而不是单词:

    public class ComputeDistance {
      public static void main(String[] args) throws Exception {
    
        CosineSimilarity dist = new CosineSimilarity();
    
        String c1 = "example text1";
        String c2 = "another file";
    
        Map<CharSequence, Integer> leftVector =
            Arrays.stream(c1.split(""))
            .collect(Collectors.toMap(c -> c, c -> 1, Integer::sum));
        Map<CharSequence, Integer> rightVector =
            Arrays.stream(c2.split(""))
            .collect(Collectors.toMap(c -> c, c -> 1, Integer::sum));
    
        System.out.println(1 - dist.cosineSimilarity(leftVector,rightVector));
    
      }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-12-12
      • 2021-09-09
      • 1970-01-01
      • 2013-02-24
      • 1970-01-01
      • 2020-02-11
      • 2015-05-31
      • 2014-08-21
      • 2016-12-05
      相关资源
      最近更新 更多