• 信息检索
  • 布尔检索模型
  • 词项-文档关联矩阵(incidence matrix)
  • 倒排索引(inverted index)
  • 对基本布尔操作的扩展(beyond term search)
  • 查询模型的改进方向


信息检索

定义:信息检索是从大规模非结构化数据(通常是文本)的集合(通常保存在计算机上)中找出满足用户信息需求的资料(通常是文档)的过程。

非结构化数据:没有清晰和明显语义结构的数据。
半结构化数据:通过显式的标记来体现语言结构的数据(如网页中的结构标签)。

推荐系统是general query search 是一种特殊的IR任务,用户没有显示的给出query

分类:

  • Web搜索(web search)
    大规模分布式文档的检索
  • 面向企业、机构和特定领域的搜索(domain-specific search)
    对公司内部文档、专利库或生物医学文献等的搜索
  • 个人信息检索(personal information retrieval)
    操作系统或系统应用中融合的信息检索功能

布尔检索模型

对于(1)大规模文档集(2)更灵活的匹配方式,如NEAR操作符,’5个词内‘或’同一句中‘ (3)需要对结果进行排序。这些情况下,就不能再采用线性扫描(如unix系统中grep指令)的方式。一种非线性扫描的方式是实现给文档建立索引(index)

grep is line oriented IR is document oriented

词项-文档关联矩阵(incidence matrix)

词项(term):索引的单位,通常用词来表示
文档(document):检索系统的检索对象,可以是单独一条记录或者是一本书的各章
文档集/语料库(collection/corpus):所有文档的集合

布尔索引筛选能被整除 布尔检索符_关联矩阵


矩阵从行看,可以得到每个词项对应的文档向量,表示词项在哪些文档出现或不出现
从列来看,可以得到每个文档对应的词项向量,表示文档中哪些词项出现或不出现。
1表示出现,0表示不出现。

词项-文档关联矩阵的布尔查询处理
对于采用AND、OR及NOT等逻辑操作符连接起来的布尔表达式查询,通过对文档向量间逻辑操作来得到查询结果。

例:为响应查询 Brutus AND Caesar AND NOT Calpurnia,我们分别取出 Brutus、Caesar 及 Calpumia 对应的行向量,并对 Calpumia 对应的向量求反,然后进行基于位的与操作,得到:
110100 AND 110111 AND 101111 = 100100
结果向量中的第 1 和第 4 个元素为 1,这表明该查询对应的剧本是 Antony and Cleopatra 和 Hamlet。

倒排索引(inverted index)

对于词项个数和文档规模很大的情况,构造出的关联矩阵是高度稀疏的。只记录原始矩阵中1的位置的表示方法比词项-文档关联矩阵更好,因此引出了倒排索引

**索引(index)**由一部字典(dictionary)和一个全体倒排记录表(postings)组成。

建立索引的主要步骤如下:
1、收集需要建立索引的文档
2、将每篇文档转换成一个个词条(token)的列表,这个过程称为词条化(tokenization)或者切词。
3、进行语言学预处理,产生归一化的词条来作为词项(去掉复数标记等 )
4、对所有文档按照其中出现的词项来建立倒排索引

布尔索引筛选能被整除 布尔检索符_关联矩阵_02


上图表现了构建倒排索引的过程。

1、给每篇文章的所有词项加上文档ID

2、按照字母顺序排序

3、将同一词项合并,并将词项与文档ID分开存储(词典存储在内存中,记录表存储在磁盘中)

注:在字典的每个词项中还可以存储其他信息,如文档频率
每个倒排记录表存储了词项出现的文档列表,还可以存储词项频率(词项在文档中出现的次数)、词项在文档中出现的位置

基于倒排索引的布尔查询处理
例:对于Brutus AND Calpurnia这样的布尔查询,首先在字典中分别定位Brutus和Calpurnia,并返回其倒排记录表(posting lists)。对两个倒排记录表求交集(intersect),也称合并。

布尔索引筛选能被整除 布尔检索符_布尔索引筛选能被整除_03

对于两个有序记录表的合并算法如下

布尔索引筛选能被整除 布尔检索符_大数据_04

查询优化
对于更加复杂的查询,可按照词项的文档频率(即倒排记录表的长度)从小到大依次处理,这使得中间结果(多个布尔操作组合起来的query,会产生中间结果)的大小都不会超过最短的倒排记录表。

布尔查询适合精确查询(法律领域等)

对基本布尔操作的扩展(beyond term search)

严格的布尔运算所得到的无序结果集合远远不能使用户满意,故可在系统中加入更多的操作:
1、邻近操作符(proximity) :用于指定查询中两个词项应该互相靠近
2、短语查询(phrase search): 可以看成特殊的邻近操作符
3、尾通配符查询

例:空格表示逻辑“ 或” 关系,&表示 AND,/s、/p 及/k 分别表示处 于同一句子、段落和 k 个词之内。双引号表示的是短语查询(phrase search,即多个词连续出现, 参见 2.4 节),感叹号(!)表示尾通配符查询(参见 3.2 节)

查询模型的改进方向

1、容忍拼写错误及查询和文档中词语表达不一致时的检索方法
2、对复合词或短语的搜索
3、通过引入词项频率(词项在文档中出现的次数)等,得到文档相关的可信度,而不是简单的词项存在与不存在。
4、对返回结果排序