信息检索导论学习笔记(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.不能对检索结果进行排序

posted on 2012-08-10 15:35  God bless you  阅读(3752)  评论(1编辑  收藏  举报

导航