一、引子 BIM(二元假设模型)

最近在优化文本相关性,使用到BM25和BM25F模型,但是发现网络上关于BM25和BM25F模型的介绍比较少,在此总结一下,方便记忆,另一方面搜了一下相关的资料,发现比较少,写下来欢迎大家查阅。

介绍BM25模型首先要介绍二元独立模型BIM。

假设一:二元假设

所谓二元假设,类似于布尔模型的表示方法,一篇文章在由特征表示的时候,以特征“出现”和“不出现”两种情况来表示,也可以理解为相关不相关。

假设二:词汇独立性假设

所谓独立性假设,是指文档里出现的单词之间没有任何关联,任一个单词在文章中的分布率不依赖于另一个单词是否出现,这个假设明显与事实不符,但是为了简化计算,很多地方需要做出独立性假设,这种假设是普遍的。

在以上两个假设的前提下,二元独立模型即可以对两个因子P(D|R)和P(D|NR)进行估算(条件概率),举个简单的例子,文档D中五个单词的出现情况如下:{1,0,1,0,1} 0表示不出现,1表示出现。用Pi表示第i个单词在相关文档中出现的概率,在已知相关文档集合的情况下,观察到文档D的概率为:

对于因子P(D|NR),我们假设用Si表示第i个单词在在不相关文档集合中出现的概率,于是在已知不相关文档集合的情况下,观察到文档D的概率为:

于是我们可以得到下面的估算

可以将各个因子规划为两个部分,一部分是在文档D中出现的各个单词的概率乘积,另一部分是没在文档D中出现的各个单词的概率乘积,于是公式可以理解为下面的形式

对公式进行一下等价的变换,可得:

第一部分代表在文章中出现过的单词所计算得到的单词概率乘积,第二部分表示所有特征词计算得到单词概率乘积,它与具体的文档无关,所有文档该项的得分一致,所以在排序中不起作用,可以抹除掉。得到最终的估算公式:

为了方便计算,对上述公式两边取log,得到:

那么如何估算概率Si和Pi呢,如果给定用户查询,我们能确定哪些文档集合构成了相关文档集合,哪些文档构成了不相关文档集合,那么就可以用如下的数据对概率进行估算:

根据上表可以计算出Pi和Si的概率估值,为了避免log(0),对估值公式进行平滑操作,分子+0.5,分母+1.0

代入估值公式得到:

这个公式代表的含义就是,对于同时出现在查询Q和文档D中的单词,累加每个单词的估值结果就是文档D和查询Q的相关性度量,在预先不知道哪些文档相关哪些文档不相关的情况下,可以使用固定值代替,这种情况下该公式等价于向量空间模型(VSM)中的IDF因子,实际证明该模型的实际使用结果不好,但是它是BM25模型的基础。

二、BM25模型

BIM(二元假设模型)对于单词特征,只考虑单词是否在doc中出现过,并没有考虑单词本身的相关特征,BM25在BIM的基础上引入单词在查询中的权值,单词在doc中的权值,以及一些经验参数,所以BM25在实际应用中效果要远远好于BIM模型。

BM25由3部分组成,第一部分是BIM模型得分,上面也提到了,在一定的情况下该部分等价于IDF,第二部分是查询词在文档D中的权值,f是查询词在文档中的频率,K1和K是经验参数,第三部分是查询词自身的特征,qf是查询词在用户查询中的频率,但一般用户查询都比较短,qf一般是1,K2是经验参数,从上面的公式可以看出BM25是查询中单词的分值叠加得到,每个单词是一个个体,而整个文档被作为一个整体。

在第二部分中K因子代表了文档长度的考虑,dl是文档的长度,avdl是文档的平均长度,k1和b是调整参数,b为0时即不考虑文档长度的影响,经验表明b=0.75左右效果比较好。但是也要根据相应的场景进行调整。b越大对文档长度的惩罚越大,k1因子用于调整词频,极限情况下k1=0,则第二部分退化成1,及词频特征失效,可以证明k1越大词频的作用越大。

在我们不知道哪些文档相关,哪些文档不相关的情况下,将相关文档数R及包含查询词相关文档数r设为0,那么第一部分的BIM公式退化成:

就是IDF因子的定义,N是总文档数,n是查询词的tf信息,0.5是平滑因子。以上就是BM25的定义

三、BM25F

BM25F是典型BM25的改进算法,BM25在计算相关性时把文档当做整体来考虑,但随着搜索技术的发展,文档慢慢的被结构化数据所代替,没个文档都会被切分成多个独立的域,尤其是垂直化的搜索。例如网页有可能被切分成标题,内容,主题词等域,这些域对文章主题的贡献不能同等对待,所以权重就要有所偏重,BM25没有考虑这点,所以BM25F在此基础上做了一些改进,就是不再单单的将单词作为个体考虑,而且将文档也按照field划分为个体二考虑,所以BM25F是每个单词在各个field中分值的加权求和。

boost是相应域的权值,Lc是field的长度,AVLc是field的平均长度,Bc是调节因子。最后BM25F的最终值就是各个field分值的加权求和。

引用:张俊林《这就是搜索引擎》

Integrating the Probabilistic Model BM25/BM25F into Lucene.

搜索之BM25和BM25F模型相关推荐

  1. 不等距双杆模型_搜索中的深度匹配模型(下)

    由于知乎字数限制,单篇文章字数限制不超过5万字,这篇文章主要为上一篇的延续 前文链接: 搜索中的深度匹配模型 4.3 match function模型总结 5.搜索中query和doc的相关性匹配模型 ...

  2. 单个Transformer完成信息检索,谷歌用可微搜索索引打败双编码器模型

    选自arXiv 作者:Yi Tay等 机器之心编译 编辑:陈萍 谷歌提出基于 Transformer 的可微文本检索索引,明显优于双编码器模型等强大基线,并且还具有强大的泛化能力,在零样本设置中优于 ...

  3. python网格搜索核函数_机器学习笔记——模型调参利器 GridSearchCV(网格搜索)参数的说明...

    算法 数据结构 机器学习笔记--模型调参利器 GridSearchCV(网格搜索)参数的说明 GridSearchCV,它存在的意义就是自动调参,只要把参数输进去,就能给出最优化的结果和参数.但是这个 ...

  4. 推荐搜索炼丹笔记:双塔模型在Airbnb搜索排名中的应用

    作者:一元,公众号:炼丹笔记 Improving Deep Learning For Airbnb Search(KDD20) 本文是一篇偏实践的文章,不讲太多虚的,什么有效什么无效,您请细品! 将深 ...

  5. 谷歌搜索的灵魂!BERT模型的崛起与荣耀

    本文转载自 智东西 刷榜各NLP任务.超70种语言搜索,起底搜索帝国谷歌的"引擎工程师"BERT! 如果你在谷歌上搜索"如何在没有马路的山上停车",谷歌会告诉你 ...

  6. (宽度优先搜索)bfs(包含所有模型)

    持续更新中(点个赞吧) 首先,我们要了解什么是bfs: 宽度优先搜索算法(又称广度优先搜索)是最简便的图的搜索算法之一,这一算法也是很多重要的图的算法的原型. 其实bfs是盲目的搜索周围,知道搜到目的 ...

  7. android 模糊查询下拉菜单,android 模糊查询搜索框_基于心智模型,解析蜻蜓Fm「搜索」功能...

    本文以心智模型为理论依据,分析了蜻蜓Fm[搜索]功能的用户操作路径以及app设计. 最近在做搜索相关的改版设计工作,以下是我在体验现有搜索逻辑的情况下,产生的一些想法: 对于搜索这个功能,用户到底是怎 ...

  8. 概率检索模型:BIM+BM25+BM25F

    1. 概率排序原理 以往的向量空间模型是将query和文档使用向量表示然后计算其内容相似性来进行相关性估计的,而概率检索模型是一种直接对用户需求进行相关性的建模方法,一个query进来,将所有的文档分 ...

  9. 这就是搜索引擎——检索模型与搜索结果排序

    布尔模型 布尔模型是检索模型中最简单的一种,理论基础就是集合论. 用户查询一般使用"与或非"这些逻辑连接词,比如用户希望找到与苹果公司相关的信息,可以用如下的逻辑表达式查询:苹果A ...

最新文章

  1. 通过gdb core dump方法查看程序异常时的堆栈信息
  2. 企业网络推广——浅析企业网络推广怎样看待企业网站的制作
  3. Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划
  4. java的四种引用类型_你知道Java的四种引用类型吗?
  5. Redis集群客户端添加数据报错(error) CLUSTERDOWN The cluster is down
  6. react 引入轮播插件_React.js实现轮播图
  7. Android 广播接收器注册与注销源码分析
  8. 【转】windows下GSL的配置
  9. Centos下 为Firefox安装Flash插件
  10. iso12233测试方法_ISO12233图像分辨率测试卡的使用方法
  11. ASCLL码对照表02(可显示字符)
  12. 三款免费的直播推流软件介绍
  13. html 画xyz坐标,xyz坐标轴怎么画要图谢谢?
  14. 整理备忘:【已解决】VMware虚拟机提示“锁定文件失败 打不开磁盘”
  15. 特聘专家朱嘉明:2022,数字经济迈入历史新阶段
  16. MySQL--局域网、外网访问MySQL
  17. 对this.name=name的理解
  18. 用STM32F103完成对SD卡的数据读取
  19. 详细揭秘微信小程序框架技术——Mpx
  20. 『Java』文件与IO流

热门文章

  1. 用户画像(Persona )简介
  2. 程序员视角下对ChatGPT热潮的思考
  3. git 本地仓添加多个远端仓库
  4. 学python编程,自学好还是应该报个培训班呢?
  5. 基于STM32的照片查看器课程报告
  6. MySQL-备份恢复
  7. php7 fileinfo,PHP7.3开启fileinfo扩展
  8. linux与linux驱动
  9. 编写程序计算两个矩阵之和。
  10. 标准日本语初级 语法整理