信息检索导论学习笔记 --第一章 布尔检索

信息检索(informagto retrieval) 是从大规模非结构化数据(通常是文本)的集合中找出满足用户信息需求的资料

文档document

所有文档组成“文档集“(collection), 有时也称“语料库”(corpus)

查询(query)

相关的(relevant)

正确率(precision): 返回结果中 真正和信息需求相关的文档所占比例

//给出的结果,多少是真正需求的

召回率(recall): 所有和信息需求真正相关的文档中被检索系统返回的百分比

//真正的信息需求有多少出现给出的结果

假如我们建立一个 词项-文档的矩阵:

                         doc1      doc2     doc3

hello                    1          0          1

caeasar               0           0          1

mercy                  0          1          0

假如我们有50w个词,100w的文档,那么矩阵的大小就是50w*100w, 太大了,而且这个矩阵很多项多是0,那么就是稀疏矩阵。

建立倒排索引(inverted index)来解决。

Image

如上图,左边称为词项字典(dictionary), 右边成倒排记录(posting), 记录该词项出现在哪些文档中

1.2 构建倒排索引

1 收集需要建立索引的文档

2 将文档换成一个个词条(token), 该过程成为(tokenization)

3 预处理,归一化词项

4对所有文档按照其中出现的词项来建立倒排索引,索引中包括一部词典和一个全体倒排记录表

如下图,先列出词,然后排序,然后生成倒排记录,同事记录文档频率(document frequency)

Image(1)

1.3 布尔查询

比如查询  brutus and calpurnia

Image(2)

也就是取交集。合并算法如下

Image(3)

利用这种排序方法,则需要对倒排记录表排序。

查询优化( query optimization)

从小到大依次进行处理,如果我们先合并两

个最短的倒排记录表,那么所有中间结果的大小都不会超过最短的倒排记录表。

对于任意的boolean查询,我们必须保存临时结果Image(4)

boolean查询的一些高级用法:

Image(5)

空格 表示或,&与, /s 同一个句子, /p同一个段落,/k k个词之内,等。可见布尔查询更适合专业人员。

和布尔检索模型相对的是排序检索模型或有序检索模型( ranked retrieval model)(也即给出排序的结果,现在的搜索模式)。 后者不是具有精确予以的逻辑表达式,而是采用一个或多个词构成自由文本查询(free text query) (也即更复杂)

按照逻辑AND OR的布尔查询会导致召回率与正确率的两个极端,但是很难达到均衡。

posted @ 2014-09-15 20:00 joey周琦 阅读(...) 评论(...) 编辑 收藏