网页排序BM25算法原理详解:
BM25算法是一种基于统计方法的排序算法,是二元独立模型的扩展,或者看作是TF-IDF算法的变形。此算法也是一种有效的相关性评分手段,被搜索引擎广泛使用。
使用BM25算法来对查询到的网页进行评分,其关键代码如下:
class BM25: def __init__(self, referance): self.referance = referance self.k1 = 2 self.k2 = referance.wordCount / referance.fileCount self.b = 0.75 def getRank(self, word, result): for filename in result.keys(): f = self.referance.invertedTable[word][filename] idf = math.log(self.referance.fileCount / len(self.referance.invertedTable[word])) result[filename] = (idf * f * (self.k1 + 1)) / (f + self.k1 * (1 - self.b + self.b * self.k2)) return result