在信息检索中应用Inverted Index

来源:互联网 发布:义乌法院淘宝拍卖公告 编辑:程序博客网 时间:2024/05/18 22:42

一、TDM (Term-Document Matrix)


对于一个信息检索系统而言,它的主要任务就是在给定 a large document collection and a query string 时,回答下面两个问题:

  • Which of the documents are relevant to the query?
  • Which ones are the most relevant?

为了回答这两个问题,我们首先要考虑的问题就是如何来表示一个document。一个比较常用的方式就是把每个document看做是一个词袋(BOW,bag-of-words),BOW模型只考虑document中词频,不考虑句子结构或者语法关系之类,也就是把document当做装words的袋子,具体袋子里面可以是杂乱无章的。


TDM(Term-Document Matrix)便是一种基于BOW的有效的文档表示形式,其中:

  • 1)每行表示一个文档;
  • 2)每列表示一个term (也就是出现在语料库里的“无重复的”单词);
  • 3)矩阵中的每个cell,可以是(用来表示term有无出现)的布尔值,也可以是term的统计频数,或者其它表示term和doc有关得分的数值等。

下面给出了一个TDM的简单示例,其中左侧是语料库,可见其中包含三份文档。右图是对应的TDM,注意我们剔除了其中的stop words。


另外一个由此引出的概念是Postings Lists。首先我们把已经得到的TDM转置,然后用布尔值重写表中的内容,即只表示单词有无出现在文档中。如下图所示,那么表中的行就叫做Postings Lists,它表示对于一个term,它在哪些文档中出现过。


这个表对于执行一些基于布尔操作的查询是相当方便的。例如 tea 的 postings 为 [1, 1, 0],me 的 postings 为 [0, 1, 1],如果想知道哪些文档既有 tea 又有 me 的话 执行 交集(conjunction) 运算则有 [0, 1, 0],即doc2。


二、Inverted Index


Inverted Index(通常译为反向索引或倒排索引)是一种索引数据结构,在很多DBMS(数据库管理系统)中都有使用。Inverted Index源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。

但是这与我们讨论的TDM和Postings Lists又有什么关系呢?其实你可以想象,由于TDM 同时都是非常稀疏的,所以每一条Posting可能都非常长,这并不利于数据的高效存储。我们需要一种更加紧凑的结构,也就是Inverted Index

具体来说,我们仅仅储存每条posting list中为1的项目,而且因为Inverted Index仅仅存储具有该属性值的各记录的地址(也就是Doc的编号或标识,即document identifier),所以结构会变得相当紧凑(每条都是一个不定长的序列,也就是链表),如下所示:



三、一个例子

最后我们来看一个来自“Manning et al, IIR.”的例子,假设我们现在有如下两份文档:


下图演示了我们生成Inverted Index的过程,从左到右分为三步:

  • Step 1: tokenize and collect term occurences.
  • Step 2: sort by term.
  • Step 3: collate into posting lists and doc. freq.


(全文完)

原创粉丝点击