经典搜索核心算法:BM25算法

合集下载

搜索核心算法BM25算法

搜索核心算法BM25算法

搜索核心算法BM25算法BM25算法,全称为BM25文本相似度算法(Best Match 25),是一种用于信息检索的核心算法。

它是按照关键词匹配度为基础,通过对文档之间的相似度进行评分,以便为用户提供最相关的结果。

BM25算法是一种基于概率检索模型的改进版本,旨在提高文本检索的准确性和效率。

相较于传统的向量空间模型(VSM),BM25算法在处理长文本、短文本和检索效果不佳的情况下表现更好。

BM25算法的核心思想是根据文档中关键词的出现概率和查询中关键词的重要性对文档进行评分。

它包括三个主要的评分因素:匹配度因子、相关度因子和长度因子。

首先,匹配度因子是通过计算查询词与文档中关键词匹配的次数和频率,以及文档中关键词的重要性进行的。

匹配度因子旨在提高查询词与文档关键词匹配的准确性,以增加相关性。

其次,相关度因子是通过查询词和文档关键词之间的相关性进行的。

它使用了一个反向文档频率(IDF)公式来计算查询词的重要性。

该公式通过查询词在所有文档中的出现频率,来估计查询词的重要性。

这样,出现频率较低但在相关文档中频繁出现的查询词将获得更高的相关度因子。

最后,长度因子是通过计算文档的长度来进行的。

该因子用于调整过长或过短的文档对相似度的影响。

较短的文档可能意味着关键词更稀疏或不够详细,因此可能与查询词不够匹配。

而较长的文档可能包含大量冗余信息,因此可能与查询词的相关性较低。

长度因子旨在根据文档的长度对其相似度进行适当的调整。

总的来说,BM25算法通过综合考虑匹配度因子、相关度因子和长度因子,对文本相似度进行评分。

它能够有效地解决长文本、短文本和检索效果不佳的问题,并在信息检索任务中取得良好的效果。

为了实现BM25算法,可以使用倒排索引技术。

倒排索引是基于文档的关键词创建的反向索引,能够加快过程。

对于每个关键词,倒排索引记录了该关键词出现在哪些文档中以及出现的次数。

综上所述,BM25算法是一种用于信息检索的重要算法,通过综合考虑匹配度因子、相关度因子和长度因子对文本相似度进行评分。

十 大 经 典 排 序 算 法 总 结 超 详 细

十 大 经 典 排 序 算 法 总 结 超 详 细

数据挖掘十大经典算法,你都知道哪些?当前时代大数据炙手可热,数据挖掘也是人人有所耳闻,但是关于数据挖掘更具体的算法,外行人了解的就少之甚少了。

数据挖掘主要分为分类算法,聚类算法和关联规则三大类,这三类基本上涵盖了目前商业市场对算法的所有需求。

而这三类里又包含许多经典算法。

而今天,小编就给大家介绍下数据挖掘中最经典的十大算法,希望它对你有所帮助。

一、分类决策树算法C4.5C4.5,是机器学习算法中的一种分类决策树算法,它是决策树(决策树,就是做决策的节点间的组织方式像一棵倒栽树)核心算法ID3的改进算法,C4.5相比于ID3改进的地方有:1、用信息增益率选择属性ID3选择属性用的是子树的信息增益,这里可以用很多方法来定义信息,ID3使用的是熵(shang),一种不纯度度量准则,也就是熵的变化值,而C4.5用的是信息增益率。

区别就在于一个是信息增益,一个是信息增益率。

2、在树构造过程中进行剪枝,在构造决策树的时候,那些挂着几个元素的节点,不考虑最好,不然容易导致过拟。

3、能对非离散数据和不完整数据进行处理。

该算法适用于临床决策、生产制造、文档分析、生物信息学、空间数据建模等领域。

二、K平均算法K平均算法(k-means algorithm)是一个聚类算法,把n个分类对象根据它们的属性分为k类(kn)。

它与处理混合正态分布的最大期望算法相似,因为他们都试图找到数据中的自然聚类中心。

它假设对象属性来自于空间向量,并且目标是使各个群组内部的均方误差总和最小。

从算法的表现上来说,它并不保证一定得到全局最优解,最终解的质量很大程度上取决于初始化的分组。

由于该算法的速度很快,因此常用的一种方法是多次运行k平均算法,选择最优解。

k-Means 算法常用于图片分割、归类商品和分析客户。

三、支持向量机算法支持向量机(Support Vector Machine)算法,简记为SVM,是一种监督式学习的方法,广泛用于统计分类以及回归分析中。

BM25文本相似度算法

BM25文本相似度算法

BM25文本相似度算法BM25(Best Match 25)是一种用于计算文本相似度的算法。

它是一种基于统计的算法,用于评估查询和文档之间的相关性。

BM25算法最早是由Robertson和Walker在1994年提出的,并在信息检索领域广泛应用。

BM25算法根据查询和文档之间的关键词匹配程度来计算相似度。

以下是BM25算法的核心原理和步骤:1. 首先,将查询和文档分词,得到查询词集合(query keywords)和文档词集合(document keywords)。

2. 计算每个查询词在文档中的出现频率(term frequency)和在整个文集中的出现频率(corpus term frequency)。

3. 使用BM25公式计算每个查询词的得分(score):score(qi, D) = idf(qi) * (tf(qi, D) * (k + 1)) / (tf(qi, D)+ k * (1 - b + b * ,D, / avgdl))其中,qi是查询词,D是文档,tf(qi, D)是查询词qi在文档D中的出现频率,idf(qi)是查询词qi的逆文档频率(inverse document frequency),k和b是可调参数,avgdl是文档平均长度。

4.对于整个查询,将每个查询词的得分进行累加,最后得到文档和查询之间的相似度得分。

BM25算法的优点之一是可以处理不同长度的文档,并且在查询和文档中匹配的关键词出现的频率越高,得分越高。

然而,BM25算法也存在一些限制,例如对于一些特定的查询类型,可能会出现过多或过少的匹配。

在实际应用中,可以通过调整参数k和b来优化BM25算法的性能。

k 控制了词频对得分的影响程度,b控制了文档长度对得分的影响程度。

通常情况下,会通过对大量的文本数据进行实验和调整来选择最佳的参数。

总结起来,BM25算法是一种用于计算文本相似度的统计算法。

它基于查询词和文档词之间的匹配程度来计算相似度得分。

BM算法总结

BM算法总结

BM算法(全称Boyer-Moore Algorithm)是一种精确字符串匹配算法(只是一个启发式的字符串搜索算法)。

BM算法不同于KMP算法,采用从右向左比较的方法,同时引入了两种启发式Jump规则,即Bad-Character和Good-Suffix,来决定模板向右移动的步长。

BM算法的基本流程:文本串T(待匹配的字符串,长度n),模式串为P(用于去匹配的字符串模板,长度设为m)。

首先将T与P进行左对齐,然后进行从右向左比较(此时不移动模板和文本的相对位置,仅仅比较对齐位置上面是否相同,方向是右向左)。

若是某趟比较不匹配时,BM算法就采用两条启发式规则,即前面提到的Bad-Character和Good-Suffix,来计算模式串P向右移动的步长,直到整个匹配过程的结束。

1)Bad-characterBM 算法在上图中从右向左匹配中第一个字符就出现不一致的情况,此时需要采用两种情况来处理:a)如果T 中不匹配字符E 在模式P 中没有出现,那么我们很容易就能理解为E开始的m 长度的字符串不可能匹配到P(直观,无需解释),我们可以直接把P 跳过E,匹配后面的内容。

b)如果E 在模式P 中未进行匹配的字段中出现了,则以该字符E 进行对齐。

BM算法实现2)Good Suffix若发现某个字符不匹配的同时,已有部分字符匹配成功,则按如下两种情况进行:a)如果在P中位置t处已经匹配部分P’在P中某位置t’也出现,且位置t’的前一个字符与位置t的前一个字符不相同,则将P右移使t’对应t所在的位置。

b)如果P中任何位置已经匹配部分P’没有再出现,则找到与P’的后缀P’’相同的P的最长前缀x,向右移动P,使x对应刚才P’’后缀所在位置下面两个链接解释的很好:/sealyao/archive/2009/09/18/4568167.aspxhttp://www-igm.univ-mlv.fr/~lecroq/string/node14.html#SECTION00140void preBmBc(char *x, int m, int bmBc[]) //坏字符表预处理,x就是上文中的模式串P {int i; //注意:bmBc数组的下标是字符,而不是数字for (i = 0; i < ASIZE; ++i) //初始将所有ASIZE=256个字符都赋初值为模式串的长度m,bmBc[i] = m; //也就是说模式串中没出现的字符,相应的移动距离都为m for (i = 0; i < m - 1; ++i)bmBc[x[i]] = m - i - 1;}Suffixes[]数组的计算方法。

BM算法-专业文档

BM算法-专业文档

BM算法BM算法,即Boyer-Moore算法,是一种被广泛应用于字符串匹配的算法。

它由Robert S. Boyer和J Strother Moore于1977年提出,并在一些文本搜索和字符串匹配的应用中表现出优异的性能。

下面将对BM算法进行详细的介绍。

一、算法概述BM算法是一种自底向上的字符串匹配算法,它通过构建坏字符规则和好后缀规则来决定模式串的移动距离。

相比于朴素的字符串匹配算法,BM算法在匹配失败时能够根据模式串和文本串的已知信息进行跳跃,从而提高了匹配的效率。

二、坏字符规则坏字符规则是指当模式串与文本串的某个字符不匹配时,我们可以根据这个不匹配的字符来确定模式串应该向右移动的距离。

为了实现这个规则,我们需要预先构建一个坏字符表,其中记录了每个字符在模式串中最后一次出现的位置。

当发生不匹配时,我们可以直接将模式串向右移动到坏字符表中对应字符的位置。

三、好后缀规则好后缀规则是指当模式串与文本串的后缀部分匹配成功时,我们可以根据这个好后缀来确定模式串应该向右移动的距离。

为了实现这个规则,我们需要预先构建一个前缀表和后缀表,其中记录了每个前缀或后缀在模式串中第一次出现的位置。

当发生匹配时,我们可以根据前缀表和后缀表中的信息来确定模式串应该向右移动的距离。

四、算法步骤1.预处理阶段:构建坏字符表和前缀表、后缀表。

2.匹配阶段:从左到右依次比较模式串和文本串的字符。

3.如果发生不匹配:根据坏字符规则将模式串向右移动相应的距离。

4.如果匹配成功:根据好后缀规则将模式串向右移动相应的距离。

5.重复步骤2-4直到模式串移动到文本串的末尾位置。

五、算法性能分析BM算法的时间复杂度为O(n),其中n为文本串的长度。

在最好的情况下,BM 算法的时间复杂度可以达到O(n/m),其中m为模式串的长度。

相比于朴素的字符串匹配算法,BM算法在处理较长的文本串时具有更好的性能表现。

六、总结BM算法是一种经典的字符串匹配算法,它通过结合坏字符规则和好后缀规则来实现高效的字符串匹配。

bm25计算公式

bm25计算公式

bm25计算公式BM25 是一种用于信息检索和文本相似度计算的重要公式。

对于很多接触信息检索和数据分析的朋友来说,这个公式可不陌生。

咱先来说说 BM25 公式到底是啥。

它主要是用来评估一个文档(比如说一篇文章)对于一个给定查询(比如几个关键词)的相关性得分。

简单来讲,就是通过这个公式,能知道某个文档跟我们想要找的东西有多相关。

BM25 公式考虑了好多因素呢。

比如说文档中关键词出现的频率、文档的长度,还有整个语料库中关键词的普遍程度等等。

给您举个例子吧。

就说我之前在整理一堆历史文献的时候,想要找到跟某个特定历史事件相关的内容。

那这时候 BM25 公式就派上用场啦。

我把我关心的那些关键词设定好,然后用这个公式去计算每一篇文献跟我设定的关键词的相关性。

有的文献,虽然提到了这些关键词,但是频率很低,而且文档又特别长,那它的得分就不高,说明跟我想要的不太相关。

但有的文献,关键词出现频率恰当,文档长度也合适,得分就高,我一眼就能看出这可能就是我要找的关键内容。

在使用 BM25 公式的过程中,我还发现一些小窍门。

比如说,对于一些比较专业或者生僻的关键词,不能期望它们在文档中出现得太频繁,但一旦出现,权重就得给高一点。

而且啊,BM25 公式也不是万能的。

它虽然能给我们一个大致的相关性排序,但有时候也会有偏差。

比如一些含义相近但表述不同的内容,可能就会因为没有完全匹配上关键词而得分较低。

总之呢,BM25 公式是个很实用的工具,但也需要我们根据具体的情况灵活运用,才能更好地从海量的信息中找到我们真正需要的东西。

希望通过我上面这些不太专业但很实在的讲解,能让您对 BM25 计算公式有个初步的了解。

搜索引擎的3种核心算法

搜索引擎的3种核心算法
物理 量或优劣程度 ) 爿 ∈ 确 定 网 页排 名( Ra n k i n g )  ̄ ( j 高 低 。 今天 , 就 简单 介绍 外链 建 设 中 , 比 即 都 通 过 反 向链 接 的数 量 和 质 量 (
但 Hi l l T o p认 为 只 计 算 来 自 具 囱‘ 相 同主 较 有 名的 核 心 算 法 : P a g e R a n k算 法 、 Hi l l t o p算 法 以 及 D i r e c t 搜索结果的排序权重 。
法 认 为 从 网 页 A导 向 网 页 B 的 链 接 可 以 看 作 是 页 面 A 对 页
从 Hi l l t o p 算法过程可 见, 该 算 法 包括 两 个 主要 的 方 面 : 寻
找专家 和 目标排序 。通过对搜索引擎抓取的网页进 行预 处理 ,
找 出 专 家 页 面 。对 于 一 个 关 键 词 的 查 询 , 首 先 在 专家 中 查 找 ,
Hi t 算法 。
题 的相 关文档链 接对于搜索者的价值 会更大 。即 主题相关 网 页之间的链接对于权重计算的贡献 比主 题不相关的链接 价值
要 更 高 。在 1 9 9 9 — 2 0 0 0 年, 当这 个算 法被 B h a r a t与其 他 G o o g I e
人 员开发出来的时候 , 他 们称这种对主题有 影响的 档 为“ 专
计 算 机 与 网 络
外部 链 接 是 搜 索 引擎 ( E n go p算 法
高 低的重要指标 , 当用户在搜索框 中输入关键 ( 解释 : 比喻事
Hi l l T o p , 是 一项 搜 索 引擎 结 果 排 序的 专 利 ( 意为: 公 肝 的
于 一 个 查 询 主 题 来 说 最 好 的 专 家 指 向 的 贞面 专 家 也有 可 能

改进的BM25F评分算法在文献检索系统中的应用

改进的BM25F评分算法在文献检索系统中的应用

改进的BM25F评分算法在文献检索系统中的应用目录1 系统总体架构及数据准备 (1)1.1 系统总体架构 (1)1.2 数据准备 (2)2 搜索引擎的搭建过程 (4)2.1 索引的建立 (4)2.2 中文分词器的比较与选取 (5)2.3 评分算法的设计与实现 (6)2.3.1 BM25算法 (6)2.3.2 BM25F算法 (6)2.3.3 算法的编码实现 (8)3 项目特色 (12)3.1 考虑查询关键词之间的距离 (12)3.2 数据库表设计的优化 (13)3.3 定时增量索引 (14)4 系统实现 (16)4.1 开发环境 (16)4.2 搜索结果展开及分析 (16)5 总结 (20)摘要本文主要就改进的BM25F评分算法在论文检索中的实现与应用过程进行了介绍。

首先是数据集的建立过程,为了配合BM25F评分算法在结构化文档中的优势,检索对象设定为学术论文,基于万方数据库提供的文献资源通过爬虫建立了检索数据集;然后是搜索引擎搭建过程,索引使用的是倒排索引,在实现了BM25F算法之后,结合实际检索效果,从以下三个方面对系统进行了优化。

(1)对BM25F进行改进,将文档中查询关键字的紧邻距离作为影响评分的一个因素加入至BM25F评分算法中。

(2)优化了数据库设计,分别添加了各个域的长度字段,为各个区域长度的计算提供了便利,一定程度上提高了检索效率。

(3)实现了定时增量索引,在很大程度上节省了索引创建时的开销,同时保证了数据查询的实时性,以及系统数据的可扩展性。

关键词:爬虫;BM25;BM25F;紧邻距离;增量索引;1系统总体架构及数据准备我们改进了BM25F算法,把它用在了论文检索中,BM25F算法比较适用划分了区域的文档,如论文中的区域有标题,摘要,作者等区域,用这个算法来进行论文的检索就相当的合适。

1.1系统总体架构图1-1 系统架构图以上是我们这个系统的总体架构图,大致分成两块,第一块就是数据准备,即从网上把我们需要的数据用爬虫爬下来,从爬下来的html源代码解析提取出我们想要的字段,然后存储在数据库中。

BM25相关度算法

BM25相关度算法

BM25相关度算法
BM25算法是⼀种常见⽤来做相关度打分的公式,思路⽐较简单,主要就是计算⼀个query⾥⾯所有词和⽂档的相关度,然后在把分数做累加操作,⽽每个词的相关度分数主要还是受到tf/idf的影响。

公式如下:
R(qi,d)是每个词和⽂档的相关度值,其中qi代表每个词,d代表相关的⽂档,Wi是这个词的权重,然后所有词的乘积再做累加。

Wi可由外部设置,默认的话是idf值,公式如下,N是⽂档总数,n(qi)是包含该词的⽂档数,0.5是调教系数,避免n(qi)为0的情况,从这个公式可以看出N越⼤,n(qi)越⼩的花idf值越⼤,这也符合了"词的重要程度和其出现在总⽂档集合⾥的频率成反⽐"的思想,取个log是为了让idf 的值受N和n(qi)的影响更加平滑。

下⾯是R(qi,d)的公式,其中k1,k2,b都是调节因⼦,⼀般k1=2,k2=1,b=0.75,fi是词在⽂档中的次数,qfi代表词在查询语句⾥的次数,dl 是⽂档长度,avgdl是⽂档平均长度,可以看出如果其他因素⼀样dl越⼤,相关度越低,这个也符合结论,⾄于会除以⼀个avgdl,我想是拿本篇⽂档长度和整体⽂档长度⽔平做⽐较,以免单独取dl值时过⼤。

其中乘积的左边因数代表词在⽂档中的次数关系,乘积的右边因数代表词在查询语句中的次数关系,⼀般绝⼤多数情况,查询词在查询语句⾥⾯出现⼀次,所以qfi可以看成是1,⼜因为k2为1,所以右边因数其实就等于1,所以公式可化简为下⾯这样
⽽总公式化简后可得
影响BM25公式的因数有
1 idf,idf越⾼分数越⾼
2 tf tf越⾼分数越⾼
3 dl/avgdl 如果该⽂档长度在⽂档⽔平中越⾼则分数越低。

4 k1,b为分数的调节因⼦。

IDF与信息检索

IDF与信息检索

IDF与信息检索Baidu NLP 独写者摘要:IDF的概念如此简单,以致很多人会忽略其背后的理论,30多年后,IDF像病毒一样侵入了信息检索和自然语言处理的各个方面,其背后的经验和教训显然值得我们总结。

本文将讨论琼斯发现的IDF及其对信息检索发展的影响,涉及几位信息检索界享有盛名的先驱,并对其各自提出的信息检索模型及其与IDF之间的关系进行了简要而又饶有趣味的介绍。

Computer is too important to be left for men alone! (计算机是如此重要,因此不能把它只留给男人去做!)--Karen Sparck Jones很多人可能听说过这句话,却并不知道是剑桥大学计算机女科学家琼斯(Karen Sparck Jones,1935-2007)提出了IDF(Inverse Document Frequency)这一现在耳熟能详的统计概念。

1972年琼斯在《文献资料工作杂志》(Journal of Documentation)发表了一篇关于词语特殊性的统计解释及其检索应用的文章[1],从一个词语之于文档的区分性角度提出了一种新的衡量词语权重的方法,也就是我们现在常说的逆文档频次IDF,其可以由总文档数N除以包含该词语的文档数n,然后取对数得到(下面公式并非琼斯原文中的形式,做了适当变形):IDFi = log(N/ni)但是遗憾的是,琼斯当年不但没有进一步解释IDF的理论依据,也没有详细阐述如何使用IDF来衡量词语的权重,甚至没有提及其为什么使用对数函数,而不是其他函数形式,如更简单的形式n/N。

同年,文章发表后,在伦敦城市大学攻读博士学位的罗伯森(Stephen Robertson, 1946-)也有类似疑问,他写了封短信给杂志社提出了自己的看法,指出词语IDF和其在文档中的出现概率相关,取log 形式乃是基于概率计算上的便利,并指出查询中词语的组合越不常见,包含这些词语的文档和查询之间就越相关。

bm25算法 python 代码

bm25算法 python 代码

BM25算法及其在Python中的实现一、介绍BM25算法BM25算法是一种用于信息检索的概率模型,它被广泛应用于搜索引擎和文本检索系统中。

BM25算法通过考虑查询词在文档中的出现频率和文档长度等因素来对文档进行打分,从而实现对文档的相关性排序。

BM25算法在实际应用中表现出色,因此深受信息检索领域的研究者和从业者的青睐。

二、BM25算法的基本原理1. 词频对文档打分的影响BM25算法考虑了查询词在文档中的出现频率对文档相关性打分的影响。

当查询词在文档中出现的次数越多时,说明该文档可能与查询词相关度较高,因此需要给予更高的打分。

BM25算法通过对查询词的词频进行加权,从而实现对文档的相关性打分。

2. 文档长度对相关性打分的影响BM25算法还考虑了文档长度对文档相关性打分的影响。

一般来说,文档长度越长,其中出现的查询词的频率就越高。

BM25算法引入了文档长度对相关性打分的调整因子,从而在计算文档打分时考虑了文档的长度因素。

3. 总体打分的计算根据以上原理,BM25算法通过对文档中查询词的词频进行加权,并考虑文档长度对打分的调整因子,计算出文档的最终相关性打分。

具体的计算方法可以参考BM25算法的相关文献和资料。

三、BM25算法在Python中的实现1. 使用Python库实现BM25算法在Python中,可以使用第三方库来实现BM25算法。

可以使用`gensim`库中的`BM25`类来实现BM25算法。

通过该类,可以很方便地对文档集合进行BM25打分并进行相关性排序。

2. 自行实现BM25算法除了使用第三方库外,也可以自行编写BM25算法的Python代码。

BM25算法的原理相对简单,因此可以根据算法的基本原理来编写BM25算法的计算代码。

在实现BM25算法时,需要注意对查询词的词频进行加权、考虑文档长度对打分的调整因子,并最终计算出文档的相关性打分。

3. 性能优化在实际应用中,为了提高BM25算法的计算性能,可以进行一些性能优化的操作。

大数据的经典的四种算法

大数据的经典的四种算法

大数据的经典的四种算法大数据是指数据量巨大、种类繁多且变化速度快的数据集合。

为了高效地处理和分析大数据,需要使用特定的算法。

下面列举了大数据处理中经典的四种算法。

一、MapReduce算法MapReduce是一种分布式计算模型,用于处理大规模数据集。

它由两个阶段组成:Map阶段和Reduce阶段。

在Map阶段,原始数据集被映射为一系列键值对,然后经过分组和排序。

在Reduce阶段,对每个键值对进行聚合和计算,最终得到结果。

MapReduce算法具有良好的可扩展性,可以有效地处理大规模数据。

二、PageRank算法PageRank是一种用于评估网页重要性的算法,广泛应用于搜索引擎中。

它通过分析网页之间的链接关系,计算每个网页的重要性指数。

PageRank算法将网页排名问题转化为一个随机游走问题,通过迭代计算网页的重要性。

这个算法对处理大规模的网页数据非常高效。

三、K-means算法K-means是一种常用的聚类算法,用于将数据分为多个簇。

该算法将数据集划分为k个簇,并将每个数据点分配到最近的簇。

在初始阶段,随机选择k个中心点,然后迭代计算每个数据点与中心点的距离,并更新簇的中心点。

最终得到稳定的簇划分结果。

K-means 算法在大数据处理中具有较高的效率和可扩展性。

四、Apriori算法Apriori算法是一种用于挖掘关联规则的算法,常用于市场篮子分析等场景。

该算法通过扫描数据集,计算项集的支持度,并根据设定的最小支持度阈值,筛选出频繁项集。

然后,根据频繁项集构建关联规则,并计算规则的置信度。

Apriori算法通过迭代逐渐增加项集的大小,从而挖掘出频繁项集和关联规则。

以上四种算法在大数据处理中具有重要的作用。

MapReduce算法可用于分布式处理大规模数据;PageRank算法可用于评估网页的重要性;K-means算法可用于大规模数据的聚类分析;Apriori算法可用于挖掘大规模数据中的关联规则。

bm25算法得分区间

bm25算法得分区间

bm25算法得分区间(实用版)目录1.BM25 算法概述2.BM25 算法的得分区间3.BM25 算法的优缺点4.BM25 算法的应用实例正文【一、BM25 算法概述】BM25(Best Matching 25)算法是一种基于词频和逆文档频率的文档相似度计算算法,由 Roger B.Myers 在 1990 年提出。

BM25 算法主要应用于信息检索领域,用于衡量查询词与文档的相似度,从而为检索结果排序。

【二、BM25 算法的得分区间】BM25 算法的得分区间是基于查询词在文档中的出现次数、查询词的词频、文档中词语的逆文档频率等因素计算得出的。

具体得分区间的计算公式为:相似度 = (k * (k-1) * (k-2) *...* (k-n) * word_freq(q, d) * idf(q, d)) / (n * (n-1) * (n-2) *...* 2 * 1)其中,k 为查询词在文档中的出现次数,n 为文档中所有词语的数量,word_freq(q, d) 表示查询词在文档中的词频,idf(q, d) 表示查询词在文档中的逆文档频率。

【三、BM25 算法的优缺点】1.优点:BM25 算法具有较高的准确性和可靠性,能够较好地反映查询词与文档的相似度,从而为检索结果排序。

同时,BM25 算法计算简单,易于实现。

2.缺点:BM25 算法对稀疏词的处理能力较弱,当文档中出现频率较低的词语时,算法的准确性可能会受到影响。

此外,BM25 算法对于长尾词的检索效果也不理想。

【四、BM25 算法的应用实例】BM25 算法广泛应用于各种信息检索系统中,如 Lucene、Elasticsearch 等。

以 Elasticsearch 为例,用户可以利用 BM25 算法对文档进行相似度计算,从而实现对检索结果的排序。

总之,BM25 算法是一种在信息检索领域中具有广泛应用的文档相似度计算算法。

通过词频和逆文档频率的结合,BM25 算法能够较好地反映查询词与文档的相似度。

bm25 归一化分数

bm25 归一化分数

bm25 归一化分数
BM25是一种常用的文本检索算法,它基于词频和文档长度进行排名。

计算得到的分数通常需要进行归一化处理,以便于比较不同文档之间
的相关性。

归一化分数的目的是将分数映射到一个固定的范围,比如0到1之间。

这样可以方便地进行排序和比较。

常见的归一化方法包括将分数除以
最大分数、减去最小分数并除以分数范围等。

归一化分数的计算过程通常可以通过以下步骤实现:
1. 对每个文档,计算其BM25分数。

2. 记录最大分数和最小分数。

3. 对每个文档的分数进行归一化处理,例如将分数减去最小分数并除
以分数范围。

4. 得到归一化后的分数,可以用于排序和比较。

通过归一化分数,我们可以更准确地评估文档与查询的匹配程度,并
根据相关性进行排序,从而提高文本检索的效果。

信息检索——BM25算法详解

信息检索——BM25算法详解

信息检索——BM25算法详解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的公式可以看到,通过使⽤不同的语素分析⽅法、语素权重判定⽅法,以及语素与⽂档的相关性判定⽅法,我们可以衍⽣出不同的搜索相关性得分计算⽅法,这就为我们设计算法提供了较⼤的灵活性。

BM25算法

BM25算法

1什么是BM25摘录一段wikiBM25 is a bag-of-words retrieval function that ranks a set of documents based on the query terms appearing in each document, regardless of the inter-relationship between the query terms within a document (e.g., their relative proximity). It is not a single function, but actually a whole family of scoring functions, with slightly different components and parameters. One of the most prominent instantiations of the function is as follows.文档搜索中,并没有例如pr(google)这样的权威的评分作为排序的依据,所以有各种各样评分标准来评价我们搜索的相关度,而BM25就是其中比较著名的一种。

2怎么用BM25到底BM25评分还是个数学方法,我们先来看看它的数学表达式大概解释一下公式的意思对于公式1score(D,Q):就是我们所要计算的评分,即为【给定搜索内容】Q在【给定文档】D中的相关程度,分数越高表示相关度越高。

q:【给定搜索内容】Q中的语素,英文的话就是单词,中文的话需要先进行简单的切词操作。

f(qi,D):在【给定文档】D中,某一个语素qi出现的频率。

|D|:【给定文档】D长度。

avgdl:索引中所有文档长度。

另外两个参数K1和b用来调整精准度,一般情况下我们取K1=2,b=0.75。

公式2是用来计算公式1中IDF(qi)的值N:索引中文档的总数目。

bm25算法值范围

bm25算法值范围

bm25算法值范围
BM25算法是一种用于信息检索的评分算法,用于计算文档与查询的相关度。

它是基于词频和文档长度的统计模型,通过考虑词频和文档长度的影响来对文档进行排序。

BM25算法的值范围是0到无穷大,值越大表示文档与查询的相关度越高。

BM25算法是一种经典的信息检索算法,被广泛应用于搜索引擎中。

它的原理是通过计算查询词在文档中的出现频率和在整个文档集合中的出现频率来评估文档的相关度。

具体来说,BM25算法将查询词视为独立的,忽略了词序和词的关联性。

然后,根据查询词的出现频率和文档的长度来计算文档的得分,得分越高表示相关度越高。

BM25算法的核心公式是一个简化的计算公式,它包含了查询词的权重和文档的长度因子。

在计算过程中,需要设置一些参数,如平均文档长度和文档集合的大小。

这些参数可以根据具体的应用场景进行调整,以获得更好的检索效果。

BM25算法的优点是简单有效,适用于大规模文档集合的信息检索。

它考虑了词频和文档长度的影响,能够准确评估文档与查询的相关度。

同时,BM25算法还可以通过调整参数来适应不同的应用场景,提供更加个性化的搜索结果。

除了BM25算法,还有一些其他的信息检索算法,如TF-IDF算法、PageRank算法等。

它们各自有不同的特点和适用范围,可以根据具
体的需求选择合适的算法。

BM25算法是一种用于信息检索的评分算法,通过考虑词频和文档长度的影响来评估文档与查询的相关度。

它在搜索引擎中得到广泛应用,能够提供准确且个性化的搜索结果。

通过了解和理解BM25算法,我们可以更好地理解和使用搜索引擎,提高信息检索的效果和准确性。

es中match的bm25用法

es中match的bm25用法

es中match的bm25用法在Elasticsearch(ES)中,BM25是一种常用的文本检索算法,用于计算文档与查询之间的相关性得分。

BM25(Best Matching 25)是改进版的BM模型,主要用于搜索引擎和信息检索系统。

在ES中,你可以使用BM25作为默认的相似性算法,或者你可以在查询时显式地指定使用BM25。

以下是在ES中使用BM25相似性算法的一些示例:在Mapping中设置BM25作为默认相似性算法:当你创建索引时,可以在Mapping中将BM25设置为默认的相似性算法。

```jsonPUT /your_index{"settings": {"index": {"similarity": {"default": {"type": "BM25"}}}},"mappings": {"your_type": {// your field mappings here}}}```在查询时使用BM25相似性算法:在进行查询时,可以显式指定使用BM25相似性算法。

```jsonPOST /your_index/_search{"query": {"match": {"your_field": {"query": "your_query","operator": "and","type": "boolean","fuzziness": "AUTO"}}}}```在上述示例中,"type": "boolean" 表示使用BM25 相似性算法,而"fuzziness": "AUTO" 表示启用模糊匹配。

概率检索模型BM25系列-文档相关性检索的利器

概率检索模型BM25系列-文档相关性检索的利器

概率检索模型BM25系列-文档相关性检索的利器给定一个用户需求(query),如果搜索系统展示的搜索结果是根据文档和query的相关性由高向低排序的,那么这个搜索引擎是最优的。

在文档集合的基础上计算其相关性估计是其核心~概率排序原理以往的向量空间模型是将query和文档使用向量表示然后计算其内容相似性来进行相关性估计的,而概率检索模型是一种直接对用户需求进行相关性的建模方法,一个query进来,将所有的文档分为两类—- 相关文档、不相关文档 ,这样就转为了一个相关性的分类问题,赞!对于某个文档D D来说,P(R|D)P(R|D)表示该文档数据相关文档的概率,则P(NR|D)P(NR|D)表示该文档属于不相关文档的概率,如果query属于相关文档的概率大于不相关文档P(R|D)>P(RN|D)P(R|D)>P(RN|D),则认为这个文档是与用户查询相关相关的.现在使用贝叶斯公式将其转一下:P(R|D)>P(NR|D)<=>P(D|R)P(R)P(D)>P(D|NR)P(NR)P(D)<=>P(D|R)P(D|NR)>P( NR)P(R)P(R|D)>P(NR|D)<=>P(D|R)P(R)P(D)>P(D|NR)P(NR)P(D)<=>P(D|R)P(D|NR)>P(NR)P(R)在搜索排序过程中不需要真正的分类,只需要保证相关性由高到底排序即可,所以只需要P(D|R)P(D|NR)P(D|R)P(D|NR)降序即可,这样就最终转为计算P(D|R)P(D|R),P(D|NR)P(D|NR)的值即可.二元独立模型(BIM)词汇独立性假设:文档里面出现的词没有任何关联,这样一个文档的出现就可以转为各个单词出现概率的乘积(虽然这种假设有违实际,但是算起来简单的啊^_^)上述提到的文档D D表示为{1,0,1,0,1},用p i pi来表示第i i个单词在相关文档出现的概率,则在已知相关文档集合的情况下,观察到D D的概率为:P(D|R)=p1×(1−p2)×p3×(1−p4)×p5P(D|R)=p1×(1−p2)×p3×(1−p4)×p5第1,3,5表示这个单词在D D中出现,所以其贡献概率为p i pi,而第2,4这两个单词并没有在D D中出现,所以其贡献的概率为1−p i1−pi同理在不相关文档中观察到的概率为:P(D|R)=s1×(1−s2)×s3×(1−s4)×s5P(D|R)=s1×(1−s2)×s3×(1−s4)×s5最终得到的相关性概率估算为:P(D|R)P(D|NR)=p1×(1−p2)×p3×(1−p4)×p5s1×(1−s2)×s3×(1−s4)×s5P(D|R)P(D|NR)= p1×(1−p2)×p3×(1−p4)×p5s1×(1−s2)×s3×(1−s4)×s5现在将其推广之后可以有通用的式子:P(D|R)P(D|NR)=∏i:d i=1p i s i×∏i:d i=01−p i1−s i P(D|R)P(D|NR)=∏i:di =1pisi×∏i:di=01−pi1−sid i=1di=1表示在文档中出现的单词,d i=0di=0表示没在文档中出现的单词:在这里进一步对上述公式进行等价变换之后有:$$\begin{equation}\begin{split} \frac{P(D|R)}{P(D|NR)} &=\prod_{i:d_i=1}\frac{p_i}{s_i} \times \left ( \prod_{i:d_i=1} \frac{1-s_i}{1-p_i} \times\prod_{i:d_i=1} \frac{1-p_i}{1-s_i} \right ) \times \prod_{i:d_i=0} \frac{1-p_i}{1-s_i}\\&= \left ( \prod_{i:d_i=1} \frac{p_i}{s_i} \times \prod_{i:d_i=1} \frac{1-s_i}{1-p_i} \right ) \times \left ( \prod_{i:d_i=1} \frac{1-p_i}{1-s_i} \times \prod_{i:d_i=0} \frac{1-p_i}{1-s_i} \right ) \\&=\prod_{i:d_i=1} \frac{p_i(1-s_i)}{s_i(1-p_i)} \times \prod_i \frac{1-pi}{1-s_i} \\&=\prod_{i:d_i=1} \frac{p_i(1-s_i)}{s_i(1-p_i)}\end{split}\end{equation}$$其中上面式子第三步的第二部分∏i1−pi1−s i∏i1−pi1−si表示各个单词在所有文档中出现的概率,所以这个式子的值和具体文档并没有什么关系,在排序中不起作用,才可以简化到第4步.为了方便计算,将上述连乘公式取log log:log(P(D|R)P(D|NR))=∑i:d i=1log p i(1−s i)s i(1−p i)log(P(D|R)P(D|NR))=∑i:di=1logpi(1−si)si(1−pi)有了上述最终可计算的式子之后,我们就只需要统计文档D D中的各个单词在相关文档 / 不相关文档中出现的概率即可:BM25 模型在BIM模型的基础上考虑了查询词在Query以及Doc中的权重,并通过实验引入了一些经验参数。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

相对于TF-IDF 而言,在信息检索和文本挖掘领域,BM25算法则更具理论基础,而且是工程实践中当仁不让的重要基线(Baseline)算法。

BM25在20世纪70年代到80年代被提出,到目前为止已经过去二三十年了,但是这个算法依然在很多信息检索的任务中表现优异,是很多工程师首选的算法之一。

今天我就来谈谈BM25算法的历史、算法本身的核心概念以及BM25的一些重要变种,帮助你快速掌握这个信息检索和文本挖掘的利器。

BM25的历史
BM25,有时候全称是Okapi BM25,是由英国一批信息检索领域的计算机科学家开发的排序算法。

这里的“BM”是“最佳匹配”(Best Match)的简称。

BM25背后有两位著名的英国计算机科学家。

第一位叫斯蒂芬·罗伯逊(Stephen Robertson)。

斯蒂芬最早从剑桥大学数学系本科毕业,然后从城市大学(City University)获得硕士学位,之后从伦敦大学学院(University College London)获得博士学位。

斯蒂芬从1978年到1998年之间在城市大学任教。

1998年到2013年间在微软研究院剑桥实验室工作。

我们之前提到过,美国计算机协会ACM 现在每三年颁发一次“杰拉德·索尔顿奖”,用于表彰对信息检索技术有突出贡献的研究人员。

2000年这个奖项颁给斯蒂芬,奖励他在理论方面对信息检索的贡献。

BM25可谓斯蒂芬一生中最重要的成果。

另外一位重要的计算机科学家就是英国的卡伦·琼斯(Karen Sp?rck Jones)。

周一我们在TF-IDF 的文章中讲过。

卡伦也是剑桥大学博士毕业,并且毕生致力于信息检索技术的研究。

卡伦的最大贡献是发现IDF 以及对TF-IDF 的总结。

卡伦在1988年获得了第二届“杰拉德·索尔顿奖”。

BM25算法详解
现代BM25算法是用来计算某一个目标文档(Document)相对于一个查询关键字(Query)的“相关性”(Relevance)的流程。

通常情况下,BM25是“非监督学习”排序算法中的一个典型代表。

顾名思义,这里的“非监督”是指所有的文档相对于某一个查询关键字是否相关,这个信息是算法不知道的。

也就是说,算法本身无法简单地从数据中学习到相关性,而是根据某种经验法则来“猜测”相关的文档都有什么特质。

那么BM25是怎么定义的呢?我们先来看传统的BM25的定义。

一般来说,经典的BM25分为三个部分:
单词和目标文档的相关性
单词和查询关键词的相关性
单词的权重部分
这三个部分的乘积组成某一个单词的分数。

然后,整个文档相对于某个查询关键字的分数,就是所有查询关键字里所有单词分数的总和。

我们先从第一部分说起,即单词和目标文档的相关性。

这里相关性的基本思想依然是“词频”,也就是TF-IDF 里面TF 的部分。

词频就是单词在目标文档中出现的次数。

如果出现的次数比较多,一般就认为更相关。

和TF-IDF 不同,BM25最大的贡献之一就是挖掘出了词频和相关性之间的关系是非线性的,这是一个初看有违常理但细想又很有道理的洞察。

具体来说,每一个词对于文档相关性的分数不会超过一个特定的阈值。

这个阈值当然是动态的,根据文档本身会有调整。

这个特征就把BM25里的词频计算和一般的TF 区分开了。

也就是说,词频本身需要“标准化”(Normalization),要达到的效果是,某一个单词对最后分数的贡献不会随着词频的增加而无限增加。

那BM25里词频的标准化是怎么做的呢?就是某一个词的词频,除以这个词的词频加上一个权重。

这个权重包含两个超参数(Hyper-parameter),这些超参数后期是可以根据情况手动调整的。

这个做法在非监督的排序算法中很普遍。

同时,这个权重还包括两个重要信息:第一,当前文档的长度;第二,整个数据集所有文档的平均长度。

这几个因素混合在一起,我们就得到了一个新的词频公式,既保证单词相对于文档的相关度和这个单词的词频呈现某种正向关系,又根据文档的相对长
度,也就是原始长度和所有文档长度的一个比值关系,外加一些超参数,对词频进行了限制。

有了单词相对于文档的相关度计算公式作为基础,单词相对于查询关键字的相关度可以说是异曲同工。

首先,我们需要计算单词在查询关键字中的词频。

然后,对这个词频进行类似的标准化过程。

和文档的标准化过程唯一的区别,这里没有采用文档的长度。

当然,对于查询关键字来说,如果需要使用长度,也应该是使用查询关键字的长度和平均长度。

但是,根据BM25经典公式来说,这一部分并没有使用长度信息进行重新标准化。

接着我来谈谈最后一个部分,单词权重的细节,通常有两种选择。

第一种选择就是直接采用某种变形的IDF 来对单词加权。

一般来说,IDF 就是利用对数函数(Log 函数)对“文档频率”,也就是有多少文档包含某个单词信息进行变换。

这里回顾一下周一讲的内容,IDF 是“文档频率”的倒数,并且通过对数函数进行转换。

如果在这里使用IDF 的话,那么整个BM25就可以看作是一个某种意义下的TF-IDF,只不过TF 的部分是一个复杂的基于文档和查询关键字、有两个部分的词频函数。

第二种单词的权重选择叫作“罗伯逊-斯巴克-琼斯”权重
(Robertson-Sp?rck-Jones),简称RSJ 值,是由计算机科学家斯蒂芬·罗伯逊和卡伦·琼斯合作发现。

我们刚才讲过,这两位都是重要的信息检索学术权威。

这个权重其实就是一个更加复杂版本的IDF。

一个关键的区别是RSJ 值需要一个监督信息,就是要看文档对于某个查询关键字是否相关,而IDF 并不需要。

对比以上两种思路,在很多情况下,利用IDF 来直接进行单词权重的版本更加普遍。

如果在有监督信息的情况下,RSJ 值也不失为一个很好的选择。

通过这里简单的介绍,我们可以很容易地发现,BM25其实是一个经验公式。

这里面的每一个成分都是经过很多研究者的迭代而逐步发现的。

很多研究在理论上对BM25进行了建模,从“概率相关模型”(Probabilistic Relevance Model)入手,推导出BM25其实是对某一类概率相关模型的逼近。

对这一部分我在这里就不展开论述了。

需要你记住的是,BM25虽然是经验公式,但是在实际使用中经常表现出惊人的好效果。

因此,很有必要对这一类文档检索算法有所了解。

BM25算法变种
由于BM25的情况,一方面是经验公式,另一方面是某种理论模型的逼近,这样就出现了各式各样的BM25变种。

这里我仅仅介绍一些有代表性的扩展。

一个重要的扩展是BM25F,也就是在BM25的基础上再多个“域”(Field)文档上的计算。

这里“域”的概念可以理解成一个文档的多个方面。

比如,对于很多文档来说,文档包括标题、摘要和正文。

这些组成部分都可以认为是不同的“域”。

那么,如何结合不同的“域”,让文档的相关性能够统一到一个分数上就是BM25F 的核心内容。

具体来说,BM25F 对于BM25的扩展很直观。

那就是每一个单词对于文档的相关性是把各个域当做一个“小文档”的加权平均。

也就是说,我们先把每个域当做单独的文档,计算词频,进行标准化。

然后集合每个域的值,进行加权平均,再乘以词的权重(我们上面提到了,用IDF 或者是RSJ 值)。

另外一个重要的扩展就是把BM25和其他文档信息(非文字)结合起来。

这个想法是在“学习排序”(Learning To Rank)这一思路出现以前的一种普遍的做法,往往就是用线性加权的形式直接把各种信息相结合。

例如,在21世纪初期比较流行的做法是用BM25和PageRank 的线性结合来确定网页的相关度。

这里面,BM25是和某个查询关键字有联系的信息,而PageRank 则是一个网页的总体权重。

相关文档
最新文档