如何找到向量之间的余弦相似度?
我需要找到相似性来衡量两行文本之间的相关性。
例如,我有两个句子:
用户界面系统
用户界面机
…及其在tF-idf之后的向量,然后使用LSI进行标准化,例如[1,0.5]
和[0.5,1]
。
如何测量这些向量之间的相似性?
public class CosineSimilarity extends AbstractSimilarity {
@Override
protected double computeSimilarity(Matrix sourceDoc, Matrix targetDoc) {
double dotProduct = sourceDoc.arrayTimes(targetDoc).norm1();
double eucledianDist = sourceDoc.normF() * targetDoc.normF();
return dotProduct / eucledianDist;
}
}
我最近在大学的信息检索部门做了一些tf-idf的工作。我使用了这种余弦相似度方法,该方法使用Jama:Java Matrix Package。
有关完整的源代码,请参阅《IR Math with Java:相似性度量》,这是一个非常好的资源,涵盖了许多不同的相似性度量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句