zoukankan      html  css  js  c++  java
  • Solr相似度算法二:BM25Similarity

    BM25算法的全称是 Okapi BM25,是一种二元独立模型的扩展,也可以用来做搜索的相关度排序。

    Sphinx的默认相关性算法就是用的BM25。Lucene4.0之后也可以选择使用BM25算法(默认是TF-IDF)。如果你使用的solr,只需要修改schema.xml,加入下面这行就可以

    1. <similarity class="solr.BM25Similarity"/>

    BM25也是基于词频的算分公式,分词对它的算分结果也很重要

     	ext{score}(D,Q) = sum_{i=1}^{n} 	ext{IDF}(q_i) cdot frac{f(q_i, D) cdot (k_1 + 1)}{f(q_i, D) + k_1 cdot (1 - b + b cdot frac{|D|}{	ext{avgdl}})},

    IDF公式

    	ext{IDF}(q_i) = log frac{N - n(q_i) + 0.5}{n(q_i) + 0.5},

    • f(qi,D):就是词频
    • |D|:[给定文档]D长度。
    • avgdl:索引中所有文档长度。

    抽象点看,BM25的公式其实和TF-IDF公式大同小异,可以也可以当做 = ∑ idf(q) * fx(tf),

    只不过,BM25的idf和tf都做了一些变形,特别是tf公式,还加入了两个经验参数k1和b,K1和b用来调整精准度,一般情况下我们取K1=2,b=0.75

    至于BM25和TF-IDF 哪种相关性算法更更好,我认为依赖于搜索质量评估标准

  • 相关阅读:
    8086汇编 学习1
    微信小程序 websocket+node.js(ws)
    kali安装google 浏览器
    bugkuctf Easy_Re
    课设记录-Day06
    GitLab使用教程
    课设记录-Day05
    课设记录-Day04
    课设记录-Day03
    课设记录-Day02
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/23434rwerewr.html
Copyright © 2011-2022 走看看