• 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 哪种相关性算法更更好,我认为依赖于搜索质量评估标准

  • 相关阅读:
    python 函数和函数名的应用
    Python 文件操作
    django报错信息解决方法
    小数据池、代码块以及深浅拷贝
    python 字典的增删改查
    ps 整理通道
    unity 捏脸相关
    Unity3D Blend Shape简析
    unity 乳摇
    爱丽丝的头发是怎么制作的
  • 原文地址:https://www.cnblogs.com/lvfeilong/p/23434rwerewr.html
Copyright © 2020-2023  润新知