第一章 布尔检索
信息检索是从大规模非结构化数据(通常是文本)的集合(通常保存在计算机上)中找出满足用户信息需求的资料(通常是文档)的过程.”非结构化数据”指的是那些没有清晰和明显的语义结构的数据,与之相对的,最典型的就是关系数据库.
1.基本概念
检索系统(搜索结果质量)的评价指标:
- 正确率(precision): 返回的结果中真正和信息需求相关的文档所占的比例
- 召回率(recall): 所有和信息需求真正相关的文档中被检索系统返回的百分比.
两种构建方式:
- 词项-文档矩阵: 高度稀疏,即大部分元素为0
- 倒排索引: 左部为词项词典,右侧为倒排记录表.词项词典往往在内存中,而指针指向的每个倒排记录表往往存放在磁盘上.
2.布尔查询
以 Brutus AND Calpunia 为例,首先Brutus,Calpunia各自的倒排记录表后,求交集.
两个倒排记录表合并的算法: 对每个表都维护一个位置指针,让其同时在两个列表中后移.
查询优化: 考虑倒排记录表的访问顺序.例如,对于Brutus AND Caesar AND Calpurnia, 按照词项的文档频率(也就是倒排记录表的长度)从小到大依次进行处理.
第二章 词项词典及倒排记录表
- 确定文档的编码方式,将字节序列转换成字符序列.
- 确定索引的文档单位,即”索引粒度”问题.这里存在着正确率和召回率之间的权衡问题.
- 词条化,注意特定词条的处理,如”C++”,IP地址,邮件地址,连字符,特殊空格.
对于一些东亚语言,不存在空格,需要首先进行分词. - 去除停用词: 随着信息检索系统的发展,Web搜索引擎通常都不用停用词表.
- 词项归一化
- 词干还原和词形归并