概率检索模型:BIM+BM25+BM25F
1. 概率排序原理
以往的向量空间模型
是将query
和文档使用向量表示然后计算其内容相似性来进行相关性估计的,而概率检索模型
是一种直接对用户需求进行相关性的建模方法,一个query
进来,将所有的文档分为两类 -- 相关文档
、不相关文档,
这样就转为了一个相关性的分类问题。
对于某个文档D来说,P(R|D)表示该文档数据相关文档的概率,则P(NR|D)表示该文档属于不相关文档的概率,如果query
属于相关文档的概率大于不相关文档P(R|D)>P(NR|D),则认为这个文档是与用户查询相关相关的。
现在使用贝叶斯公式将其转一下:
在搜索排序过程中不需要真正的分类,只需要保证相关性由高到底排序即可,所以只需要P(D|R) / P(D|NR)降序即可,
这样就最终转为计算P(D|R),P(D|NR)的值即可。
2. 二元独立模型(BIM)
为了能够使得上述两个计算因子可行,二元独立模型做出了两个假设:
1. 二元假设
类似于布尔模型中的文档表示方法,一篇文档在由特征(或者单词)进行表示的时候,以特征(或者单词)出现和不出现两种情况来表示,不考虑词频等其他因素。
2. 词汇独立性假设
指文档里出现的单词之间没有任何关联,任意一个单词在文档的分布概率不依赖于其他单词是否出现。因为词汇之间没有关联,所以可以将文档概率转换为单词概率的乘积。
上述提到的文档D表示为{1,0,1,0,1}
,用pi来表示第i个单词在相关文档出现的概率,则在已知相关文档
集合的情况下,观察到D的概率为:
第1,3,5
表示这个单词在D中出现,所以其贡献概率为pi,而第2,4
这两个单词并没有在D中出现,所以其贡献的概率为1−pi。
同理在不相关文档
中观察到的概率为:
最终得到的相关性概率估算为:
现在将其推广之后可以有通用的式子:
di=1表示在文档中出现的单词,di=0表示没在文档中出现的单词。
在这里进一步对上述公式进行等价变换之后有:
其中上面式子第三步的第二部分表示各个单词在所有文档中出现的概率,所以这个式子的值和具体文档并没有什么关系,在排序中不起作用,才可以简化到第4步。
为了方便计算,将上述连乘公式取log:
有了上述最终可计算的式子之后,我们就只需要统计文档D中的各个单词在相关文档
/不相关文档
中出现的概率即可:
上面的表格表示各个单词在文档集合中的相关文档
/不相关文档
出现数量,同时为了避免log(0)出现,加上平滑之后可以计算得到:
则最终可以得到如下公式:
其代表的含义是:对于同时出现在用户查询Q和文档D中的单词,累加每个单词的估值,其和就是文档D和查询的相关性度量。
在不确定哪些文档是相关的,哪些文档是不相关的的时候,可以给公式的估算因子直接赋予固定值,则该公式将会退化为IDF因子。
3. BM25模型
BIM模型基于二元独立假设推导而出,即对于单词特征,只考虑是否在文档中出现过,而不考虑单词的权值。BM25模型在BIM模型的基础上,考虑了单词在查询中的权值及单词在文档中的权值,拟合出综合上述考虑因素的公式,并通过实验引入一些经验参数。
BM25模型的具体计算公式如下所示:
上面的式子中:
- 第1个组成部分即为上一小节的二元独立模型BIM计算得分,如果赋予一些默认值的话,等价于IDF因子的作用。
- 第2个组成部分是查询词在文档D中的权值,其中fi代表了单词在文档D中的词频,K因子代表了对文档长度的考虑,其计算公式为
- k1为经验参数,作用是对查询词在文档中的词频进行调节。如果设为0,则第2部分整体变为1,即不考虑词频的因素,退化成了BIM模型;如果设为较大值,则第2部分计算因子基本与词频fi保持线性增长,即放大了词频的权值。根据经验,一般讲k1设置为1.2。
- b为调节因子,将b设为0时,文档长度因素将不起作用,经验表明一般b=0.75。
- dl代表当前文档D的长度。
- avdl代表文档集合中所有文档的平均长度。
- 第3个组成部分是查询词自身的权值,qfi表示查询词在用户查询中的词频,如果查询较短小的话,这个值一般是1,k2也为调节因子,是针对查询中的词频进行调节,因为查询往往很短,所以不同查询词的词频都很小,词频之间差异不大,为了放大这部分的差异,k2一般取值为
0~1000。
综合来看,BM25模型计算公式其实融合了4个考虑因素:IDF因子,文档长度因子,文档词频,和查询词频。并对3个自由调节因子(k1,k2,b)进行权值的调整。
例子:
假设当前以“乔布斯 IPAD2”
这个查询词为例,来计算在某文档D中BM25相关性
的值,由于不知道文档集中相关与不相关的分类,所以这里直接将相关文档个数r置为0,则将得到的BIM
因子为:
其他数值假定如下:
- 文档的集合总数:N=100000
- 包含
乔布斯
的文档个数为:n乔布斯=1000 - 包含
IPAD2
的文档个数为:nIPAD2=100 - 文档D中出现
乔布斯
的词频为:f乔布斯=8 - 文档DD中出现
IPAD2
的词频为:fIPAD2=8 - 查询词频均为:qfi=1
- 调节因子k1=1.2k
- 调节因子k2=200
- 调节因子b=0.75
- 设文档D的长度为平均长度的1.5倍(dl/avdl=1.5),即K=1.2×(0.25+0.75×1.5)=1.65
则最终可以计算到的BM25
结果为:
每个文档按上述公式计算得到相关性排序即可。
4. BM25F模型
在BM25
模型中,文档被当做一个整体进行进行词频的统计,而忽视了不同区域的重要性,BM25F
模型正是抓住了这点进行了相应的改进。
BM25F
模型在计算相关性时候,会对文档分割成不同的域来进行加权统计,非常适用于网页搜索,因为在一个网页有标题信息
、meta信息
、页面内容信息
等,而标题信息
无疑是最重要的,其次是meta信息
,最后才是网页内容
,BM25F
在计算相关性的,会将网页分为不用的区域,在各个区域分别统计自己的词频。
所以BM25F
模型的计算公式为:
BM25F
的第1部分还是BIM
的值。
其中与BM25
主要的差别体现在因子上,它是单词i在各个区域不同的得分,计算公式如下:
上面的公式表示:
- 文档D来个不同的u个域
- 各个域对应的权重为Wk
- fui为第i个单词在各个域中的 fui / Bu 的加权和
- fui表示词频
- Bu表示各个域的长度情况
- ulu为实际域的实际长度,uvulu表示域的平均长度
- bu则为各个域长度的调节因子
转载于:https://www.cnblogs.com/bentuwuying/p/6730891.html
概率检索模型:BIM+BM25+BM25F相关推荐
- [转]搜索引擎的文档相关性计算和检索模型(BM25/TF-IDF)
搜索引擎的检索模型-查询与文档的相关度计算 1. 检索模型概述 搜索结果排序时搜索引擎最核心的部分,很大程度度上决定了搜索引擎的质量好坏及用户满意度.实际搜索结果排序的因子有很多,但最主要的两个因素是 ...
- 概率检索模型+模糊k近邻+粒子群优化算法(PSO)
1. 概率检索模型 文档属于"相关"类的概率与属于"不相关"类的概率的比值(也叫"优势比"). 显然,这个比值越大,代表该文档与查询的相关度 ...
- 【信息检索】文档评分和概率检索模型
(1). 用Java语言或其他常用语言计算附件"HW4_1.txt"中的80个英文文档(每行表示一个document,文档编号1~80)两两之间的相似度值,并据此为每个文档返回相似 ...
- 搜索引擎技术 —— 检索模型
文章目录 内容相似性计算框架 检索模型的评价 检索模型 布尔模型 向量空间模型 文档表示 相似性计算 特征权重计算 TF词频信息计算 IDF逆文档频率计算 TF*IDF框架 概率检索模型 二元独立模型 ...
- 这就是搜索引擎——检索模型与搜索结果排序
布尔模型 布尔模型是检索模型中最简单的一种,理论基础就是集合论. 用户查询一般使用"与或非"这些逻辑连接词,比如用户希望找到与苹果公司相关的信息,可以用如下的逻辑表达式查询:苹果A ...
- 经典检索算法:BM25算法
bm25 是什么? bm25 是一种用来评价搜索词和文档之间相关性的算法,它是一种基于概率检索模型提出的算法,再用简单的话来描述下bm25算法:我们有一个query和一批文档Ds,现在要计算query ...
- 搜索引擎的检索模型-查询与文档的相关度计算
1. 检索模型概述 搜索结果排序时搜索引擎最核心的部分,很大程度度上决定了搜索引擎的质量好坏及用户满意度.实际搜索结果排序的因子有很多,但最主要的两个因素是用户查询和网页内容的相关度,以及网页链接情况 ...
- 布尔文献检索模型简介
在没有网络的时候,手头能访问的信息量太少是个问题.现在有了网络,怎么在海量的数据中找到自己需要的信息是另一个头疼的问题.现在全世界有超过 5 亿个网站,存在大量的文献数据库,即使一个比较生僻的关键字, ...
- 《搜索引擎-信息检索实践》7.2.1 分类应用与检索/BM25检索模型
1.简介 在所有的二元检索模型中,文档会被归为两类,相关文档和不相关文档.我们的任务是确定新来的文档是属于相关文档还是不相关文档. 如何判断相关与否,我们认为新来的文档如果属于相关文档的概率大于不相关 ...
最新文章
- AspectJ切入点语法详解
- seL4 microkernel学习资料
- vue 引用 vue-resource步骤 (遇错排解)
- c++Insertion Sort插入排序的实现算法(附完整源码)
- reserve和resize - 力为的技术博客 - C++博客
- 深入理解脚本化CSS系列第二篇——查询计算样式
- 数据结构——二叉搜索树的C语言实现
- EasyUI-在行内进行表格的增删改操作
- 快逸报表多数据源解决办法以及项目多数据源切换方法
- 光端机和无缝带拼接混合矩阵切换器的配搭应用-某市户外广告投屏解决
- UVALIVE 2678
- 深度解析dubbo源码系列
- 有关海盗湾墙外世界网站收藏
- VSCode安装及配置
- 7.5 - 防火墙 7.6 - 安全协议
- 专访丁奇:阿里云即将开源AliSQL,针对秒杀优化
- Python list列表方法使用总结及拓展延伸
- FinancesOnline 2022/2023 10大IT趋势预测
- IBM开售云计算软件开发环境 PayPal抢先使用(每日关注2010.3.18)
- 关于毕业论文选题的问题
热门文章
- html(3)标签(2)
- CVE-2019-8660 iMessage 漏洞复现
- chart绑定mysql数据源_MSChart图表之Chart组件 学习一篇(5个主要属性+数据源绑定)...
- linux vi 命令大全
- CPP中的this指针
- java vtd-xml_在java中使用vtd-xml获取xml中的属性文本
- one thread one loop 思想
- [转]ROS2 源码解析与实践 - Node
- [BUUCTF-pwn]——not_the_same_3dsctf_2016
- JAVA实现SFTP实例(JSCH)