zoukankan      html  css  js  c++  java
  • 《搜索引擎信息检索实践》7.2.1 分类应用与检索/BM25检索模型

    1.简介

    • 在所有的二元检索模型中,文档会被归为两类,相关文档和不相关文档。我们的任务是确定新来的文档是属于相关文档还是不相关文档。
    • 如何判断相关与否,我们认为新来的文档如果属于相关文档的概率大于不相关文档,则归于相关文档,否则属于不相关文档

    image //所谓的贝叶斯分类器 bayes classifer, R relevant , D document

    image //贝叶斯公式

    image

    所以 我们判断是相关即要求 image

    image

    • 这个后面会引出BM25模型

    2.如何计算P(D|R)

    • 采用二元模型,我们用一个文档中所有词的出现概率来计算P(D|R),我们不考虑词的位置,也不考虑出现次数,并且我们假设采用1gram模型,也即A词出现概率与B词无关,事实上一般并不是这样。比如如果出现乔丹那么篮球这个词出现的可能性就很大。
    • 文档在这个模型中表示为单词(0,1)向量,即文本中某个单词存在或者不存在,假如我们有5个单词被索引,那么我们这个文档可能被表示为(1,0,0,1,1),表示我们的文档中有单词1,4,5,不包含单词2,3。用p(i)表示第i个单词在相关文档集中出现的概率,则P(D|R)= p(1) * (1 – p(2)) * (1 – p(3)) * p(4) * p(5), 相应的用s(i)表示第i个单词在不相关文档集中出现的概率。注意在stanford 课件中提到还有另外一种模型,采用的是单词+位置,表示成某个单词在某个位置出现的概率。

    image

    image image image

            注意到式子最右边是对应所有的索引单词,与特定文本无关,所以这个值对于所有的文本都是相同的可以被忽略,连乘计算复杂我们可以用log转换为连加,最终可以表示为

    image

    • 为了计算上式我们做了如下假定
      1. 一直没有提到用户查询词,它到哪里去了呢?这里我们认为查询词给出了相关文档的信息。我们假定不在query中的单词在相关于不相关文档中的概率是相同的。因此我们只需要考虑在query中的词即可,不在的词不会对结果产生影响,log(1) = 0。
      2. 如果我们没有其它的反馈来支持我们的相关文档信息,那么我们假定单词i在相关文档中的概率为0.5。
      3. 大部分文档是无关文档 NR 近似等于 N,我们认为单词在不相关文档中出现的概率即为它在所有文档中出现的概率,也就是它在整个文档集合中出现的次数n(i) (注意每个文档对n(i)的贡献是0或者1),除以整个文档集合数目N。

        image

        (呃,看出来了吧,整了半天就是类似idf的东西,就是说文档中包含查询词中的词越多,分值越高,而每个查询词带来的贡献量是按照idf度量的。。。)

      4. 如果我们有反馈信息呢,即我们知道有R个相关文档N-R个不相关文档,其中单词i在所有文档中有n(i)个文档包含它,没出现它的文档有N-n(i)个,R个相关文档中有r(i)个文档包含单词i,有R-r(i)个相关文档不包含i,在N-R个不相关文档中有n(i) – r(i)个包含单词i,N-R-n(i) + r(i)个文档不包含单词i。于是p(i) = r(i) / R, s(i) = (n(i) – r(i))/(N – R),为了避免不出现单词带来0概率情况,比如r(i)等于0,平衡之我们采用分子+0.5,分母+1, p(i) =( r(i) + 0.5 )/( R + 1 )  ,   s(i) = (n(i) – r(i) + 0.5)/(N – R + 1)。
      5. 代入公式我们最终得到,注意这个公式如果无相关文档R == 0, r(i) == 0,就和3公式一致。//注打不出+  // 表示 + :( ,注意query可以被扩展,利用反馈的相关文档中的关键词。
      • image
      1. 这个公式效果怎么样?很差,因为类似只考虑idf,而不考虑tf,但是这个公式是BM25算法的基础。

        

             

     

           

          

  • 相关阅读:
    vscode前端必备插件-提高开发效率-起飞-图文-简介
    Python使用yagmail超简单发送邮件、keyring读取密钥、schedule定时任务、imbox操作
    Django中自定义管理类
    Diango中的模型成员
    Django中的Q查询
    【Windows】垃圾清理
    【RabbitMQ】三、交换器和队列
    对酒店房间自助售货机的支付漏洞挖掘
    记录第二次“梅花三弄”的渗透之旅
    Web渗透测试:信息收集篇
  • 原文地址:https://www.cnblogs.com/rocketfan/p/1770919.html
Copyright © 2011-2022 走看看