34
本本本本本本本 本本 (本本) 本本本本本本本本本本本本本本 (本本) Efficiency Document Retrieval with Flat Position Index 本本 00748033 本本本本本本本本 本本本本本本本本 本本本本 本本本

sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

本科生毕业论文题目:(中文) 基于纯位置索引的高效文档检索

(英文) Efficiency Document Retrieval with Flat Position Index

姓 名: 李铄 学 号: 00748033 院 系: 信息科学技术学院 专 业: 计算机科学与技术

指导教师: 闫宏飞

Page 2: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

二〇二三二〇二三年五月十九日摘要

查询语句中的短语查询在现代搜索引擎中占据着较大比例。本文引入一种新的索引结构——纯位置索引(flat position index)结构去处理短语查询。首先,本文对纯位置索引结构及其实现进行介绍;同时,本文提出了一种新的结构(CSLT)来辅助纯位置索引提高其检索效率;并且与传统索引在处理短语查询上进行比较实验,纯位置索引在倒排索引文件的空间消耗上会有约 6.5%的减少,在短语查询上约有 18%的查询速度的提升。此外,本文以时下流行的一个国外微博客服务的网站推特(Twitter)作为短文档集合的代表,根据推特对发布的文本信息(tweet)的最大字节数的限制来修改纯位置索引的索引结构,使其可以针对短文档集合进行高效的查询。本文在推特上将修改后的纯位置索引与传统索引在布尔查询、短语查询、邻近查询三种查询方式下进行检索的时间性能进行比较,修改后的纯位置索引可以在涉及位置信息的查询(如短语查询和邻近查询)上获得平均约 60%的查询速度的提升,同时在索引文件所消耗的空间上会有约 29%的节省。基于实验结果,本文得出纯位置索引在处理涉及位置信息的查询,尤其在短文档集合上具有高效性的结论。

关键词:纯位置索引 传统索引 短文档集合 查询性能 推特检索

1

Page 3: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

Abstract A large proportion of modern search engine queries contain phrases, namely a sequence of adjacent words. In this paper, we use a flat position index to make phrase queries evaluation more efficient. This paper presents a brief introduction of flat position index. In addition, a new structure called CSLT (cache sensitive look-up table) is proposed to assist to improve the performance of query processing. Experiments with GOV2 data collection show that flat position index can reduce the index size by almost 6.5% and speed up phrase querying about 18% compared with word-level index. Furthermore, this paper regards Twitter as a typical example of a collection with short documents, modifying flat position index based on Twitter’s main feature, say a limitation on tweet’s maximum length. Experiments with Edinburgh Twitter Corpus are implemented under three different kinds of query modes, including boolean query, phrase query and proximity query. Compared with word-level index, the modified flat position index achieves nearly 60% speed up for last two query modes, as well as 29% index size reduction. According to the two experiments, this paper shows that flat position index can achieve a better performance in processing queries with position demand, e.g. phrase query and proximity query, especially on short documents, than traditional index like word-level index.

Keywords: flat position index, word-level index, query, Twitter search, collection with short documents

2

Page 4: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

目录

第一章 引言 5

第二章 信息检索背景介绍..................................................................62.1 信息检索基本概念介绍.............................................................................62.2 搜索引擎中的三种主要查询类型.............................................................72.3 索引结构的分类.........................................................................................8

2.3.1 根据倒排表存储内容进行索引结构的分类....................................82.3.2 根据倒排表中元素的排列方式进行索引结构的分类...................8

2.4 目前搜索引擎中的查询方式.......................................................................9第三章 相关工作..............................................................................10

3.1 基于 TypeDSP 的索引结构的组织方式..................................................103.2 传统索引(word-level index)结构....................................................113.3 倒排表中压缩和跳查表技术的应用........................................................12

3.3.1 倒排表中压缩技术的应用.............................................................123.3.2 倒排表中跳查表技术的应用..........................................................13

第四章 PARADISE 系统介绍.............................................................15第五章 纯位置索引..........................................................................17

5.1 纯位置索引结构简介...............................................................................175.1.1 纯位置索引的基本结构.................................................................175.1.2 纯位置索引结构的组成................................................................185.1.3 纯位置索引结构的倒排表组织方式............................................19

5.2 纯位置索引处理短语查询的实现..........................................................195.3 纯位置信息与文档号的映射实现...........................................................21

5.3.1 问题描述........................................................................................215.3.2 CSLT 结构的实现.........................................................................225.3.3 基于 CSLT 结构实现纯位置信息到文档号的映射.......................23

5.4 基于纯位置索引结构的相关实验............................................................245.4.1 实验目的..........................................................................................245.4.2 实验环境及实验测试数据..............................................................245.4.3 实验方法及实验结果:.................................................................255.4.4 实验结果分析:.............................................................................26

3

Page 5: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

第六章 纯位置索引在推特(Twitter)网站上检索的应用.......................286.1 背景介绍.....................................................................................................28

6.1.1 短文档集合介绍..............................................................................286.1.2 推特(Twitter)介绍....................................................................286.1.2 纯位置索引在推特上进行扩展应用的原因..................................29

6.2 基于推特系统特性进行纯位置索引结构的修改.....................................306.3 基于修改后的纯位置索引进行三个不同类型查询的检索.....................31

6.3.1 对于查询语句的限制......................................................................326.3.2 对布尔查询的检索实现..................................................................326.3.3 对短语查询的检索..........................................................................336.3.4 对邻近查询的检索..........................................................................34

6.4 修改后的纯位置索引在三种不同类型查询下的比较实验及结果分析.366.4.1 实验目的.........................................................................................366.4.2 实验环境及实验测试数据..............................................................366.4.3 实验方法及实验结果......................................................................376.4.4 实验结果分析................................................................................38

第七章 纯位置索引结构总结..............................................................42致谢..............................................................................................43参考文献........................................................................................44

4

Page 6: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

第一章 引言

随着搜索引擎的发展和普及,现代搜索引擎需要对用户的查询进行越来越有效的处理。现今用户大部分的查询内容都会包括短语,所谓短语,就是紧邻词语的一个序列。使用短语查询会比使用单独词语查询更为精确的代表用户的信息需求(information need)和减少歧义。Bahle et al. 1 的统计显示在 1997 到 1999 年的excite log 中有 8.3%的显式的短语查询(用户在输入查询内容时将多个连续的词用引号引起)。Silverstein et al. 2 对 AltaVista 的查询日志(query log)进行了分析,发现很多查询虽然没有显式的短语操作符(phrase operators),但实际上都是隐性的短语检索。同时,Clark 表明了一般非常短的查询语句多为短语或者命名实体,因此这些查询也可以被作为短语查询来进行处理。 考虑到现在查询中短语查询占据着越来越重要的地位,因此本文的主要工作在于设计和实现针对带有位置信息的查询方式的索引结构——纯位置索引结构来提高该类查询的整体性能。 同时,由于现在很多社交网站、如微博、Twitter,以及聊天工具,如飞信、QQ 在发布消息时都有一个最大字节数的限制,包括对于论文摘要,虽然没有一个具体明确的字节数限制,但是这些集合都与普通WEB 相比有一个最大的特定——文档短,我们考虑到针对这种短文档的查询。

论文剩余部分的组织方式如下:第二章对信息检索的基本概念进行简述;第三章介绍了传统索引实现的相关工作;第四章概述了 PARADISE 系统的功能模块;第五章介绍了纯位置索引的结构、检索方式和与传统索引的对比试验;第六章具体介绍了纯位置索引在以 Twitter 为代表的短文档集合上的检索应用;最后一章是对本文的总结以及未来工作的展望。

5

Page 7: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

第二章 信息检索背景介绍

2.1 信息检索基本概念介绍一个搜索引擎的基本任务就是信息检索(information retrieval)。信息检索指

的是在一个大的集合(collection)中找到满足用户需求(information need)的一个无结构的单元 3。在本文中涉及的搜索引擎是完成传统文件搜索的任务(ad hoc retrieval task),即在一个集合(collection)中根据用户的信息需求找到与之相关的文档(document)。所谓一个集合(collection),是指当前的检索任务中可能被检索的所有文档(document)的集合;自然地,文档(document)是组成集合的基本单元,在返回检索结果、计算文档相关性(relevant)的分数时均以文档为单位进行。用户的信息需求(information need)指的是用户希望去知道的主题,同时用户会根据查询语句(query)来表述出他的信息需求,并且会通过查询结果、查询推荐等途径来修改查询语句使得查询语句可以更准确的表达信息需求,以求得到相关性(relevant)高的文档;而文档是相关性(relevant)的,则是指如果一个文档包含了与用户的信息需求相关的有价值的信息,相关性的计算可由 BM25、向量空间模型(vector space model)3等不同方式来得到。

在进行信息检索之前,需要对一个集合中的所有文档建立索引。索引的基本单位是一个词项(term),词项一般是一个单词,但是还有诸如数字、Hong Kong等也会作为一个词项。建立索引的最初想法就是建立一个词项-文档的关联矩阵(term-document incidence matrix),矩阵中的每个元素(t,d)为 1当且仅当文档 d包含词项 t,否则为 0。但是由于当集合所包含的词项较多时,在关联矩阵中就会产生很多 0,因此我们可以将关联矩阵的方式改为倒排索引(inverted index)的方式。倒排索引(inverted index)指的是以一个词项为单元,记录该词项在集合中出现的相关信息,具体来说,每个词项都有一个倒排表(postings list),组成倒排表中的各个项叫做倒排项(posting),倒排项的内容会根据不同的索引结构而不同,可能是文档号、位置等信息。同时,在建立索引的过程中,还需要建立一个包含所有词

6

Page 8: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

项的字典(dictionary),字典中除了包含每个被索引的词项,还会保存该词项的倒排表的链接,以便在检索时取出查询中包含的词项的倒排表信息。

2.2 搜索引擎中的三种主要查询类型基本来说,搜索引擎会根据不同类型的查询方式来确定不同的索引结构。目前

的查询方式主要有下列三种 3:1. 布尔查询(Boolean query)

布尔查询中的查询语句会以布尔操作符(bool operator)来连接查询语句中出现的词,布尔操作符包括与操作符(AND)、或操作符(OR)、非操作符(NOT)。这种查询返回的文档是没有排序的,比如用与操作符连接的查询语句,返回的文档为包含查询中所有词的文档。这种查询方式中不涉及文档的打分机制。

2. 排序查询(Ranked query)排序查询中的查询语句是以自然语言为基本形式的,也即用户提交的查询语句一般是不用操作符的自然文本(free text)的形式,也就是我们现在在使用搜索引擎中最常用的一种查询语句的方式。这种查询中最主要的特点是对于每个可能返回的文档需要对其打分,打分机制有 BM25、向量空间模型等。根据分数的高低对待返回的文档进行排序,并且根据应用返回排在前面的前 N 个。

3. 短语查询(Phrase query)、扩展布尔查询(extended boolean query)、邻近查询(Proximity query)短语查询指在查询语句中包含了引号,将几个连续的词用双引号引起来表示这是一个短语,而返回的文档是需要精确包含这个短语的,具体来说,凡是作为短语中的词,就要考虑其中的位置关系,即便一个文档包含了这些词但顺序不对的话,这个文档也不是一个相关文档。关于短语查询的结果也是可以进行排序的,已经有相关工作对其排序方式进行了探讨。扩展布尔查询,顾名思义,是对布尔查询的扩展,这种扩展主要体现在对操作符的扩展,引入近似操作符(proximity operator),这些操作符除了包含原有的布尔操作符外,还会引入带有位置等信息的操作符,比如/k,代表两个词要在 k 个词内出现。邻近查询与短语查询类似,指查询语句中的词要在一定的范围内出现而不能相距过远。总而言之,这类查询最主要的特征是在检索时会涉及到词项在文档中出现的位置信息,这也是本文所集中讨论的查询方式。

7

Page 9: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

2.3 索引结构的分类2.3.1 根据倒排表存储内容进行索引结构的分类

基于不同的查询方式,倒排表会包含不同信息来提供对不同查询的支持,相应的,索引结构根据倒排表的不同有以下三种方式 4:1. Type D:这种类型的索引结构是最基本的,即倒排表中只包含该词项出现在集合中文档的所有文档号(docID)。这种类型的索引不涉及任何分数和位置信息,只能支持布尔查询;

2. Type DS:这种类型的倒排表中除了包含该词项出现的文档号,还包含了该词项在该文档中的分数(score),具体而言,分数一般指的是词频(fd,t ),即词项 t 在文档d 中出现的次数,因为倒排表中包含了可以用于计算文档分数的基本数据,因此这种类型的索引结构可以支持布尔查询和排序查询;

3. TypeDSP:这种该类型的倒排表中除了包含 Type DS 中的所有内容,还包含该词项在每个文档中出现的位置信息,即词项出现的位置距该文档开始位置的偏移值,这种类型的索引结构可以支持布尔查询、排序查询和短语查询、邻近查询等第三类查询。

2.3.2 根据倒排表中元素的排列方式进行索引结构的分类除了可以按照倒排表存储内容的不同对索引结构进行划分外,索引结构还会根

据倒排表中元素,即倒排项的不同排列方式分成两类 4:1. 按文档号排序(document-ordered index)按文档号排序指倒排表中的倒排项按照文档号升序进行排列;

2. 按频率排序(frequency-ordered index)5 按影响排序(impact-ordered index)6

按频率排序指倒排表中的倒排项按照词频(term frequency/TF)降序排列;按影响排序指倒排表中的倒排项按照其影响降序排序,这里影响(impact)指的是代表词项 t 对文档 d 得分的全部贡献的一个整数。

8

Page 10: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

Persin et al.[1996]和 Anh et al.[2001]的实验证明了第二类排序方式与第一类排序方式相比,两者的空间需求相近,但在处理排序查询时在速度上有显著的提高6,7。然而第二类排序方式在使用词项的位置信息时会使效率大幅下降,因此目前大多数搜索引擎都使用第一类按文档号排序的排序方式来对倒排表的元素进行排序,比如在本文中用于和纯位置索引结构进行比较的传统索引结构。

2.4 目前搜索引擎中的查询方式在之前的查询处理时,一般都会使用排序查询,即一般来说,在进行了包含停

用词(stoplist)、取词干(stemming)等方法的预处理后,检查文档中是否包含查询语句中的那些词,根据包含的词的多少以及根据选用的不同计算分数的算法,来进行文档的打分,并根据分数排序输出。但是这些操作中并没有考虑到词项出现在文档中的位置信息。直觉来说,对于同样的都包含查询语句中的词的文档来说,如果这些词在一个文档中距离很近,甚至是以短语的形式出现,而另一个文档中这些词虽然都出现了,但是词之间的距离较远,那么第一个文档的相关性应该会高于第二个文档。正如引言部分所介绍的,现在查询语句中有很大部分是第三类查询,即无论是显式的还是隐式的短语查询,检索时都会需要该词项出现在文档中的位置信息。

9

Page 11: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

第三章 相关工作

基于背景部分的介绍,我们将着重考虑对第三类查询方式,即对于那些涉及位置信息的查询的处理。在引入纯位置索引结构之前,一般对第三种带有位置信息的查询方式是使用 TypeDSP 的索引结构,即在这种索引结构中,倒排表中将记录词项在集合中出现的所有文档号、对应该文档的分数、以及词项在这篇文档中所有出现的位置信息。3.1 基于 TypeDSP 的索引结构的组织方式

在基于文档号升序排序的 TypeDSP 的索引结构中,我们来讨论一下每个倒排表的组织方式。根据 Vo Ngoc Anh 和 Alistair Moffat 在 2006 年发表的 Structured Index Organizations for High-Throughput Text Querying 的文章中提到的,根据交叉(interleaving)方式的不同一共有下列四种方式:1. Pointer interleaving

在该类型的组织方式中,一个倒排表的组织方式如下:

即对于一个倒排表而言,以一个单独的倒排项为一个单元。而对于每个单元——倒排项而言,其排列方式是:分数信息 fd,t 或wd,t 会紧跟着文档号 d,然后所有的位置信息 p 会紧跟着分数信息。每一个倒排表共有 ft 个倒排项,倒排项按照文档号升序依次排列,最后组成一个倒排表。其中,ft 指在一个集合中包含该词项的文档的数目。这种 pointer interleaving 方式一般会在教科书、研究、以及公开的软件系统中呈现。

2. Term interleaving在该类型的组织方式中,一个倒排表的组织方式如下:

与第一种 pointer interleaving 中以一个倒排项为单元不同的是,这种方式下会将一个词项的倒排表看做一个整体。 具体来说,在组织一个倒排表时,会将这个词项的倒排表中的所有文档号 d、所有分数信息 fd,t 或wd,t 、所有位置信息 p依次存储在连续的块 block 内。

10

Page 12: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

3. Non-interleaved indexing在该类型的组织方式中,与第二种 term interleaving 方式中以每个词项作为区分不同的是,它将所有的词项看作一个整体,将所有词项的倒排表中的文档号d、所有词项的倒排表中的分数信息 fd,t 或wd,t、所有词项的倒排表中的位置信息 p依次连续存放,因此这种方式的存储就相当于有三个独立的倒排文件,每一个都分别存放着集合中的三个属性的所有信息:文档号 d、分数信息 fd,t 或wd,t、位置信息 p。为了与这个组织方式相适应,在字典中的每个入口上都有一个指向这三个不同类型的倒排文件的磁盘指针。

4. Block interleaved indexing前面三种组织方式在不同的查询类型中都有各自的优劣势 4,Vo Ngoc Anh 和Alistair Moffat 提出了一个对三种基本查询方式:布尔查询、排序查询和短语查询都具有高效支持的索引内部的组织结构——block interleaved indexing。这种形式仍是以一个词项的倒排表为基本单元,只是在组织这一个倒排表 中的所有信息时,将其分成一到多个组(group),在每个组里有 4 个或更多的 k-块(k-blocks),k-块指在一个块(block)内存储 k 个类型相同的信息。因此一个词项的倒排表会以如下形式排列:

由于 ft是在一个集合中包含该词项的文档的数目,因此组的数量即为 ft/k向上取整后的值,组的数量代表着需要多少个以 k-块为单元的组可以将一个倒排表表示出来。

3.2 传统索引(word-level index)结构在目前的搜索引擎中,一般会使用词级别(word-level index)的传统索引结构

来引入位置信息,这里的传统索引即是在 2.3.1 中介绍的 DSP 类型的索引结构。在传统的索引结构中,对于一个词项 t 的倒排表中的每一个倒排项的基本格式

如下:

其中,d 代表文档号,fd.t 代表在文档 d 中词项 t 出现的次数,数组[o1,…,ofd.t]是词项 t 在这个文档 d 中出现的位置信息,这个位置是相对于文档头开始的位置偏移,11

Page 13: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

同时这些位置信息是以升序进行排列的。此外,在真正存放这些位置时,将使用差值存储的方式,即存储的是每个原始偏移位置(除了第一个位置外)与前一个原始偏移位置之差。一般地,倒排索引会使用块的方式来组织倒排表,这种基于块的组织方式的基本思想即是上面所介绍的 block interleaved indexing 方法。正如 Vo Ngoc Anh 和 Alistair Moffat 的实验 4 所表明的,在三种不同的查询方式下, block interleaved index 与其它三种 interleaved 方式所能获得的最好结果相比,都好于或相似于其结果。因此,这种基于块的组织方式可以保证在不同的查询方式下都能获得一个较高的检索效率。

3.3 倒排表中压缩和跳查表技术的应用为了提高处理查询的效率,一些技术,比如倒排表的压缩以及跳查表(skip

list)会被应用到索引结构中。

3.3.1 倒排表中压缩技术的应用关于对倒排表的压缩算法,主要分为三大类 4,8,9:

1. 按比特对齐的压缩算法(Bit-aligned)按比特对齐的压缩算法会在几个比特中来存储一个整数,即在被压缩编码的区域中每个比特位后都可能截断。Elias-gamma 和 Golomb-Rice编码是按比特对齐的压缩算法的代表;

2. 按字节对齐的压缩算法(Byte-aligned)按字节对齐的压缩算法会在几个字节中来存储一个整数,一个简单的按字节对齐的压缩算法是 variable-byte coding;

3. 按字对齐的压缩算法(Word-aligned)按字对齐的压缩算法会将尽可能多的整数压在一个 32 比特的字中,Simple9 和Simple16是典型的按字对齐的压缩算法;一般来说,按字节对齐的压缩算法会较按位的压缩算法模式(bitwise schema)

处理速度快,因为大多数处理器处理字节要比处理位更为有效。但是按字节对齐的压缩率(compress ratio)要比按比特对齐的压缩方式差,这是因为即便一个非常小的整数也需要至少一个字节来表示,这就会涉及到空间的浪费。以前在对倒排索引

12

Page 14: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

进行编码时,为了得到好的压缩效果,主要使用按比特对齐的编码方式。索引大小越小,从硬盘读取数据的时间也就越少,但是相应的解码数据所需要的 CPU 时间也就越长。在现代的搜索引擎中通常使用内存索引(memory index)去增加吞吐量、减少延迟,因此需要较快的解码数据速度,同时保证一定的压缩率。PForDelta 和Group Varint 可以获得较快的解压数据的速度,是当前最为出色的压缩技术(state-of-art technique)10,11,12。它们按批压缩和解压整数,此外,它们都避免了分支和条件转移,从而保证了处理器可以获得更快的速度。

3.3.2 倒排表中跳查表技术的应用倒排表中的数据被压缩后虽然可以节省空间,但是也使得随机访问倒排表中的

数据受到限制,跳查表的引入就是来解决这个问题。一个跳查表由多个跳查指针(skip pointer)组成。每个跳查指针都是一个<d,p>对,其中 d 代表一个文档号,p代表在倒排表中的位置,那么一个跳查指针代表着在位置 p 上存在着一个文档号为d或者离 d 最近(第一个大于 d 的文档号)的文档的倒排项。当为倒排表引入跳查表时,设置跳查距离(skip distance)是至关重要的,目前已经有一些工作对怎样设置一个合理的跳查距离进行了探讨和建议 13,14。在实际的系统中,使用跳查指针的有效性要依赖于多个因素,比如文档集合和查询。由于随机访问硬盘的低效性和跳查表所需要的额外空间,因此将跳查表应用于那些存放在硬盘中的倒排表效果并不好,相反的,如果对于那些已经贮存在内存中的倒排表而言,使用跳查表可以使需要解压的数据量大为减少。尽管引入了压缩和跳查表技术, 传统索引在处理短语查询时的效率仍然不够理

想。近期,一些方法已经提出以提高传统索引在处理短语查询的速度。Williams et al. 15 提出了 nextword index 索引方式。这是一个三层结构(three-level structure),第一层是传统的那些被索引的词项,称作 firstword;第二层是一个 nextword 的链表,nextword 指在被索引的文档中出现在 firstword 后面的词;第三层是每个firstword 和 nextword 对(pair)的倒排表。通过这种方法,短语查询的速度将较传统的索引结构提高 4倍,然而,它也同时引起了倒排索引大小的 49%的增加。Bahle et al. 16 发现大多数处理短语查询的时间都是在对短语查询中包含的普通词语的处理上,为了减小 nextword 索引的大小,他提出了 partial nextword 索引的方式。与上面 nextword 索引方式不同的是,partial nextword 方法只保留那些最为普通的firstword 的 nextword。此外,一个将 partial nextword、partial phrase index 和倒排索引结合起来的方法由Williams et al. 17 提出。这三种方式与传统的索引结构相比,虽然都可以在一定程度上提升处理短语查询的性能,但是他们都需要额外的空间去存

13

Page 15: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

储辅助数据,而当这些辅助信息不能对查询提供帮助时,还需要传统索引来处理。此外,如果要求查询词在文档中出现的位置不能相距过远时,这些方式在计算邻近词项的分数(term proximity weight)时几乎起不到任何帮助。

14

Page 16: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

第四章 PARADISE 系统介绍

PARADISE是 Platform for Applying, Researching And Developing intelligent Search Engine 的简称,是一种智能中英文搜索引擎平台。PARADISE设计分为前端和后台,两部分可以放在不同的服务器上,通过 SOCKET协议进行交互。PARADISE 系统的可以分为五个基本的模块:1. 抓取模块

PARADISE抓取部分采用天王搜集系统,它是一套分布式的网页采集系统,支持增量抓取;

2. 预处理模块PARADISE预处理部分的主要功能是对网页和网页集合进行分析和处理,包括编码识别转换、噪音消除、网页去重、网页权重 Pagerank 的计算等;

3. 索引模块PARADISE 索引部分主要完成对集合建立索引的过程,并且可以根据需要设置不同的索引配置文件来完成不同形式的索引的建立。建立索引的一般步骤如下(以建立传统的 TSP 结构的倒排索引为例):1) 从预处理模块中将一篇文档的各个域的数据从其对应的数据库中提取出来,

此时的一篇文档称为 RawDocument;2) 读取索引配置文件,从 RawDocument 中提取配置文件中指定域的信息,并

根据配置文件中对不同域的处理要求,建成三类文档:属性文档(AttributeDocument)、倒排索引文档(IndexDocument)、存储文档(StoreDocument);

3) 将每一篇文档的倒排索引加入到大索引中,合并索引并写入一个索引文件;最后将属性文档和存储文档中的内容按指定格式写入文件;

4. 检索模块PARADISE 检索模块主要负责对集合的检索任务,它采用一次一文档(document-at-a-time)的检索模式。其基本的检索过程如下:1) 初始化索引读取器(IndexReader);2) 处理查询词;3) 从倒排索引中找到查询词对应的倒排表4) 对倒排表中的文档的各个域进行打分,并最终合并得到最终分数;5) 将检索结果按照文档分数排序;

5. 前端模块15

Page 17: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

PARADISE 前端模块使用 Python 语言编写,其主要功能包括查询解析,生成一定格式的查询串,接受后台结果,提取摘要,显示结果,日志记录等任务。

本人的工作将主要涉及 PARADISE 系统的索引模块和检索模块两部分。通过检索模块的接口,将设定好的检索配置文件、给定待建索引的文档集合路径等作为参数输入,调用 BuildIndex命令即可以得到基于传统索引结构的索引文件。然后通过对 MergeIndex命令的调用,即可以得到基于纯位置索引结构的索引文件。对于检索模块,自己主要实现了基于纯位置索引的检索部分,并参考 PARADISE里已实现的检索代码来完成基于传统索引的检索部分。

16

Page 18: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

第五章 纯位置索引

5.1 纯位置索引结构简介在传统索引结构中,每个词项的倒排项会被表示成文档号、词频、位置信息的

一个三元组。实际上,在这种结构中,词频是可以通过对位置信息的计数来得到的,因此词频在这个结构中就是一个冗余信息(redundant information)。假设一个倒排项中平均包含了三个位置信息,那么大约 20%的空间被用来存储冗余信息了。自然地,我们希望可以将这个冗余信息从索引中移除以减少需要处理的数据量。Clarke12 提出了一种称为 Schema-independent index 的索引结构来解决这个问题,Dean给出了一个关于纯位置索引结构的整体描述 11。本文将会介绍我们关于这种索引结构的实现以及如何使用该结构去处理短语查询。

5.1.1 纯位置索引的基本结构纯位置索引将集合中的所有文档按文档号递增的顺序按序排列形成一个新的大

文档,纯位置索引将这个新的大文档(即整个集合)作为一个整体来考虑。在这个大文档中,每个词语的每次出现都被分配了一个唯一的位置值(flat position),代表这个词语在整个大文档中的一次出现的位置。我将利用下图中这一简单的例子(图 1)来具体说明纯位置索引结构的概念。

图 1:纯位置索引结构在该例中,一个集合由五篇文档组成,图中由 doc1至 doc5 表示,在文档中的

大写字母A、B 代表两个词项,其他词项均由X 表示,因此 doc1 的内容即为17

Page 19: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

ABXXXABXXX,doc2 内容即为 XBXAXXAX……同时,我们可以得到 doc1 中包含了 10 个词项,doc2 中包含了 8 个词项,依次类推。在纯位置索引结构中,将这5篇文档顺序组成的集合看成一个大文档,那么词项A 在这个大文档中的首次出现(doc1 中的首次出现)是在第一个词的位置,因此对于这次出现词项A 的纯位置值是 1, A 的第二次出现(doc1 中的第二次出现)是在第 6 个词的位置,A 的第三次出现(doc2 中的第一次出现)是在第 14 个词的位置……对于其他的每个词项在集合中的每次出现都用这个方法来分配一个唯一的整数作为这次出现的位置值。

5.1.2 纯位置索引结构的组成纯位置索引由三个主要部分组成:字典(dictionary),倒排索引文件

(inverted index file)和文档边界数组(document boundary array)。1. 字典:

字典与在传统索引结构中所引入的字典相似,除了包含每个词项和指向该词项倒排表的指针外,还包括一些统计信息,比如文档频率 DF(集合中包含该词项的文档数)和集合频率 CF(该词项在集合中出现的总次数)。

2. 倒排文件:倒排文件是在纯位置索引结构中最为重要的部分。与传统索引结构不同的是,纯位置索引结构中词项的倒排表里只存储纯位置信息,每个纯位置信息代表这个词项一次出现相对于集合开始的位置偏移。结合图 1,词项A 的倒排表是<1,6,14,17,22,28>,每个整数都代表着 A 的每次出现的位置偏移。通常在倒排表中的这些整数会使用 delta编码方式(delta encoding),即这些整数在倒排表中存储的真正值是<0,4,7,2,4,5>。

3. 文档边界数组:一般信息检索的目标是找到相关的文档,但由于在纯位置倒排索引结构的倒排表中只存有位置信息而没有反应其出现在哪篇文档的文档信息,因此在纯位置索引结构中还需要一个记录每个文档边界的文档边界数组,它可以帮助我们实现从一个纯位置值映射到这一次出现所在的文档号。在图 1 中,第 i 个元素代表文档号为 i 的文档的结束位置(i从 1开始)。

18

Page 20: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

5.1.3 纯位置索引结构的倒排表组织方式当集合包含极大量的文档时会导致集合长度极大,比如 GOV2 集合的长度为

230亿,因此纯位置值将大于 32 比特整数(32-bit integer)所能表示的范围。最简单的解决方法是使用 64 比特整数(64-bit integer)来表示位置值,但是这种方式会引起两个问题:1. 在内存中需要耗费更多的空间去保存一个位置值;2. 一些压缩算法不能在 64 比特整数上进行有效地应用;

基于上述的问题,我们希望可以继续使用 32 比特整数来克服 64 比特整数带来的问题,同时又要克服 32 比特整数不能表示整个集合空间位置的难点,我们将整个集合空间(token space)划分成几个子空间(subspace),每个子空间都用一唯一的数字——子空间号(subspace identifier)来表示。划分集合空间到子空间的目的是使得在划分后,每一个子空间内词的所有出现相对于子空间起始位置的偏移值可以用 32 比特的整数来表示。在这种方式下,一个纯位置信息,即一个词的一次出现的位置信息就将表示成为两个 32 比特整数的结合:该纯位置所在的子空间的子空间号以及此次出现在该子空间内相对于子空间起始位置的偏移值(子空间偏移位置)。对于一个子空间中的所有位置信息都共享同一个子空间号,因此就任何一个子空间而言,对于落入其中的所有位置,都只需要记录下来其相对于该子空间的偏移位置,而子空间号则可以共享,不需要每个位置都记录一次。因此在这种结构下,若想得到每次出现相对于整个集合的位置偏移,即恢复出纯位置值,只要取得它所在的子空间的子空间号,左移 32 位后加上子空间偏移位置即可。通过引入子空间这一方式,可以使得原来超过 32 比特整数表示范围的纯位置能

用两个 32 比特的整数表示出来,这样我们在每个子空间内对于其中所有的偏移位置仍然可以使用高效的压缩算法来压缩数值。此外,由于落在一个子空间中所有的位置值都共享一个 32 比特的子空间号,使得在存储上可以节省内存空间。

5.2 纯位置索引处理短语查询的实现对于短语查询而言,返回的相关文档需要精确的包含查询中的短语,这意味着

查询语句中的任何一对词的位置之差必须在返回的相关文档中保持不变,即文档中要按和查询语句中的相同的顺序包含查询中的词且其间不能插入任何词。由于纯位

19

Page 21: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

置索引结构中直接包含了每个此项的位置信息,因此我们可以利用这个特性来提高短语查询的效率。

在处理短语查询时,不管是使用哪种索引结构都主要有两种方式:document-at-a-time模型和 term-at-a-time模型。document-at-a-time模型指的是所有倒排表是可以被同时访问的,即在处理一个包含 q 个词项的查询语句时,会同时打开这 q 个词的倒排表,然后进行 q-路(q-way )处理;而 term-at-a-time模型指的是在任何一个时间点上,只有一个倒排表被访问,对每个倒排表中的倒排项进行操作,因此对于一个包含 q 个词项的查询语句检索时,需要完成按顺序的(q-1)次二元操作。由于在实验中会对相关文档用简单的 tf-idf 方式进行打分,而如果使用 term-at-a-time 的模型则需要对每一个文档都保留一个累加器来记录文档分数,这将会消耗较大的空间,因此我只实现了 document-at-a-time模型来处理短语查询。基于传统索引结构对短语查询的处理可以参见Anh, V.N. 和 Moffat, A.的具体实现 4。

下面是基于纯位置索引结构对短语查询处理的伪代码:01. initialization: posting list ** P , query size s, relevant docset D02. for i=1 to s then03. open the posting list for term ti

04. pi := next_value(ti)05. while all lists have pointers remaining do06. p := max{ pi| 1≤ i ≤ s }, k :=i where p= pi 07. for i := 1 to s then08. pi := skip_to_value(ti, p-k+i)09. if pi > p then10. p := pi , k := i11. if min { pi| 1≤ i ≤ s } = p-k then12. d := find_docid(p, s, document boundary array);13. if d != INVALID then14. s := compute_score(); D := D + {d,s}15. for i=1 to s then16. pi := next_value(ti)17. return D

算法 1:基于纯位置索引结构对短语查询的检索算法其中:next_value(t):返回词项 t 的倒排表中当前位置的下一个位置值;skip_to_value(t, p):返回词项 t 的倒排表中第一个大于等于值 p 的位置值;

20

Page 22: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

find_docid(p, s, document boundary array):根据已经得到的一个可能的短语,来判断它们是不是出现在同一篇文档中,如果是,则返回该文档号,否则返回INVALID;compute_score():通过 tf-idf 方法计算文档分数并返回;

在该算法中,首先得到查询语句中所有词项的倒排表,并且得到每个词项的第一个出现的位置(line02-line04);然后在对所有词项依次按序进行 skip_to_value操作,同时更新最大的位置值(line06-line10),这样的一个循环即是按照短语中各词项应该具有的顺序以及出现的位置值来进行查找,通过 line11 的条件语句来判断这是不是一个连续的短语(通过 line07 的循环的调用已经可以保证词项的次序与查询中的次序一致),如果是的话,则调用 find_docid 方法(line12)来判断是否是在一个文档中出现。如果找到了一个符合要求的文档,则计算分数并将文档号和分数一起存放到集合 D 中,否则无论是在 line11还是在 line13 中不符合条件而跳出,都对于所有词项找到当前的下一个位置(line15-line16)继续重复刚才的工作,直到有一个或多个词项的倒排表已经到头了则跳出,返回相关文档集合 D。

5.3 纯位置信息与文档号的映射实现5.3.1 问题描述利用纯位置索引来处理位置查询时,我们需要根据一个短语出现的纯位置值找

到其出现的文档号(find_docid函数中即需要这一映射的实现),因为搜索引擎的检索结果是以文档为单位出现的。因此我们需要实现对任何一个纯位置值,利用文档边界数组,得到该纯位置所在的文档号。将上述问题进行数学的抽象表述即为:给定一个整数 m 和一个按增序顺序排列的数组{T0,T1,…,Tn},找到一个索引 k(k>=0且 k<=n-1),使得 Tk<m,Tk+1>=m。我们可以看到其中的对应关系: m 代表着纯位置索引中的位置值,增序排列

的数组{T0,T1,…,Tn} 代表文档边界数组,Ti 代表着文档号为 i 的文档的边界位置值,而索引 k即为我们需要得到的位置 m 所在的文档号。

实现这种映射的最朴素的方法就是使用二分查找,但是由于数组的长度等于集合中的总文档数 N,因此当集合中包含大量文档时采用二分查找的效率就会大大降低。在现代计算机系统中,通常会使用高速缓存(cache)来减小 CPU 和主存之间的性能差距。引入缓存后,CPU 不再是直接从主存中获取数据,而是首先在高速

21

Page 23: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

缓存行(cache line)中访问数据,一般一个高速缓存行是一个 32 字节或是 64 字节的块。因此如果要访问一个已经贮存在高速缓存中的数据时花费很小,但是如果该数据不在高速缓存中时,则需要从主存中访问,这个成本开销是较大的。对于简单的二分查找来说,并没有有效利用系统的这个高速缓存的特性。因此,目前一些利用高速缓存特性的数据结构(cache conscious data structure),诸如 m-array 搜索树(m-array search tree)、CSS-tree、CPSS-tree等,被设计用来加快查找速度。然而,这些方法虽然可以获得比二分查找更高的效率,但是其时间的复杂度仍是O(logmn)。

5.3.2 CSLT 结构的实现为了解决上述问题,我们同时利用文档长度和高速缓存行的大小信息来提高

检索效率,设计了一种名为高速缓存敏感查找表(cache sensitive look-up table, CSLT)的结构来实现从纯位置到对应文档号的快速映射。首先我们要进行三个假设:1. 集合中文档的长度不会有太大的变化;2. 文档的平均长度和高速缓存行的空间大小是已知的;3. 文档边界数组中的元素(即位置值)均使用某个 2 的指数倍个字节来表示;

基于上述的假设,设高速缓存行的大小为 2m 字节,文档的平均长度为 k,文档边界数组中的每个元素用 2n 个字节表示。则在一个高速缓存行中可以存放2m−n个文档的文档边界,因此一个高速缓存行平均可以覆盖到¿)个位置,我们将这一位置空间称为高速缓存行位置空间(cache line position space, CLPS),每个 CLPS 都是一个集合的整个位置空间的子空间。设集合的总长度为 L,那么整个集合的位置空间将会被划分成⌈ L/(2¿¿m−n∗k )⌉¿个 CLPS子空间。因此,我们可以对这些 CLPS子空间建立索引,即使用一个具有 L/(2m-n *k)个元素的索引数组(index array)。数组下标 i 代表着第 i 个 CPLS子空间,则该子空间所表示的位置空间范围为i∗(2¿¿m−n∗k )¿——¿(i从 0开始)。具体构建该索引数组的方法为:在文档边界数组的元素中找到第一个落在该空间范围的元素,将该元素在文档边界数组中的下标 j 作为索引数组的第 i 个元素的值。即索引数组下标为 i 的元素值为第一个出现在该 CPLS子空间中的文档的文档号减 1,也即该文档为完整的落在该子空间中的具有最小文档号的文档,这里减 1是因为我们假设文档号从 1开始。这种方法中,文档边界数组下标为 i 的元素代表文档号为(i+1)的文档的开始位置(纯位置值编号从 0开始,文档编号从 1开始)。下面用一个具体的例子(图 2)来说明 CSLT 结构的构建方法:

22

Page 24: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

图 2:CSLT 结构在本例中,我们假设文档的平均长度为 8,高速缓存行的大小为 8 字节,文档

边界数组中每个元素都用 2 字节来表示,即 k=8,m=log28=3,n=log22=1,那么每个高速缓存行所能覆盖的位置空间的大小为(2m−n∗k )=32。根据图中所示,文档边界数组中最后一个元素值是 99,说明最后一个文档的起始位置是 99,如果一个文档的平均长度是 8 的话,那么集合的总长度 L 为 99+8=107,则我们一共有⌈ L/(2¿¿m−n∗k )⌉=4¿个 CLPS子空间,即索引数组共有 4 个元素。接着,我们通过扫描文档边界数组来构建索引数组。比如对于下标为 1(i=1)的索引数组的元素,首先我们可以得到其对应的 CLPS 的位置空间范围为i∗(2¿¿m−n∗k )¿——¿,即 32 到 63,然后在文档边界数组中查找第一个落在[32,63]中的元素,为 40,将元素 40 在文档边界数组中的下标 j=5 作为索引数组下标为 i=1 的元素值。

索引数组可以通过线性扫描文档边界数组、找到最小的落在该 CLPS子空间中的边界值的方式来高效地构造起来。由于文档边界数组是按照增序排列的,因此建造索引数组只需要对文档边界数组线性扫描一次即可,则其时间开销是O(N),N是集合中包含的文档总数(文档边界数组的长度)。

5.3.3 基于 CSLT 结构实现纯位置信息到文档号的映射使用 CSLT 结构来进行纯位置值 p 到文档号 d 的映射需要两步:

1. 用纯位置值除以 CLPS 的位置空间,向下取整后的值(p/(2m−n∗k ))即为在索引数组中的下标,读出该下标对应的元素值;

2. 从第一步中读出的值所代表的下标位置开始,在文档边界数组中依次线性的读出其对应的元素值,直到读出的元素值大于 p 为止,返回该元素值所对应的下标,即为文档号 d;仍然基于上例来解释映射过程。比如对纯位置 p=45,首先计算索引数组的下标

值:45/32=1,读出对应的元素值 5;接着从文档边界数组下标为 5 的元素值开始依23

Page 25: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

次读出,一个值为 40,小于 45,继续读下一个值是 46,大于 45,则停止读数据,返回 46 对应的下标 6,即为纯位置 45 所在的文档号。

基于 CSLT 结构进行纯位置到文档号的映射的时间复杂度是O(1)的。这是因为在第一步中,只需要进行一次除法运算和一次随机访问,均为 O(1)的时间;在第二步中只需要在该子空间 CLPS覆盖的文档中来线性查找,因此最差的情况只需要线性读出 O(2m−n)个数据即可,而m 与高速缓存行的大小有关,一旦确定高速缓存行后,m是一个常量;n是与整数的表示有关的,一旦我们确定使用 32 比特或者64 比特整数时,n也就可以确定,n 最大的情况是当使用 64 比特整数时为n=log28=3。因此2m−n 是一个常数,即第二阶段的时间复杂度也为 O(1),因此基于结构实现纯位置信息到文档号的映射的总时间复杂度为 O(1)。同时,在此过程中,缓存失效次数的期望值是两次,第一次是在按照下标读出索引数组的对应元素时发生的,第二次是根据得到的下标值在文档边界数组中线性扫描时发生的,因为线性扫描只需要在一个 CLPS 中涉及的文档中进行,而一个 CLPS 所对应的文档边界值恰好在一个高速缓存行中,因此只需要一次缓存失效就可以读入整个需要扫描的边界值。

5.4 基于纯位置索引结构的相关实验5.4.1 实验目的

将纯位置索引结构与传统索引结构在以下两个维度上进行比较:1. 使用不同索引结构建立的索引文件所占空间的大小2. 基于不同索引结构处理短语查询的速度通过时间和空间的比较,对纯位置索引结构的整体性能进行评测。

5.4.2 实验环境及实验测试数据1. 实验环境

a) 拥有 2 个 Quad-Core Inter Xeon 5310 处理器;b) 每个核的速度为 1.6GHz,使用 4MB 的 L2 高速缓存;c) 四个核在 1066MHz 的总线上共享 8GB 的内存空间;

24

Page 26: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

2. 实验测试数据:在进行实验时,我们使用了 TREC GOV2 集合,其中包含了从.gov域名中爬出的 2520万个网页,集合的大小为 426GB。此外,查询语句集合是在 TREC06百万兆字节性能评测(TREC06 efficiency task of Terabyte track)中使用的查询集合,其中包含了 10万条查询语句。将这些查询语句作为短语查询提交到我们的检索系统中,其中有 35000 个查询语句是以短语的形式在 GOV2 集合中出现的。

5.4.3 实验方法及实验结果:为了实现对纯位置索引结构整体性能的评测,我分别针对传统索引和纯位置索

引这两种不同的索引结构,在索引大小和处理短语查询的速度上进行了两组对比实验。此外,在介绍实验方法之前,我将对 PforDelta 和 Rice两个压缩算法进行一个简单的介绍,因为在后续关于空间性能的实验中我将会使用这两种压缩算法。1. PforDelta 和 Rice 压缩算法介绍 9:

a) PForDelta 压缩算法PForDelta 压缩算法的基本思想是每次处理 N 个数,并找出一个整数 b,使得这批数据里 90%的数都小于 2b,然后对那些可以使用 b 比特来表示的数字用 b 个比特表示出来,而对于那些大于 2b 的数字,可以在表示完这些数之后再追加一段,记录这些数的下标与原始值,这就相当于存储了一个稀疏数组。当然也可以对那些超出表示范围的数字有更为高效的处理;

b) Rice 压缩算法Rice 压缩算法的基本思想是尽可能用较少的比特位来存储多个字,基本的编码方法非常简单:对于值 x,则用 x 个’1’后跟一个’0’来表示。基于Rice编码还存在着多种优化方式。比如,每个字最没有意义的位被存储为k,而最有意义的 N-k 位用 Rice编码。K 作为先前流中少许采样的位平均数。

2. 使用不同索引结构建立的索引文件所占空间的大小比较实验中,我选取 PforDelta 压缩算法和 Rice 压缩算法对倒排文件分别进行压缩。选择这两个压缩算法的原因是,基于 Zhang 进行的对于传统索引结构的压缩实验 9 表明,PforDelta 和 Rice两种压缩算法在传统索引结构上的压缩效率较高,因此,我选用这两个压缩算法来进行实验,如果纯位置索引在这两种压缩算法下可以得到较传统索引结构更好的结果,则基本可以说明纯位置索引结构在空间上的优势。我们从查询语句集合中随机选取了 3000条语句来作为本实验中的测试语句,这3000条查询中包含了 4987 个词项,将这些词项的倒排表作为本实验的测试数

25

Page 27: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

据,其中这些倒排表中的数字是使用 delta编码后的结果。我们每次压缩 128 个数字。实验结果如下所示:

压缩算法索引类型 PForDelta Rice

纯位置索引 29.6 30.2

传统索引 31.6 30.7

表 1:在不同索引类型和压缩算法下的倒排索引文件大小(GB)

3. 基于不同索引结构处理短语查询的速度比较我们在 TREC GOV2 集合上,使用 TREC06 的查询集合,基于纯位置索引结构和传统索引结构分别对短语查询进行处理,记录总的查询时间,除以查询语句数量后,得到处理每一条短语查询的平均时间。这里的平均时间是总的处理时间,即包括将压缩的倒排表从磁盘拷进内存的时间、解压倒排表的时间、对短语查找及找到相关文档的时间、以及为文档打分的时间。实验结果如下所示:

纯位置索引 传统索引平均时间 1.2638 1.4879表 2:在不同索引类型下处理一条短语查询的平均时间(s)

5.4.4 实验结果分析:1. 纯位置索引结构的空间性能分析

引入纯位置索引结构的一个主要原因是传统的索引结构中在每个倒排表里存放的词频信息 TF是冗余的,因为可以通过对文档号及位置信息来得到词频。因此,在纯位置索引结构中省略了词频信息的保存,这将是两个索引结构在占用的空间大小上最大的一个区别。对于一个相同的集合而言,无论是传统索引结构还是纯位置索引结构,因为集合频率 CF 相同,因此其中所存储的位置信息的总个数是相同的。由于子空间的总长度会远大于一篇文档的总长度,因此纯位置索引中的原始位置值(相对于子空间开始位置的偏移)会较传统索引结构中的原始位置值(相对于文档开

26

Page 28: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

始位置的的偏移)大得多,但是可以通过存储真正位置时使用差值存储的方式来大大减小数值的大小。对于文档号信息而言,传统索引结构中每个倒排项都会包含文档号信息,即总共记录了∑

k =1

v

df t个文档号。dft 为词项 t 的文档频率。纯位置索引结构中关于文档号与位置信息的联系使用了一个文档边界数组和一个索引数组来体现。因此就存储文档信息所占用的空间而言,两种索引结构方式会根据不同集合的具体情况而有所不同。根据实验结果,我们可以看到在 PForDelta 压缩算法下,纯位置索引的倒排索引文件大小比传统索引的倒排索引文件减少了约 6.76%;而在 Rice 压缩算法下,纯位置索引的倒排索引文件大小比传统索引的倒排索引文件减少了约 1.67%。由于这两个压缩算法是对传统索引结构有最好压缩效果的算法 9,而纯位置索引结构在这两种压缩算法下,索引文件的大小均有所减少,因此我们可以得出纯位置索引在空间性能上具有一定优势。

2. 纯位置索引在短语查询上的时间性能分析在短语查找的过程中,基于传统索引结构的短语查询可以被分解为两个阶段:a) 对所有在查询语句中出现的词项的倒排表,进行集合的交操作,找到包含查

询语句中所有词项的文档号;b) 对每个在第一阶段找到的文档,得到各个词项在该文档内的位置偏移值,判断文档中是否精确的包含查询短语;

第二阶段的操作因为也是对位置信息进行处理,因此与基于纯位置索引结构处理短语查询的方式类似,但是由于纯位置索引结构在处理短语查询时只需要一个阶段即可以完成,不需要基于传统索引结构中的第一阶段查找相同文档号的操作,这也就是我们预期纯位置索引结构在处理短语查询时会比传统的倒排索引结构获得更快的速度的原因所在。关于纯位置索引可以在短语查询上获得速度提升的结论也由实验进行了证明:基于纯位置索引结构处理短语查询的平均时间比基于传统索引结构的平均速度上提高了约 18%,体现出了纯位置索引在处理短语查询上的时间性能的优势所在。

27

Page 29: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

第六章 纯位置索引在推特(Twitter)网站上检索的应用

6.1 背景介绍6.1.1 短文档集合介绍

现在随着社交类网站和聊天网站的兴起,使得大量的信息呈现短文档的方式。比如现在的聊天工具飞信和 QQ 都有对于发表内容的字数限制,社交网络比如微博、人人网等也有类似的限制。这些字数限制一般为几百字左右,比如微博有 140 个汉字的限制,QQ 的“说说”空间有 100 个汉字的限制。这些限制使得这一类应用中的文档相较于普通WEB 上的文档都要短的多,这就引发了一个问题:如何在现在这些大量的短文档集合上进行高效的检索。目前,Twitter已经提供了一个对于发布的消息 tweet 的检索功能,因此我们决定将 Twitter 作为这种短文档集合的典型例子,来进行在短文档上的检索研究。

6.1.2 推特(Twitter)介绍Twitter是国外的一个社交网络及微博客服务的网站。它利用无线网络、有线

网络、通信技术,进行即时通讯,是微博客的典型应用。它允许用户将自己的最新动态和想法以短信形式发送给手机和个性化网站群,而不仅仅是发送给个人。由于Twitter是一个微型博客网站,因此它规定用户在该网站上发布文本信息(tweet)时,每次不得超过 140 个字符。此外,Twitter 上还提供了各种交互功能。你可以回复某用户发布的信息(reply),也可以转发(retweet)别人所发布的信息;此外,Twitter还提供用户之间的跟随(follow)功能,即你可以跟随(following)你感兴趣的人,同时也会拥有自己的跟随者(follower)。

28

Page 30: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

图 3:Twitter 系统用户主页Twitter 成立于 2006 年 3 月,在同年 7 月由创始人 Jack Dorsey 推出上线。从那

以后,Twitter吸引了世界范围内巨量的使用者,根据 BBC(2011 年 3 月 28 日)的报道,Twitter 目前估计有 2亿用户,每天产生 6500万的文本信息(tweet),并且每天要处理 800万的检索请求。

6.1.2 纯位置索引在推特上进行扩展应用的原因随着 Twitter 上用户数量和发布消息数量的急速增长,在 Twitter 上的高效检

索需求就变得尤为重要。同时为了使得 Twitter 上的检索结果更为符合用户的信息需求。在一篇关于 Twitter 的综述文章中通过比较 Twitter 和 Web 上的 query 特征,发现 Twitter 上的查询语句有两个关键特性。

Twitter Web查询语句长度(字符) 12.00 18.80

查询语句长度(词) 1.64 3.08是一个名人名字 15.22% 3.11%

表 3. Twitter 和 Web 的查询语句比较我们可以看到,首先 Twitter 查询语句的长度平均只有 1.64 个词,比 Web 的

3.08 个词要少很多。同时在 Twitter 中一个查询是一个名人名字的情况所占比例很大,是Web 中的 5倍左右。而通过 Clark 的研究表明一般非常短的语句多为短语或者时命名实体。因此在 Twitter 的查询中仍然需要对短语查询等涉及位置信息的查

29

Page 31: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

询进行考虑。基于上述的基本假设和我们之前的实验结果,我们有理由相信利用纯位置索引在 Twitter 上进行带有位置信息的检索会获得较好的性能。

同时,在 Twitter 网站上进行检索和在其他普通网站上进行检索不同的是,Twitter 中的文档是一条发布的消息(tweet),而这个文档是有最大的字节数——140 字节的限制;但是对于一般网站上的检索,其文档是没有长度限制的。因此,基于 Twitter这一关键特性,我们考虑对纯位置索引进行改进,使其检索效率可以更高。

6.2 基于推特系统特性进行纯位置索引结构的修改在之前实现的纯位置索引结构中,将一整个集合看做一个大文档,其中每一

个出现的词的纯位置值就是它相对于集合开始位置的偏移位置,同时使用文档边界数组来记录每个文档的开始位置;此外,为了实现从纯位置值到文档号的映射,还需要建立一个辅助的索引数组,通过这种 CSLT 结构完成映射。而在 Twitter 网站中,由于每个文档最多为 140 个字节,因此将每 140 个位置空间留给一篇文档,无论文档的实际长度是否为 140 个字节,紧随它的下一个文档的起始位置都从下一个140 的整倍数开始。

图 4:基于 Twitter 特性修改后的纯位置索引结构图 4是一个基于 Twitter 特性修改后的纯位置索引结构的例子。我们可以看到,

对于词项A而言,在这个大文档中的首次出现(doc1 中的首次出现)是在第一个词的位置,因此对于这次出现词项A 的纯位置值是 1, A 的第二次出现(doc1 中的第二次出现)是在第 6 个词的位置,而当A 的第三次出现(doc2 中的第一次出现)时,就不再是原来的纯位置值 14,而是 144,因为此时已经到了第二篇文档,

30

Page 32: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

虽然文档 1 的长度只有 10,但是我们规定将 1 到 140 的位置空间都留给文档 1,因此文档 2 应该由位置 141开始。也就是说对于文档号为 d 的文档,它第一个词的纯位置号应该是 140*(d-1)+1(文档号和纯位置值均从 1开始),其对应的位置空间为(140*(d-1)+1)——140*d。这样对纯位置索引修改后,可以看到当实现从一个纯位置值到对应文档号的映

射时,就变得非常简单,只需要用纯位置值除以 140 以后加 1即为其文档号。因此在这种实现方式中,我们不需要存储文档边界数组和构建辅助的索引数组,也省去了在之前映射时对这两个数组的读取工作,只需要一步除法即可以得到对应的文档号,使得在检索的时间效率上可以较之前的纯位置索引获得进一步的提高。

此外,除了在检索的时间效率上我们期待会有提高外,我们在索引文件所占空间上也认为通过使用纯位置索引可以节省一点的空间。因为,对于这种由短文档构成的集合中,一般一个词项在一篇文档中出现的次数会比较低,也即 TF 较低。关于这一点,我使用了后续实验中使用的 Twitter 数据集进行了统计,发现每个词项出现的次数为 1.05。因此,我们可以看到一般情况下而言,TF 都为 1。让我们来看一条真实的 tweet:

Today I watch movie with David, so fun!!在这个文档中,每个词在文档中只出现了一次。在传统索引中,为了记录这样

的一次出现,会使用三个数字来记录,即需要记录它出现的文档号、词频信息(为1),以及位置信息,但是在这种修改后的纯位置索引中,我们只需要记录一个纯位置信息就可以了,因此有 2/3 的空间可以节省下来。尤其是对于这种短文档而言,由于 TF值很小,因此文档号和 TF 占有的空间的百分比就会很高,而我们可以通过修改后的纯位置索引使得文档号和 TF值不再需要存储,从而在索引文件所占有的空间上有较大的节省。因此,在索引文件的大小上,我们预期修改后的纯位置索引会较传统索引在空间效率上也有一个较大的提升。

6.3 基于修改后的纯位置索引进行三个不同类型查询的检索基于修改后的纯位置索引结构,我将对三种查询方式——布尔查询、短语查询、

邻近查询,使用 document-at-a-time模式进行检索实现。

31

Page 33: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

6.3.1 对于查询语句的限制首先需要说明的是,此处的实现均只对包含两个及以下的词的查询语句有效。

在表 3 中提到 Twitter 中提交的查询语句平均不到两个词,可能是由于 Twitter 和Web 的检索任务不同而导致的。在 Web 检索中,用户往往有一个非常清晰的信息要求,而在 Twitter 中,用户很有可能没有一个很清晰的信息需求,因此用户往往就使用相对不够具体的查询。鉴于此,我只实现了包含 1 到 2 个词的查询语句的检索,不仅可以在算法上进行一定的优化,而且模拟了 Twitter 系统上大多数查询语句的情况,保证了实验的有效性。此外,查询算法可以很容易的扩展到包含 3 个及以上查询词的情况,具体可以参照 5.2 中算法 1 的实现。

6.3.2 对布尔查询的检索实现下面是基于修改后的纯位置索引结构对布尔查询处理的伪代码:

01.initialization: posting list ** P , query size s, relevant docset D02.for i=1 to s then03. open the posting list for term ti

04.v1 := skipTo(t1 , 0);

05.while(v1 != INVALD)06. docid1 := get_docid(v1);07. begin := get_doc_beginpos(docid1);08. v2 := skipTo(t2, begin);09. docid2 := get_docid(v2);10. if(docid1=docid2) then11. s := compute_score(); D := D + {d,s}12. begin := get_doc_beginpos(docid2);13. v1 := skipTo(t1, begin);14. return D算法 2:基于修改后的纯位置索引结构对布尔查询的检索算法

其中:

32

Page 34: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

skipTo (t, p):返回词项 t 的倒排表中第一个大于等于值 p 的位置值;其中 p要大于等于此时倒排表中指向的位置;get_docid(p):将位置 p 映射到对应的文档号并返回;get_doc_beginpos(d):得到文档号为 d 的文档的起始位置;

该算法的基本思想是对于词项 t1 出现的一个位置(v1),找到其对应的文档(line06),得到其初始位置(line07),然后在 t2 的倒排表中得到第一个大于该起始位置的值(line08)并得到其文档号(line09),判断两文档号是否相等,最后,得到下一个可能的文档号的起始位置(line12),t1 跳到该位置(line13),循环直至两个词项的倒排表中至少有一个已到结尾时停止。因为是布尔查询,因此我们要从文档的起始位置开始找最近的位置值。由于修改了索引结构,因此get_docid、get_doc_beginpos 都是只需一步乘法或除法即可完成。

6.3.3 对短语查询的检索下面是基于修改后的纯位置索引结构对短语查询处理的伪代码:

01.initialization: posting list ** P , query size s, relevant docset D, begin_pos:=002.for i=1 to s then03. open the posting list for term ti

04.result := nextPhrase (postinglists, interval, begin_pos);05.while(result=true)06. docid1 := get_docid(interval.left);07. docid2 := get_docid(interval.right);08. if(docid1=docid2) then09. s := compute_score(); D := D + {d,s}10. begin_pos := docid1*140+1;11. else12. begin_pos := interval.right;13. result := nextPhrase (postinglists, interval, begin_pos) ;14. return D

算法 3:基于修改后的纯位置索引结构对布尔查询的检索算法其中:

33

Page 35: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

nextPhrase(postinglists, interval, begin_pos):对现有的倒排表 postinglists,从begin_pos 位置开始,找到第一个出现的短语,即 t2 的位置值减去 t1 的位置值为 1 的位置,并将其存在 interval 中,返回是否找到的布尔标志。

该算法的基本思想是通过 nextPhrase 方法找到所有可能的短语,并对每一个短语判断是否出现在一个文档中,如果是在一篇文档中,则将其保存起来。由于在对文档打分时只使用了 tf-idf 方法,因此一旦在文档号 d 中找到了一个符合要求的短语,则直接跳过该文档,从下一篇文档继续开始查找(line10)。

nextPhrase 方法的伪代码如下:01. v1 := skipTo(t1,begin_pos);02. v2:= skipTo(t2, v1);03. if v1!=INVALID && v2!= INVALID then04. next := skipTo(t1, v2-1);05. if next=v2-1 then06. interval.left := next; interval.right := v2;07. return true;08. return nextPhrase(postinglists, interval, next);

算法 4:nextPhrase 算法经过 line02 后,已经找到了距离 v1 最近的 t2 的位置 v2,如果 t1 存在一个(v2-1)的位置 next(line04),则找到一个可能的短语并返回(line05-line07),否则将 next作为新的开始位置,递归调用 nextPhrase(line08)。

6.3.4 对邻近查询的检索邻近查询,是对短语查询的一个扩展。短语查询中要求所有词的位置差和相对

顺序都要与查询语句完全相同,是一个非常严格的条件。而邻近查询则是要求这些词在一定的范围内出现即可。比如对于包含两个词(设为 AB)的邻近查询,如果一个文档中 A 出现的位置 p1 和 B 出现的位置 p2满足:|p1-p2|≤dist,则说明这个文档是相关的,其中 dist是邻近距离,一般这个距离和查询语句的长度有关。在本实验中,我将该邻近距离设为查询语句长度的 2倍。

34

Page 36: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

由于邻近查询是位置查询的一种扩展,因此主要的算法思想基本一致,只是由于两个词的顺序可以颠倒,因此在实现时,需要对两个词项按照AB 和 BA两个不同顺序进行两次扫描,而每一次扫描就像位置索引一样需要保证两个词项的相对顺序不变。

同时,由于引入了邻近距离的概念,还需要将 nextPhrase 方法进行一定的修改,实现对现有的倒排表 postinglists,从 begin_pos 位置开始,找到第一个在邻近距离之内出现的两个位置的功能,而且该修改后的方法(nextProximityPhrase)保证找到的这两个位置的差最小。

nextPhrase 方法的伪代码如下:01. v1 := skipTo(t1,begin_pos);02. v2:= skipTo(t2, v1);03. if v1!=INVALID && v2!= INVALID then04. i := min{proximityDistance, v2-v1-1}; prev := v1;05. while i≥1 do06. next := skipTo(v2-i);07. if next>v2 then08. break;09. i := v2-next-1; prev := next;10. if (v2-prev) ≤ proximityDistance then11. interval.left := prev; interval.right := v2 ;12. return true;13. return nextProximity(postinglists, interval, next);

算法 5:nextProximityPhrase 算法nextProximityPhrase 和 nextPhrase 最大的不同之处是在 line04-line09 处体现的。在得到距 t1 的位置 v1 最近的 t2 的位置 v2 后(line01-line02),需要查看在这中间是否存在 t1 的位置使其余 v2 的距离在邻近距离 proximityDistance 内,同时如果存在多个这样的位置,需要找到离 v2 最近的那个位置返回,因为这样的一组值是最可能出现在同一篇文档中的。具体的方法是令 t1 的位置逐渐接近 v2(line06),直到其跳到的位置超过 v2 为止(line07)。跳出 line05 的循环时上一次 t1 的位置 prev就是找到的距 v2 最近的 t1 的位置值,判断是否在邻近距离内(line10),后续的处理就与 nextPhrase 相同了,这里就不再赘述。

35

Page 37: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

6.4 修改后的纯位置索引在三种不同类型查询下的比较实验及结果分析6.4.1 实验目的

针对 Twitter 的文档集合,对利用 Twitter 特性修改后的纯位置索引结构与传统索引结构在以下三个不同类型的查询方式下进行检索时间的比较:a) 布尔查询b) 短语查询c) 邻近查询通过在检索时间上的比较,对修改后的纯位置索引结构的整体性能进行评测。

6.4.2 实验环境及实验测试数据1. 实验环境:

1) 拥有 2 个 Quad-Core Inter Xeon 5310 处理器;2) 每个核的速度为 1.6GHz,使用 4MB 的 L2 高速缓存;3) 四个核在 1066MHz 的总线上共享 8GB 的内存空间;

2. 实验测试数据:在进行实验时,基于 Edinburgh Twitter Corpus 的数据来构建我实验中的数据集合。Edinburgh Twitter Corpus是通过 Twitter 流 API(Twitter streaming API)收集到的 Twitter 上两个月(2009 年 11 月 11 日到 2010 年 2 月 1 日)的数据。每条信息保存了发布的时间 timestamp、经匿名处理后的用户名 username(每个用户通过分配一个唯一的整数值来区分)、消息内容 tweet 和发布消息的途径client(如 API、网站、一些 Twitter 的客户端等)。每条消息的格式如下:timestamp \t username \t tweet \t client,其中\t 代表一个制表符比如:20091110083016 user6 @user7 why what happened. boo hoo. web其中 20091110083016是发布的时间,user6是发布消息的用户名,@user7 why what happened. boo hoo.是发布的消息,web是发布该条消息所使用的程序。

36

Page 38: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

由于在 Edinburgh Twitter Corpus 中的数据包含多种语言的消息,因此我将其他语言的消息都过滤掉,只留下使用英文发布的消息。在这些发布的消息中选择了 1000万条消息来组成我最终的测试结合。关于查询语句集合的构建,由于不能直接得到一个 Twitter 上的查询日志,因此人工构建了 470条查询语句。在一篇基于 Twitter 的文本挖掘研究综述的文章中提到了在 Twitter 的检索中,查询语句是名人姓名的占据 15.22%的比例,然而在 Web 中只有 3.11%。因此基于 Twitter这一查询语句的特点,我在网上搜集到了几千个名人的名字,并从中随机选取了 134 个作为查询语句(其长度均为2);此外,我根据这些测试数收集的时间段的信息,在 google 上搜索在那个时期发生的国际大事,构建了 92 个查询语句(其长度均为 2);另外,我从 4万个 TREC 查询中选取了 85 个作为查询语句(其中有 8 个是长度为 1 的语句);最后有 159 个查询语句是人工直接构建的(其长度均为 2)。图 5显示了实验中使用的查询语句的构成。

图 5:查询语句的构成

6.4.3 实验方法及实验结果为了实现对修改后的纯位置索引结构搜索速度性能的评测,我分别针对传统索

引和纯位置索引这两种不同的索引结构,在三个查询类型上进行了对比实验。

37

Page 39: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

由于本实验的目的主要是验证基于两个不同索引结构的检索时间,而没有涉及到压缩等内容,因此这里记录的对平均每条查询的处理时间只包括位置查找、得到相关文档及文档打分的时间,而没有包含将压缩的倒排表从磁盘拷进内存的时间、解压倒排表的时间。此外,由于查询语句集合是人工构建的,因此在实验中我记录了有效查询语句的数量,一个查询语句是有效的指在集合中至少包含一篇符合其查询条件的文档。

查询类型 有效查询语句(条)

每条查询的平均处理时间(ms)纯位置索引 传统索引

布尔查询 388 1.98932 1.95039短语查询 301 1.85491 2.86241邻近查询 368 2.33049 3.83789

表 4:在不同索引类型以及不同查询方式下有效查询语句的条数和处理一条短语查询的平均时间

6.4.4 实验结果分析1. 人工构建查询语句集合的有效性分析:

图 6:三种查询方式下的有效查询语句比例比较

38

Page 40: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

布尔查询由于不需要考虑词出现的位置信息,因此有着最高的有效查询语句比例 82.55%;而短语查询由于有着最为严格的限制,因此有着最低的有效查询语句比例 64.04%,而邻近查询对查询限制介于两者之间,其有效查询语句比例为78.03%。可以看到,即便是最低的比例也有约 65%的查询语句是有效的,而三个查询方式下的平均有效查询语句比例约为 75%,因此整体来说人工构建的查询语句集合是较为有效的。此外,我们可以观察到布尔查询和邻近查询中有效查询语句数只相差 20 个,说明出现在一篇文档中的词大多相距较近(本实验中最多相差 4 个位置),从而可以看出我们构建的查询在语义上的相关性也是较强的,较为成功的模拟了一般用户提交的真实的查询语句。因此,基于这样的查询语句集合进行的实验可以获得与实际情况更高的拟合度。

2. 两种索引结构的索引文件大小的空间效率分析

图 7 修改后的纯位置索引和传统索引的索引文件大小比较我们可以看到,基于 Twitter 特性修改后的纯位置索引结构中只需要存储位置信息,而 CSLT 中的文档边界数组、索引数组都不用存储,同时不用存储词频信息,使得其可以在空间上获得一定的优势。而由于 Twitter 上的文档长度很短,因此一般来说词频会很小,当词频为 1 时,可以省去 2/3 的空间。但是由于我们会浪费一定的位置,从而导致了位置值要较大,使得存储该位置值的字节数增大。但是从我们的实验中可以看到对空间的节省要大于其浪费,纯位置索引的索引文件在空间消耗上减小了约 28.75%。

3. 两种索引结构在三种不同查询类型下的时间效率分析:以传统索引结构为基准,将修改后的纯位置索引结构与传统索引结构在三种查询方式下的查询速度进行对比,得到下图的查询速度变化率。

39

Page 41: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

图 8:三种查询方式下的查询速度变化率比较可以看到,纯位置索引在短语查询的速度上有 54.32%的提升,在邻近查询上有64.68%的提升,但是在布尔查询上有 1.96%的下降。因此在对位置信息的查询方式——短语查询和邻近查询时,修改后的纯位置索引可以在速度上获得约50%到 60%多的提升。除了可以获得之前标准的纯位置索引结构在进行位置相关的查询时获得的好处外,基于 Twitter 特性的修改使得该修改后的纯位置索引在进行纯位置值到对应文档号的映射时可以更加快捷,因此,在对涉及到位置信息的查询进行检索时,修改后的纯位置索引较传统的索引结构而言,在时间性能上得到了较为显著的提高。虽然本实验中 50%到 60%多的速度提升仅是在真正的查询阶段,而没有涉及到将压缩的倒排表读入内存以及解压倒排表等时间,但是由于对涉及位置的查询而言,两个索引结构都需要将位置信息解压出来,因此在解压的时间上应该相差不大;同时基于上一个实验的实验结果,压缩后的纯位置索引的倒排索引文件所占的空间较传统索引的要小,因此将压缩的倒排表读入内存的时间在理论上应该较传统索引的时间短,那么我们可以得出上一个实验接近 20%的速度提高可以看作是在真正查询阶段的速度提升。因此,我们可以看到由于针对Twitter 系统的特性进行了索引结构的修改,修改后的纯位置索引结构可以就Twitter 网站上的检索获得比传统的纯位置索引更好的时间性能。在这里还需要提到的一点是,由于本实验中没有统计解压倒排表的时间,因此在布尔查询上两个索引结构的时间性能相差无几。然而如果对其完整的查询时间进行比较,那么传统索引的时间性能就会远高于纯位置索引的时间性能。因

40

Page 42: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

为,如果仅进行布尔查询,那么在传统索引结构中只需要将文档号部分的信息解压出来,而不需要解压位置信息;而对于纯位置索引结构而言,则必须将其倒排表全部解开,因为文档号信息在该结构中是必须通过纯位置值来得到的。对于一个词项而言,其文档频率要比集合频率小的多,因此在解压的时间上,传统索引会小于纯位置索引;此外在进行文档查找时,前者要扫描的元素数目也小于后者的,因此就布尔查询而言,传统索引检索的整体时间性能将会在一定程度上优于纯位置索引,而不是在本实验中得到的仅仅 1.96%的微小差距。

41

Page 43: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

第七章 纯位置索引结构总结

在现代的检索中,涉及位置信息的查询,比如短语查询、邻近查询越来越多,而且利用词项在文档中出现的位置信息可以增加文档对于查询的相关性。因此本文讨论了一种不同于传统索引的纯位置索引结构。

在本文中,对纯位置索引的基本结构、实现方式进行了讨论,并在纯位置索引的查询中,提出了一种新的结构——CSLT 结构,以 O(1)的时间实现纯位置到对应文档号的映射。

此外,基于现在社交网站、聊天网站的兴起,出现了有越来越多的短文档。对于这些短文档集合,本文以 Twitter 网站为一个典型例子,研究基于 Twitter 的特性,来对纯位置索引结构进行修改,使其可以在这种短文档集合上,对涉及位置信息的查询获得更高的检索效率。基于本文中的两组实验,我们可以看到纯位置索引在涉及位置信息的查询上确实可以比传统索引获得更好的时间和空间性能。虽然可以通过本文的两组实验对纯位置索引的检索效率得到一定的结论,但是

在实验设计上仍有可以完善的地方:1. 研究一个压缩算法,使得其可以在纯位置索引上有一个较好的压缩效率。2. 在第一组实验中,加入布尔查询和邻近查询等其他查询方式下的对比;在第二

组实验中加入对不同压缩算法的对比以及整体查询时间的比较;使得两组实验 之间的参照性更为明显、对比度更强。此外,在今后的工作中,可以对纯位置索引的正排文件、属性文件的存储算法

进行研究,找到一个适用于纯位置索引的存储方式。另外,由于本文中只是考虑将纯位置索引应用于纯文本的检索上,而搜索引擎真正处理的网页是半结构化的,如何使用纯位置索引结构来对半结构化的数据进行索引以及检索将是本文后续的一个研究方向。

42

Page 44: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

致谢

感谢我论文的指导老师闫宏飞老师,在我进入实验室以后在学术上对我的指导和敦促,以及在生活上对我的关怀。在完成毕业设计的过程中,他严谨的学术态度、专业的领域知识都使我受益匪浅。感谢单栋栋师兄,在我毕业设计的过程给我提供相关的文献、多次与我进行讨

论并耐心细致的回答我的问题,在研究的方向上、实验的设计中给我指导。感谢所有在我毕设过程中给予我帮助的同学,尤其是张旭东同学,帮助我进行

了实验测试数据的构建。感谢天网组的所有成员们,他们在相关理论知识、实验方法、毕设论文等方面

都给我提供了宝贵的意见和建议。当然,最后要感谢我的父母,是他们对我的教育、培养、支持和理解,才令我

度过一个个难关,并让我取得今天的成绩。

43

Page 45: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

参考文献

Bahle, D., Williams, H.E., and Zobel, J. Efficient phrase querying with an auxiliary index. SIGIR '02, 215-221.

2 Silverstein, C., Marais, H., Henzinger, M., and Moricz, M. Analysis of a very large web search engine query log. ACM (1999), 6-12.

3 Christopher.D.Manning etc,Introduction to Information Retrieval,2008

4 Anh, V.N. and Moffat, A. Structured Index Organizations for High-Throughput Text Querying. SPIRE, Springer (2006), 304-315.

5 Persin, M., Zobel, J., and Sacks-Davis, R. Filtered Document Retrieval with Frequency-Sorted Indexes. JASIS 47, 10 (1996), 749-764.

6 Anh, V.N. and Moffat, A. Pruned query evaluation using pre-computed impacts. SIGIR, ACM Press (2006), 372.

7 Anh, V.N. and Moffat, A. Pruning strategies for mixed-mode querying. CIKM, ACM (2006), 190-197.

8 Anh, V.N. and Moffat, A. Inverted index compression using word-aligned binary codes. Information Retrieval 8, 1 (2005), 151-166.

9 Zhang, J., Long, X., and Suel, T. Performance of compressed inverted list caching in search engines. WWW, ACM (2008), 387-396.

10 Dean, J., Burrows, M., Thambidorai, G.K., and Sercinoglu, O. System and method for encoding and decoding variable-length data. Google Patents, 2006.

11 Dean, J. Challenges in building large-scale information retrieval systems: invited talk. WSDM, ACM (2009), 1.

44

Page 46: sewm.pku.edu.cnsewm.pku.edu.cn/TianwangLiterature/BachelorThesis/201…  · Web view2011-08-15 · 本科生毕业论文. 题目:(中文) 基于纯位置索引的高效文档检索

基于纯位置索引的高效文档检索

12 C.L. Clarke, G.V. Cormack, and F.J. Burkowski, "An algebra for structured text search and a framework for its implementation," The Computer Journal, vol. 38, 1995, p. 43.

13 Moffat, A. and Zobel, J. Self-indexing inverted files for fast text retrieval. ACM Trans. Inf. Syst.} 14, 4 (1996), 349-379.

14 Strohman, T. and Croft, W.B. Efficient document retrieval in main memory. SIGIR, ACM (2007), 175-182.

15 Williams, H.E., Zobel, J., and Anderson, P. What’s next? Index structures for efficient phrase querying. Australasian Database Conference, Citeseer (1999), 141–152.

16 Bahle, D., Williams, H.E., and Zobel, J. Efficient phrase querying with an auxiliary index. SIGIR '02, 215-221.

17 Williams, H.E., Zobel, J., and Bahle, D. Fast phrase querying with combined indexes. ACM Transactions on Information Systems 22, 4 (2004), 573-594.

45