现代信息检索3---词汇表和倒排记录表

第二节里我们了解了倒排索引的基本知识,包括构建、合并、查询等。课件里有个关于google中是否使用布尔模型?这个问题我们还是看下图吧:

让我感觉简单的布尔模型还是有用武之地的。下面是新的知识,对于我这个自学的人来说还是有点难,只能按照我自己的理解去说了。如果有误,欢迎指正。

你一定还记得这个图吧!当时只是一笔带过,现在应该去思考为什么会是这样的。先说下步骤吧:

我们构建索引的输入一般是文件或者是xml文档之类。第一步就是文档分析。包括文档格式处理(pdf/word/excel/html),文档语言识别(利用短字符子序列作为特征进行分类),文档编码识别。其实书上说了很多问题需要去考虑,但是暂时我们就这么去认为吧,细节的问题具体语言具体对待。这里面就包括一个文档包括多语言等等之类的问题。第二步就是对词处理。比如上图输入的friends,Romans,countrymen词条化后变成单个单词。其实就是分词的过程。对于英语来说就是中间的空格作为分词的标准,但是对于有’s之类的怎么处理也是个问题。书上说在既非字母也非数字的字符处进行拆分。对于中文分词,分词的标准不唯一等等的问题。但是保证查询的时候和文档分词的时候采用一致的标准还是可以解决的。对于搜索引擎上的分词又是不一样的结果,可以说要求更高。第三步就是语言分析工具。第一个说停用词。英语的the,a等等,中文的“的”“地”等等。最后得到的结论是不去掉停用词,这样查询更加准确。第二就是词性的变化,叫词性合并。词性归并意味中将单词的变形形式“适当”还原成一般词典中的单词形式。这个还是比较好理解的。后面就词干还原都是一个意思。对于英语似乎多点,对于中文似乎少点。词条的归一化,就是剔除句点和剔除连接符等等。英语的大小写问题,同义词和同音/同形异义词的处理等等。最后需要说明的是对于这个,只能尽量去做好。第四步就可以建立倒排索引了。也就是完成了这一系列的过程。

下面继续说优化问题。第一个是快速倒排表合并---跳表法。之前说,两个表长度为m和n的话,上述合并时间复杂度为 O(m+n)。我们可以做的更好吗?答案是肯定的。索引构建时为倒排记录表增加跳表指针。具体看下图:

指针数目过多过少都不合适,要有一个均衡性:
如果指针越多,跳步越短, 更容易跳转,但是需要更多的与跳表指针指向记录的比较;
如果指针越少,比较次数越少,但是跳步越长,成功跳转的次数少。

最后,得到的结论是:简单的启发式策略:对于长度为L的倒排记录表,每L的1/2次方处放一个跳表指针,即均匀放置。均匀放置方法忽略了查询词项的分布情况。

跳表方式在过去肯定是有用的,但是对于现代的硬件设备而言,如果合并的倒排记录表不能全部放入内存的话,上述方式不一定有用 (Bahle et al.2002)。

最后一个问题,短语查询。

第一种做法是双词索引。即每两个连续的词组成词对(作为短语)来索引。比如文本片段 “Friends, Romans, Countrymen” 会产生两个词对friends romans和romans countrymen。索引构建时,将每个词对看成一个词项放到词典中,这样的话,两个词组成的短语查询就能直接处理。遇到更长的就拆分成基于双词的布尔检索。例子: stanford university palo alto,变成stanford university AND university palo AND palo alto。还有个扩展的方法。这个双词索引出现的问题有:会出现伪正例子,由于词典中词项数目剧增,导致索引空间也激增。双词索引方法并不是一个标准的做法 (即倒排索引中一般不会全部采用双词索引方法),但是可以和其他方法混合使用。

第二种是带位置信息索引。即在倒排记录表中,对每个term在每篇文档中的每个位置(偏移或者单词序号)进行存储。对于输入的短语查询,需要在文档的层次上进行
迭代(不同位置上)合并。例子:

位置索引增加了位置信息,因此空间较大,但是可以采用索引压缩技术进行处理。位置索引目前是实际检索系统的标配,这是因为实际中需要处理短语(显式和隐式)和邻近式查询。位置索引的大小大概是无位置信息索引的2-4倍。

此外,我们采用这两种方法的混合。Williams et al. (2004)对一种混合的索引机制进行了评估,采用混合机制,那么对于典型的Web查询(比例)来说,相对于只使用位置索引而言,仅需要其¼ 的时间。相对于只使用位置索引,空间开销只增加了26%。

最后,小结。

觉得只是很浅的说完这些,后面需要更深层次的理解。

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值