从Lucene到Elasticsearch:全文检索实战之信息检索模型

经常使用术语::算法

 

分词算法::api

  • 词典匹配分词法
    • 与机器字典词条匹配
    • 包括:
      • 正向最大匹配
      • 逆向最大匹配
      • 最小切分(一句话切的词数最小)
  • 语义理解分词法
    • 目前中文分词没达到这种级别
  • 词频统计分词法
    • 相邻的字搭配出现的频率越高,越有多是个词
    • 不须要切分词典
    • 高频共同出现的两个字有的也不是一个词,须要专门处理以提升精度
    • 应与字典分词结合使用
    • 能够很好的解决新词未被收录词典的问题

倒排索引机器学习

  • 反向索引

布尔检索模型学习

  • 布尔运算符链接各个检索词
  • 优先级:NOT>AND>OR
    • AND
    • OR
    • NOT

单词-文档矩阵3d

  • 结果是0101:表明文档2 和文档4 为查询结果

布尔运算模型优势:blog

  1. 符合人们思惟
  2. 表达式直观清晰
  3. 方便扩检、缩检
  4. 易于计算机实现

布尔运算模型缺点:排序

  1. 仅仅基于0、1二元判断标准
    • 不能进行关键词重要性排序
  2. 没有反应语义含义
    • 不少用户想查询的东西很难用表达式表达
  3. 彻底匹配致使太少的结果被返回
    • 没有加权的概念,容易出现漏检

tf-idf 权重计算索引

  • tf-idf 叫词频-逆文档频率
  • 词项(item)的重要性由:
    • 在文档中出现的频率正相关
    • 在文档集中出现的次数反相关
  • lucene 采起的计算词频标准化的方法:
  • df 表明文档集中出现词项的文档数量
      • + 1 是由于分母不能为零
  • 词项权重::
  • 一个文档就能够表示成是 n 维词项向量

向量空间模型::文档

  • 向量求余弦的方法计算类似性
  • 余弦类似性理论:
  • Lucene 的评分机制更加复杂:
    • 上述公式总体依然是按照tf-idf 和向量空间模型的类似性计算

几率检索模型::数学

  • 从几率排序原理推导而来
  • 基本思想:
    • 给定一个查询,返回结果是按照与查询语句相关性得分排序的
  • 好比:BM25模型(best match 25)
    • 最成功的几率检索模型
  • 贝叶斯决策理论
    • 几率检索模型的数学基础
    • 在机器学习、天然语言处理等领域普遍应用
    • 海量文本数据分类:
      • 好比垃圾邮件甄选、过滤
    • 核心思想:选择高几率对应的类别

文档D,P(R|D)属于相关文档集的几率、P(NR|D) 不属于相关文档集的几率

  • 由贝叶斯公式计算:
  • 推导得出公式:

二值独立模型::

  • 词项的独立性假设(假设每一个词都是独立出现的
  • 文档频率转换成词项几率的乘积
  • 推导出公式::
      • Pi 表示第i 个词项出如今文档中的几率
      • Si 表示第i 个词项在不相关文档集中出现的几率
      • Di = 1 表示单词在文档出现
      • Di = 0 表示单词在文档不出现
    • 最后是计算log 值,作一个平滑处理不影响结果 大小顺序
      • 分子分母 加上常数,避开log(0)
  • 最后公式::

Okapi BM25 模型::

  • 二值独立模型,仅仅考虑了词项出现与否,没有考虑单词的权重,实际效果不理想
  • BM25 进行了改进,考虑进去了:
    • idf 因子、文档长度、查询词频等因素

BM25F ::

  •  Okapi BM25 仅仅是把文档当作总体考虑
  • 没有考虑不一样区域的权重差别
    • 好比网页,标题、主题词、摘要、内容权重是不同的

相关文章
相关标签/搜索