我如何使用jama计算余弦相似度

时间:2017-05-19 11:57:16

标签: java tf-idf svd cosine-similarity lsa

任何人都可以帮我检测问题吗?我需要计算查询和文档集合之间的相似性,我已经使用了程序:https://github.com/aliabbasrizvi/LatentSemanticIndexing][1]。在这个程序中,相似性是通过“点积”计算的,我将其改为“余弦相似度”,但我得到了高相似度得分,而我应该得到0到1之间。 谁能告诉我有什么不对? TF_IDF有什么影响吗?或其他什么?

我得到的那些结果“

  1. 文件:b4,相关性得分:2.185808108221954

  2. 文件:h286,相关性得分:1.1350011283882473E-16

  3. 这是我用于相似性的代码“

    public double getVectorModulus(Matrix matrix) {                 
                double dotProduct = 0.0;
                double magnitude1 = 0.0;
                double magnitude2 = 0.0;
                double cosineSimilarity = 0.0;
                double a=0.0, b=0.0;
                int i = 0,j = 0;
                  for ( i = 0; i < matrix.getRowDimension(); i++)
                    { a=matrix.get(i, 0);
                      b= matrix.get(i, 0);
                       dotProduct += (a*b);  //a.b
                        magnitude1+=Math.pow(a, 2); //a^2
                        magnitude2+=Math.pow(b, 2); //b^2
                    }
                magnitude1+=Math.sqrt(magnitude1); //   sqrt(a^2)
                magnitude2+=Math.sqrt(magnitude2); //   sqrt(b^2)
                if(magnitude1 !=0.0 | magnitude2 !=0.0)
                    cosineSimilarity = dotProduct / (magnitude1 *magnitude2);    
        return cosineSimilarity;
        }
    

0 个答案:

没有答案