elasticsearch Lucene评分,关于向量空间模型的精度
我不知道向量空间模型是如何用于lucene评分的 我在这里读到()lucene将一个文档作为每个术语查询的tf-idf之和进行评分(如果我们忽略协调因子、字段长度和提升)。我不明白向量空间模型是如何使用的 空间向量模型可以用来计算文档的tf-idf向量和查询的tf-idf向量之间的相似性。 这将为我们提供查询和文档之间的相似性分数。分数将在0到1之间,因此不同的请求应该很容易比较
elasticsearch Lucene评分,关于向量空间模型的精度,
elasticsearch,lucene,similarity,
elasticsearch,Lucene,Similarity,我不知道向量空间模型是如何用于lucene评分的 我在这里读到()lucene将一个文档作为每个术语查询的tf-idf之和进行评分(如果我们忽略协调因子、字段长度和提升)。我不明白向量空间模型是如何使用的 空间向量模型可以用来计算文档的tf-idf向量和查询的tf-idf向量之间的相似性。 这将为我们提供查询和文档之间的相似性分数。分数将在0到1之间,因此不同的请求应该很容易比较 为什么不使用lucene分数?lucene使用链接中提到的“实用分数函数”,它是余弦相似性的近似值-扩展为支持“实用
为什么不使用lucene分数?lucene使用链接中提到的“实用分数函数”,它是余弦相似性的近似值-扩展为支持“实用”功能,如助推器 如果对查询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||)
根据queryNorm=1/√平方重量总和
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)
定义为√numTerms(d)
?不,这不是同一个标准-我已经清理了我答案中的符号||d | |在它们的公式中没有直接的等价项,但它可能包含在坐标(q,d)中。