如何计算两个向量的余弦相似度?
如何找到向量之间的相似度" title="余弦相似度">余弦相似度?
我需要找到相似性来衡量两行文本之间的相关性。
例如,我有两个句子:
用户界面系统
用户界面机
…及其在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:相似性度量》,这是一个非常好的资源,涵盖了许多不同的相似性度量。
以上是 如何计算两个向量的余弦相似度? 的全部内容, 来源链接: utcz.com/qa/426800.html