Skip to content

Latest commit

 

History

History
18 lines (12 loc) · 1.43 KB

bm25.md

File metadata and controls

18 lines (12 loc) · 1.43 KB

定义

BM25是搜索引擎的经典排序函数,用于衡量一组关键词和某文档的相关程度。BM25的定义为

                IDF * TF * (k1 + 1)
BM25 = sum ----------------------------
           TF + k1 * (1 - b + b * D / L)

其中sum对所有关键词求和,TF(term frequency)为某关键词在该文档中出现的词频,D为该文档的词数,L为所有文档的平均词数,k1和b为常数,在悟空里默认值为2.0和0.75,不过可以在引擎初始化的时候在EngineInitOptions.IndexerInitOptions.BM25Parameters中修改。IDF(inverse document frequency)衡量关键词是否常见,悟空引擎使用带平滑的IDF公式

                   总文档数目
IDF = log2( ------------------------  + 1 )
             出现该关键词的文档数目

使用

索引器负责计算BM25,为了能计算文档的BM25值,必须保存文档中所有关键词的词频,这需要在引擎初始化时将EngineInitOptions.IndexerInitOptions.IndexType至少设置为FrequenciesIndex(LocationsIndex也可计算BM25,但这种索引也保存词出现的位置,消耗更多内存)。

然后你可以在你自定义的评分规则中调用IndexedDocument.BM25得到此值作为评分数据。如果你想完全依赖BM25评分,可以使用默认的评分规则,既RankByBM25。