搜索之BM25和BM25F模型

最近在优化文本相关性,使用到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是经验参数。

在第二部分中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在此基础上做了一些改进。

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

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

Integrating the Probabilistic Model BM25/BM25F into Lucene.

时间: 2024-11-06 11:19:24

搜索之BM25和BM25F模型的相关文章

phpcmsv9全站搜索,不限模型

phpcmsv9全站搜索,不限模型,今天又涨知识了.大家都知道,phpcms搜索时按照模型来搜索的,用了这个方法后,就可以全站搜索 简单修改一下v9默认的搜索功能,可以不按模型搜索全站内容 下面是被修改后的search模块中的index.php文件 <?php defined('IN_PHPCMS') or exit('No permission resources.'); pc_base::load_sys_class('form','',0); pc_base::load_sys_class

如何使用机器学习解决实际问题-以关键词相关性模型为例

本文以百度关键词搜索推荐工具字面相关性模型为基础,介绍一个机器学习任务的具体设计实现.包括目标的设定,训练数据准备,特征选择及筛选, 以及模型的训练及优化.该模型可扩展到语意相关性模型,搜索引擎相关性及LTR学习任务的设计实现.该模型的设计调研实现,也可以很容易移植解决其他包括语义相关性的问题 目标设定:提升关键词搜索相关性 作为一个搜索+推荐产品,百度关键词搜索推荐系统的产品形态是向凤巢用户推荐适合他业务的关键词.例如一个卖鲜花的广告主,他想在百度上做关键词搜索推广时,需要提交和他业务相关的关

搜索引擎的检索模型-查询与文档的相关度计算

1. 检索模型概述 搜索结果排序时搜索引擎最核心的部分,很大程度度上决定了搜索引擎的质量好坏及用户满意度.实际搜索结果排序的因子有很多,但最主要的两个因素是用户查询和网页内容的相关度,以及网页链接情况.这里我们主要总结网页内容和用户查询相关的内容. 判断网页内容是否与用户査询相关,这依赖于搜索引擎所来用的检索模型.检索模型是搜索引擎的理论基础,为量化相关性提供了一种数学模型,是对查询词和文档之间进行相似度计算的框架和方法.其本质就是相关度建模.如图所示,检索模型所在搜索引擎系统架构位置: 当然检

iOS插件详细之---ESJsonFormat-Xcode----将JSON格式化输出为模型的属性

Xcode插件将JSON格式化输出为模型的属性:ESJsonFormat-Xcode 一,将 JSON 格式化输出为模型的属性 写在之前的注意 JSON中的key对应的value为Null的话会格式化成NSString类型 格式化之前光标放在你需要添加属性的地方 RootClass需要自己手动创建,插件只负责RootClass里面的属性生成 生成的MJExtension 2.0框架中objectClassInArray方法(类方法) 怎么安装: 方式1:下载-Xcode打开-Command+B-

Allegro 反射仿真--IBIS模型转化

一.IBIS模型的获取 a) 直接找芯片供应商 b) 从网上下载 i.到Google网站直接搜索某个型号的IBIS模型: ii. 到器件厂商的官方网站下载: iii.从专门提供IBIS模型的网站搜索下载. c) 仿真器件的SPICE 模型或直接测量 二.IBIS模型的转化过程 将模型的IBIS格式转化为DML格式,可以使用Allegro自带的Model Integrity.一般有两种方式打开此软件: 1.在SPECCTRAQuest下,点击Tools->Model Integrity: 2.在A

深度学习在搜索业务中的探索与实践

本文根据美团高级技术专家翟艺涛在2018 QCon全球软件开发大会上的演讲内容整理而成,内容有修改. 引言 2018年12月31日,美团酒店单日入住间夜突破200万,再次创下行业的新纪录,而酒店搜索在其中起到了非常重要的作用.本文会首先介绍一下酒店搜索的业务特点,作为O2O搜索的一种,酒店搜索和传统的搜索排序相比存在很大的不同.第二部分介绍深度学习在酒店搜索NLP中的应用.第三部分会介绍深度排序模型在酒店搜索的演进路线,因为酒店业务的特点和历史原因,美团酒店搜索的模型演进路线可能跟大部分公司都不

达观数据搜索引擎排序实践

前言 随着互联网的深入发展,人类已然进入大数据时代.如何在浩瀚的数据海洋里高速有效的获取有价值的信息,正是促使大数据技术具备走向众多企业的潜力.搜索引擎作为获取信息的有效入口,已然经历了20多年的发展,并一直试图理解用户搜索意图以及提升搜索的精准性. Google是全球性的搜索引擎,看似简单的搜索框背后隐藏的是极其复杂的系统架构和搜索算法,其中排序(以下统称Ranking)的架构和算法更是关键部分.Google正是通过PageRank算法深刻改变搜索排序而一举击败众多竞争对手. Ranking是

Solr In Action 笔记(2) 之 评分机制(相似性计算)

Solr In Action 笔记(2) 之评分机制(相似性计算) 1 简述 <这就是搜索引擎>里面对相似性计算进行了简单的介绍. 内容的相似性计算由搜索引擎的检索模型建模,它是搜索引擎的理论基础,为量化相关性提供了一种数学模型,否则没法计算.当然检索模型理论研究存在理想化的隐含假设,即假设用户需求已经通过查询非常清晰明确地表达出来了,所以检索模型的任务不牵扯到对用户需求建模,但实际上这个和实际相差较远,即使相同的查询词,不同用户的需求目的可能差异很大,而检索模型对此无能为力.几种常见的检索模

Learning to Rank 简介

转自:http://www.cnblogs.com/kemaswill/archive/2013/06/01/3109497.html,感谢分享! 本文将对L2R做一个比较深入的介绍,主要参考了刘铁岩.李航等人的几篇相关文献[1,2,3],我们将围绕以下几点来介绍L2R:现有的排序模型,为什么需要使用机器学习的方法来进行排序,L2R特征的选取,L2R训练数据的获取,L2R训练和测试,L2R算法分类和简介,L2R效果评价等. 1.现有的排序模型 排序(Ranking)一直是信息检索的核心研究问题,