信息检索里面经典问题。
精确top K 检索及其加速办法
•方法一:快速计算余弦
• 方法二:堆排序法N中选K
• 方法三:提前终止计算
精确top K检索加速方法一:
快速计算余弦 • 检索排序就是找查询的K近邻 • 一般而言,在高维空间下,计算余弦相似度没有很 高效的方法 • 但是如果查询很短,是有一定办法加速计算的,而 且普通的索引能够支持这种快速计算
特例– 不考虑查询词项的权重 • 查询词项无权重 • 相当于假设每个查询词项都出现1次 • 于是,不需要对查询向量进行归一化 • 可以对上一讲给出的余弦相似度计算算法进行轻微的简化
精确top k检索加速方法二:
堆排序法N中选K • 检索时,通常只需要返回前K条结果 • 可以对所有的文档评分后排序,选出前K个结果,但是这 个排序过程可以避免 • 令 J = 具有非零余弦相似度值的文档数目 • 从J中选K个最大的
技巧:相似度为0的不参与建堆(减少建堆开销)
精确top K 检索加速方法三:
提前终止计算
• 到目前为止的倒排记录表都按照docID排序
• 接下来将采用与查询无关的另外一种反映结果好坏程度 的指标(静态质量)
• 例如: 页面d的PageRank g(d), 就是度量有多少好页面指向d的一 种指标 (《信息检索导论》参考第 21章)
• 于是可以将文档按照PageRank排序 g(d1) >