我不确定如何在lucene得分中使用向量空间模型。
我在这里阅读(https://www.elastic.co/guide/en/elasticsearch/guide/current/practical-scoring-function.html)lucene将文档评分为每个术语查询的tf-idf的总和(如果我们省略了协调因子,字段长度和提升)。我不明白如何使用向量空间模型。
空间矢量模型可用于计算文档的tf-idf向量与查询的tf-idf向量之间的相似性。 这应该为我们提供查询和文档之间的CosSimilarity得分。得分将介于0和1之间,因此不同的请求应该易于比较。
为什么不使用lucene得分?
答案 0 :(得分:1)
Lucene使用'实用分数功能'在您的链接中提到,这是余弦相似度的近似值 - 扩展到支持“实用”和#39;增强功能等。
如果你为查询q和文档d采用向量空间余弦相似性公式,你有:
s(q, d) = q * d / (||q|| * ||d||)
考虑到q和d是[tf(t1) * idf(t1), ...]
之类的向量,而q向量中的tf(t)是1或0,公式变为:
s(q, d) = ∑( tf(t in d) * idf(t)² )(t in q) / (||q|| * ||d||)
根据||q||
的定义1 / queryNorm(q)
,您可以进一步将queryNorm = 1 / √sumOfSquaredWeights
替换为s(q, d) = queryNorm(q) * ∑( tf(t in d) * idf(t)² )(t in q) / ||d||
score(q, d) = queryNorm(q) * coord(q,d) *
∑ ( tf(t in d) * idf(t)² * t.getBoost() * norm(t,d)) (t in q)
接近他们在文档中提供的公式:
||d||
然而, references.txt
,文档向量的规范在其公式方面没有直接的等价物。