精华内容
下载资源
问答
  • bm25

    2016-10-19 15:36:00
    BM25算法,通常用来作搜索相关性平分。一句话概况其主要思想:对Query进行语素解析,生成语素qi;然后,对于每个搜索结果D,计算每个语素qi与D的相关性得分,最后,将qi相对于D的相关性得分进行加权求和,从而得到...

    BM25算法,通常用来作搜索相关性平分。一句话概况其主要思想:对Query进行语素解析,生成语素qi;然后,对于每个搜索结果D,计算每个语素qi与D的相关性得分,最后,将qi相对于D的相关性得分进行加权求和,从而得到Query与D的相关性得分。

    BM25算法的一般性公式如下:

     

    其中,Q表示Query,qi表示Q解析之后的一个语素(对中文而言,我们可以把对Query的分词作为语素分析,每个词看成语素qi。);d表示一个搜索结果文档;Wi表示语素qi的权重;R(qi,d)表示语素qi与文档d的相关性得分。

    下面我们来看如何定义Wi。判断一个词与一个文档的相关性的权重,方法有多种,较常用的是IDF。这里以IDF为例,公式如下:

     

    其中,N为索引中的全部文档数,n(qi)为包含了qi的文档数。

    根据IDF的定义可以看出,对于给定的文档集合,包含了qi的文档数越多,qi的权重则越低。也就是说,当很多文档都包含了qi时,qi的区分度就不高,因此使用qi来判断相关性时的重要度就较低。

    我们再来看语素qi与文档d的相关性得分R(qi,d)。首先来看BM25中相关性得分的一般形式:

     

    其中,k1,k2,b为调节因子,通常根据经验设置,一般k1=2,b=0.75;fi为qi在d中的出现频率,qfi为qi在Query中的出现频率。dl为文档d的长度,avgdl为所有文档的平均长度。由于绝大部分情况下,qi在Query中只会出现一次,即qfi=1,因此公式可以简化为:

    从K的定义中可以看到,参数b的作用是调整文档长度对相关性影响的大小。b越大,文档长度的对相关性得分的影响越大,反之越小。而文档的相对长度越长,K值将越大,则相关性得分会越小。这可以理解为,当文档较长时,包含qi的机会越大,因此,同等fi的情况下,长文档与qi的相关性应该比短文档与qi的相关性弱。

    综上,BM25算法的相关性得分公式可总结为:

    从BM25的公式可以看到,通过使用不同的语素分析方法、语素权重判定方法,以及语素与文档的相关性判定方法,我们可以衍生出不同的搜索相关性得分计算方法,这就为我们设计算法提供了较大的灵活性。

     

    原文地址:http://ipie.blogbus.com/logs/104136815.html

    转载于:https://www.cnblogs.com/newadi/p/5977499.html

    展开全文
  • BM25

    2013-09-12 10:48:00
    其实,我感觉,tf-idf是特殊情况下的BM25BM25算法,通常用来作搜索相关性平分。一句话概况其主要思想:对Query进行语素解析,生成语素qi;然后,对于每个搜索结果D,计算每个语素qi与D的相关性得分,最后,将...

    其实,我感觉,tf-idf是特殊情况下的BM25。

     

    BM25算法,通常用来作搜索相关性平分。一句话概况其主要思想:对Query进行语素解析,生成语素qi;然后,对于每个搜索结果D,计算每个语素qi与D的相关性得分,最后,将qi相对于D的相关性得分进行加权求和,从而得到Query与D的相关性得分。

    BM25算法的一般性公式如下:

    clip_image002

    其中,Q表示Query,qi表示Q解析之后的一个语素(对中文而言,我们可以把对Query的分词作为语素分析,每个词看成语素qi。);d表示一个搜索结果文档;Wi表示语素qi的权重;R(qi,d)表示语素qi与文档d的相关性得分。

    下面我们来看如何定义Wi。判断一个词与一个文档的相关性的权重,方法有多种,较常用的是IDF。这里以IDF为例,公式如下:

    clip_image004

    其中,N为索引中的全部文档数,n(qi)为包含了qi的文档数。

    根据IDF的定义可以看出,对于给定的文档集合,包含了qi的文档数越多,qi的权重则越低。也就是说,当很多文档都包含了qi时,qi的区分度就不高,因此使用qi来判断相关性时的重要度就较低。

    我们再来看语素qi与文档d的相关性得分R(qi,d)。首先来看BM25中相关性得分的一般形式:

    clip_image006

    clip_image008

    其中,k1,k2,b为调节因子,通常根据经验设置,一般k1=2,b=0.75;fi为qi在d中的出现频率,qfi为qi在Query中的出现频率。dl为文档d的长度,avgdl为所有文档的平均长度。由于绝大部分情况下,qi在Query中只会出现一次,即qfi=1,因此公式可以简化为:

    clip_image010

    从K的定义中可以看到,参数b的作用是调整文档长度对相关性影响的大小。b越大,文档长度的对相关性得分的影响越大,反之越小。而文档的相对长度越长,K值将越大,则相关性得分会越小。这可以理解为,当文档较长时,包含qi的机会越大,因此,同等fi的情况下,长文档与qi的相关性应该比短文档与qi的相关性弱。

    综上,BM25算法的相关性得分公式可总结为:

    clip_image012

    从BM25的公式可以看到,通过使用不同的语素分析方法、语素权重判定方法,以及语素与文档的相关性判定方法,我们可以衍生出不同的搜索相关性得分计算方法,这就为我们设计算法提供了较大的灵活性。

     

    BM25具体实现

    BM25是二元独立模型的扩展,其得分函数有很多形式,最普通的形式如下:

    clip_image002[8]

    其中,k1,k2,K均为经验设置的参数,fi是词项在文档中的频率,qfi是词项在查询中的频率。

    K1通常为1.2,通常为0-1000

     

     

    由于在典型的情况下,没有相关信息,即r和R都是0,而通常的查询中,不会有某个词项出现的次数大于1。因此打分的公式score变为

    clip_image002[10]

    使用Lucene实现BM25

    Lucene本身的打分函数集中体现在tf·idf

    为了简化实现过程,直接将代码中tf和idf函数的返回值修改为BM25打分公式的两部分。

    文档的平均长度在索引建立的时候取得,同时在建立索引的过程中,将每个文档的docID与其长度,保存在一个hashMap中。

    具体的函数实现如下(DefaulSimilarity类):

    public float tf(){
        return (float) (2.2 * freq) / TermScorer.temp; //TermScore.temp为公式中K+fi的值
    }
    
    public float idf(int docFreq, int numDocs){
        return (float) Math.log((numDocs - docFreq + 0.5)/(docFreq + 0.5));
    }

    转载于:https://www.cnblogs.com/ywl925/p/3316367.html

    展开全文
  • 相关性算法BM25

    2017-09-21 15:45:54
    BM25算法BM25算法BM25算法BM25算法BM25算法BM25算法BM25算法BM25算法BM25算法BM25算法BM25算法BM25算法BM25算法BM25算法
  • Rank-BM25:两行搜索引擎 一组算法,用于查询一组文档并返回与查询最相关的文档。 您可能已经猜到,这些算法的最常见用例是创建搜索引擎。 到目前为止,已实现的算法是: 霍加api BM25 BM25L BM25 + BM25-Adpt...
  • python-bm25 python的BM25加权方案的实现
  • BM25算法

    2019-04-16 12:20:15
    BM25算法

    首先给大家分享一个巨牛巨牛的人工智能教程,是我无意中发现的。教程不仅零基础,通俗易懂,而且非常风趣幽默,还时不时有内涵段子,像看小说一样,哈哈~我正在学习中,觉得太牛了,所以分享给大家!点这里可以跳转到教程

                   

    1.       BM25算法

    BM25是二元独立模型的扩展,其得分函数有很多形式,最普通的形式如下:

     

     

     

    其中,k1,k2,K均为经验设置的参数,fi是词项在文档中的频率,qfi是词项在查询中的频率。

    K1通常为1.2,通常为0-1000

    K的形式较为复杂

     

    K=

     

    上式中,dl表示文档的长度,avdl表示文档的平均长度,b通常取0.75

     

    2.       BM25具体实现

    由于在典型的情况下,没有相关信息,即rR都是0,而通常的查询中,不会有某个词项出现的次数大于1。因此打分的公式score变为

     

    3.0

    BM25算法,通常用来作搜索相关性平分。一句话概况其主要思想:对Query进行语素解析,生成语素qi;然后,对于每个搜索结果D,计算每个语素qi与D的相关性得分,最后,将qi相对于D的相关性得分进行加权求和,从而得到Query与D的相关性得分。

    BM25算法的一般性公式如下:


    其中,Q表示Query,qi表示Q解析之后的一个语素(对中文而言,我们可以把对Query的分词作为语素分析,每个词看成语素qi。);d表示一个搜索结果文档;Wi表示语素qi的权重;R(qi,d)表示语素qi与文档d的相关性得分。


    下面我们来看如何定义Wi。判断一个词与一个文档的相关性的权重,方法有多种,较常用的是IDF。这里以IDF为例,公式如下:


    其中,N为索引中的全部文档数,n(qi)为包含了qi的文档数。

    根据IDF的定义可以看出,对于给定的文档集合,包含了qi的文档数越多,qi的权重则越低。也就是说,当很多文档都包含了qi时,qi的区分度就不高,因此使用qi来判断相关性时的重要度就较低。

    我们再来看语素qi与文档d的相关性得分R(qi,d)。首先来看BM25中相关性得分的一般形式:


    其中,k1,k2,b为调节因子,通常根据经验设置,一般k1=2,b=0.75;fi为qi在d中的出现频率,qfi为qi在Query中的出现频率。dl为文档d的长度,avgdl为所有文档的平均长度。由于绝大部分情况下,qi在Query中只会出现一次,即qfi=1,因此公式可以简化为:


    从K的定义中可以看到,参数b的作用是调整文档长度对相关性影响的大小。b越大,文档长度的对相关性得分的影响越大,反之越小。而文档的相对长度越长,K值将越大,则相关性得分会越小。这可以理解为,当文档较长时,包含qi的机会越大,因此,同等fi的情况下,长文档与qi的相关性应该比短文档与qi的相关性弱。

    综上,BM25算法的相关性得分公式可总结为:


    从BM25的公式可以看到,通过使用不同的语素分析方法、语素权重判定方法,以及语素与文档的相关性判定方法,我们可以衍生出不同的搜索相关性得分计算方法,这就为我们设计算法提供了较大的灵活性。

    参考资料:
    1. Project2--Lucene的Ranking算法修改:BM25算法
    2. Okapi BM25算法详解
    3. 谈谈BM25评分


    收藏到: Del.icio.us



               

    浏览人工智能教程

    展开全文
  • lucene BM25

    2012-01-13 20:21:41
    lucene可使用的BM25模型
  • bm25-排名-php 使用bm25排序算法对reuter的文档进行排序。 比较 479/6791
  • python BM25

    2019-07-18 10:33:28
    安装 pip install rank-bm25 from rank_bm25 import BM25Okapi corpus = [ "Hello there good man!", "It is quite windy in London", "How is the weather today?" ] tokenized_corpus = [doc.split(" ...

    安装
    pip install rank-bm25

    from rank_bm25 import BM25Okapi
    
    corpus = [
        "Hello there good man!",
        "It is quite windy in London",
        "How is the weather today?"
    ]
    
    tokenized_corpus = [doc.split(" ") for doc in corpus]
    
    bm25 = BM25Okapi(tokenized_corpus)
    
    query = "windy London"
    tokenized_query = query.split(" ")
    
    print(bm25.get_scores(tokenized_query))
    
    print(bm25.get_top_n(tokenized_query, corpus, n=1))
    # ['It is quite windy in London']
    
    展开全文
  • bm25 算法

    千次阅读 2017-09-10 18:37:12
    BM25 算法介绍
  • bm25算法

    千次阅读 2019-06-14 14:27:34
    bm25算法,常用作搜索相关性评分。 bm25算法主要思想 对Query进行语素解析,生成语素qi;然后,对于每个搜索结果d,计算每个语素qi与d的相关性得分,最后,将“一个Query各个qi相对于d的相关性得分”加权求和,...
  • 搜索之BM25BM25F模型

    2019-02-20 11:42:45
    最近在优化文本相关性,使用到BM25BM25F模型,但是发现网络上关于BM25BM25F模型的介绍比较少,在此总结一下,方便记忆,另一方面搜了一下相关的资料,发现比较少,写下来欢迎大家查阅。 介绍BM25模型首先要介绍...
  • 搜索BM25算法

    2020-08-20 20:24:34
    搜索之BM25BM25F模型
  • BM25理解

    2020-09-11 23:02:46
    BM25算法是一种用于评价搜索词与文档之间相关性的算法,他是一种基于概率检索模型提出的算法。基本思想:我们现在有一个query和一批文档docs,现在要计算query和每一篇文档的doc之间的相关性分数,我们的做法就是,...
  • BM25算法浅析

    2014-04-24 11:15:03
    BM25算法浅析
  • BM25的算法

    2014-11-12 16:09:22
    文档搜索中,并没有例如pr(google)这样的权威的评分作为排序的依据,所以有各种各样评分标准来评价我们搜索的相关度,而BM25就是其中比较著名的一种。
  • 适用于SQLite3的Okapi BM25 该SQLite扩展创建了一个名为okapi_bm25SQL函数,该函数返回以获得全文搜索的结果。 Okapi BM25是一种现代化的排名功能,可根据每个结果与搜索查询的相关性来计算得分。 此扩展仅适用于上...
  • BM25算法介绍

    热门讨论 2013-01-04 10:45:23
    BM25算法的详细资料,需要的可以参考,比较完整的实现过程。
  • JAVA版BM25排序模型

    2018-11-23 14:00:33
    基于JAVA开发的BM25排序模型,文件格式为xml。压缩包中含有示例文件xml。
  • 介绍BM25/TFIDF算法的优秀PPT
  • es的排序准则的相关度,根据搜索 ...TF/IDF会随着关键词出现的次数得分逐渐增高,BM25随着关键词出现的次数,得分会有一个极限(用两个参数可以进行调节 k1[默认1.2],b[默认0.75])。目前ES5.0以后版本默认使用BM25
  • BM25__MapReduce-源码

    2021-06-04 13:26:58
    BM25__MapReduce 这是BM25框架的代码: 1.Hadoop Map 输入是zipfile 输出是文本文件2.Override FileInputFormat: zipFileInputFile, eachItem 使用三个mapper和ene reducer

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,197
精华内容 1,278
关键字:

bm25