第一章——布尔检索
1.1 基本概念
信息检索:信息检索是从大规模非结构化数据(通常是文本)的集合(通常保存在计算机上)中找出满足用户信息需求的资料(通常是文档)的过程。
非结构化数据(unstructured data):指的是那些没有清晰、明显语义结构的数据,而计算机不易处理这类数据。
半结构化数据(semistructured data):有一些文本无明显语义的结构,但其仍然具有例如标题、段落、脚注等结构,信息检索往往也支持这种半结构化数据的搜索。
聚类(clustering):聚类是一种基于文档的内容进行自动聚团的任务。
分类(classification):分类是一种将每篇文档分到一个或者多个类别的任务。
信息检索按照处理数据的规模区分三个级别:Web搜索(Web search)、个人信息检索(personal information retrieval)、面向企业机构和行业领域的搜索(domain-specific search)。
线性扫描:线性扫描就是将文本从头到尾扫描一遍,并且在扫描中还可以通过使用正则表达式来支持通配符查找,这是一种最简单的文档检索方式。这个过程通常称为grepping。
线性扫描方式的不足:
① 不适合大规模文档集合条件下的快速查找。
② 不适合一些包含特殊含义词的词条的查找。
③ 不能对结果进行排序。
关联矩阵(incidence matrix):给定词表,假定我们对每篇文档都事先记录它是否包含词表中的某个词,结果就会得到一个由布尔值构成的词项-文档关联矩阵。
词项(term):词项是索引的单位,它通常可以用词来表示。
如果我们要查找含有 Brutus、Caesars,但没有Calpurnia的章节(Brutus AND Caesar AND NOT Calpurnia),我们可以对 Brutus、Caesars对应的向量和Calpurnia对应的向量求补向量,然后进行基于位的与操作:
110100 AND 110111 AND 101111 = 100100
结果表示关联矩阵中第一列和第四列所对应的剧本是用户所求。
布尔检索模型:布尔检索模型接受布尔表达式查询,即通过 AND、OR 及 NOT 等逻辑操作符将词项连接起来的查询。在该模型下,每篇文档只被看成是词的集合。
文档(document):指的是检索系统的检索对象。
文档集(collection):所有的文档组成文档集,也称为语料库(corpus)。
ad hoc 检索(ad hoc retrieval):数据库的数据相对稳定,而不同用户的查询需求千变万化。基于Web的搜索引擎也属于这一类。
信息需求(information need):信息需求指的是用户想查找的信息主题,它和查询(query)并不是一回事,后者由用户提交给系统以代表其信息需求。
检索系统的效果(effectiveness) 进行评价:正确率和召回率。
正确率(Precision):返回的结果中真正和信息需求相关的文档所占的百分比。
召回率(Recall):所有和信息需求真正相关的文档中被检索系统返回的百分比。
倒排索引(inverted index):信息检索的一个核心概念。如图1-3所示,左部称为词项词典(dictionary,也称vocabulary或lexicon),每个词项都有一个列表来记录出现该词项的所有文档。这个表的每个元素通常称为倒排记录(posting)。每个词项对应的整个表称为倒排记录表(posting list)或倒排表(inverted list)。所有词项的倒排记录表一起构成全体倒排记录表(postings)。