zoukankan      html  css  js  c++  java
  • 信息检索导论学习笔记(1)

    布尔检索

    信息检索概述

    信息检索:是从大规模非结构化数据(通常是文本)的集合(通常保存在计算机上)中找出满足用户信息需求的资料(通常是文档)的过程。

    Information Retrieval (IR) is finding material (usually documents) of an unstructured nature (usually text) that satisfies an information need from within large collections (usually stored on computers).

     

    倒排索引

    顺序扫描:这种线性扫描就是一种最简单的计算机文档检索方式。这个过程通常称为 grepping,它来自于Unix下的一个文本扫描命令grep。

    顺序扫描的不足:

    • 速度超慢(特别是大型文档集)
    • 有时我们需要更灵活的匹配方式。比如,在 grep 命令下不能支持诸如 Romans NEAR countrymen之类的查询,这里的 NEAR操作符的定义可能为“5个词之内” 或者“同一句子中”。
    • 不支持检索结果的排序(即只返回较好的结果) 

    词项-文档(term-doc)的关联矩阵(数学建模)

    Image(4)

    词项—文档关联矩阵,其中每行表示一个词,每列表示一个剧本。当词t在剧本d中存在时,矩阵元素(t,d)的值为 1,否则为 0

    为响应查询 Brutus AND Caesar AND NOT Calpurnia,我们分别取出 Brutus、Caesar 及Calpumia对应的行向量,并对 Calpumia 对应的向量求反,然后进行基于位的与操作,得到: 110100 AND 110111 AND 101111 = 100100 

     

    词项-文档(term-doc)的关联矩阵高度稀疏,仅仅保存非零的位置明显更好

    倒排索引的构建

    • 对每个词项t, 记录所有包含t的文档,建立词条序列<词条,docID>二元组
    • 对词项、文档排序。按词项排序,然后每个词项按docID排序
    • 合并词项,并常记录文档频率df(对每个词项t, 记录所有包含t的文档数目)

    Image(1)

     

    布尔查询处理

    and查询的处理

    比如说,我们要寻找既包含字符串“lucene”又包含字符串“solr”的文档,我们只需要以下几步:
    1. 取出包含字符串“lucene”的倒排记录表。
    2. 取出包含字符串“solr”的倒排记录表。
    3. 通过合并两个倒排记录表,找出既包含“lucene”又包含“solr”的文档。

    Image(2)

    O(N)时间复杂度简单合并实现(关键原因: 倒排记录表按照docID排序)

    image  

     

     

    通用的查询优化策略  (词典中保存文档频率df的一个充分理由)

    (madding OR crowd) AND (ignoble OR strife) AND (killed OR slain)

    • 每个布尔表达式都能转换成上述形式(合取范式)
    • 获得每个词项的df
    • (保守)通过将词项的df相加,估计每个OR表达式对应的倒排记录表的大小
    • 按照上述估计从小到大依次处理每个OR表达式
    • 反例:[1,2,3,4] and [1,2,3,4] and [5,6,7,8,9]      4+4>4

    布尔逻辑的转换(数学知识)

    (范式存在定理)任一命题公式都存在着与之等值的析取范式和合取范式

    即任何布尔查询逻辑表达式都能转换为合取范式

    这种变换基于了关于逻辑等价的规则: 

    • 双重否定律
    • 德·摩根定律:非(P 且 Q)=(非 P)或(非 Q)      非(P 或 Q)=(非 P)且(非 Q)
    • 分配律

    转换例子:

    NOT (B OR C)   =    (NOT B) AND (NOT C)

    (A AND B) OR C = (A OR C) AND (B OR C)

     

    布尔检索的优缺点

    优点:构建简单、常用

    缺点:

    1.布尔查询构建复杂,不适合普通用户。构建不当,检索结果过多或者过少

    2.没有充分利用词项在文档中的词项频率(term frequency, tf)信息

    3.不能对检索结果进行排序

    作者:God bless you
    本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    pointnet++之classification/train.py
    pointnet++的pytorch实现
    xavier初始化的简单推导
    z+f数据解析
    ubuntu安装dia
    卷积,reLu,池化的意义
    Split
    .net程序调试一:快速定位异常
    Memcached (第一篇)
    System.Web.Caching.Cache类 缓存 各种缓存依赖
  • 原文地址:https://www.cnblogs.com/god_bless_you/p/2631975.html
Copyright © 2011-2022 走看看