主要内容:
什么是信息检索?
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).
信息检索是从大规模非结构化数据(通常是文本)的集合(通常保存在计算机上)中找出满足用户信息需求的资料(通常是文档)的过程。
Document –文档
Unstructured – 非结构化
Information need –信息需求
Collection—文档集、语料库
布尔查询是指利用 AND, OR 或者 NOT操作符将词项 连接起来的查询
如:信息 AND 检索
不到100万单词,假设每个英文单词平均长度为8字节,则整个全集不到10MB
查询需求:
莎士比亚的哪部剧本包含Brutus及Caesar但是不包含Calpurnia?
查询的布尔表示:
Brutus AND Caesar AND NOT Calpurnia
解决方案:
从头到尾扫描所有剧本,对每部剧本判断它是否包含Brutus AND Caesar ,同时又不包含Calpurnia
不足之处:
优点:
词项-文档(term-doc)关联矩阵
若某剧本包含某单词,则该位置为1,否则为0.
取出三个词项对应的行向量 ,并对Calpurnia 的行向量求反,最后按位进行与操作
110100 AND 110111 AND 101111 = 100100.
问题:当出现更大的文档集???
此时,词项-文档矩阵将非常大!!!
更好的办法:仅仅记录1的位置,即倒排索引
1、词条序列:<词条,docID>二元组
2、排序
按词项排序,然后每个词项按docID排序
假定索引已经构建好了,如何利用索引来处理查询?
考虑如下查询(从简单的布尔表达式入手):
Brutus AND Caesar
合并过程:
每个倒排记录表都有一个定位指针,两个指针同时从前往后扫描, 每次比较当前指针对应倒排记录,然后移动某个或两个指针。合并时间为两个表长之和的线性时间
一般的布尔表达式
(Brutus OR Caesar) AND NOT (Antony OR Cleopatra)
构建简单,或许是构建IR系统的一种最简单方式