任何人都可以帮我检测问题吗?我需要计算查询和文档集合之间的相似性,我已经使用了程序:https://github.com/aliabbasrizvi/LatentSemanticIndexing][1]。在这个程序中,相似性是通过“点积”计算的,我将其改为“余弦相似度”,但我得到了高相似度得分,而我应该得到0到1之间。 谁能告诉我有什么不对? TF_IDF有什么影响吗?或其他什么?
我得到的那些结果“
文件:b4,相关性得分:2.185808108221954
文件:h286,相关性得分:1.1350011283882473E-16
这是我用于相似性的代码“
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;
}