信息检索5-索引压缩.ppt

  1. 1、本文档共60页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
信息检索5-索引压缩

* 如果使用词干还原,前端编码的压缩效果极为有限 * 共有前缀应该用于前端编码,如果使用词干还原,则不需要前端编码 * 19.6是给定N=800000,docID最高可能消耗的存储空间,即docID=799999(从0开始) * 130二进制表示:1 offset: length: 111111110; 130: 111111110* 最优编码:理想状态下的编码,例如霍夫曼编码的最优状态 * 总体来看gamma编码的压缩效率稍高 * * * 单一字符串方式下按块存储 * 现代信息检索 现代信息检索 按块存储下的空间消耗 如果不按块存储,则每4个词项指针将占据空间4 × 3=12B 现在按块存储,假设块大小k=4,此时每4个词项只需要保留1个词项指针,但是同时需要增加4个字节来表示每个词项的长度,此时每4个词项需要3+4=7B 因此,每4个词项将节省12-7=5B 于是,整个词典空间将节省400,000/4*5B=0.5MB 最终的词典空间将从7.6MB压缩至7.1MB * * 不采用块存储方式下的词项查找 * * * 采用块存储方式下的词项查找: 稍慢 * 现代信息检索 现代信息检索 前端编码(Front coding) 每个块当中 (k = 4),会有公共前缀 . . . 8 a u t o m a t a 8 a u t o m a t e 9 a u t o m a t i c 10 a u t o m a t i o n ? . . . 可以采用前端编码方式继续压缩 8 a u t o m a t ? a 1 ? e 2 ? i c 3 ? i o n * * Reuters RCV1词典压缩情况总表 * * * 课堂练习 哪些前缀应该用于前端编码?需要在哪些方面有所权衡? 输入: 词项列表,即词汇表 输出: 用于前端编码的前缀列表 * 提纲 * 上一讲回顾 压缩 词项统计量 词典压缩 倒排记录表压缩 * 倒排记录表压缩 倒排记录表空间远大于词典,至少10倍以上 压缩关键:对每条倒排记录进行压缩 目前每条倒排记录表中存放的是docID. 对于Reuters RCV1(800,000篇文档), 当每个docID可以采用4字节(即32位)整数来表示 当然,我们也可以采用log2 800,000 ≈ 19.6 20 位来表示每个docID. 我们的压缩目标是: 压缩后每个docID用到的位数远小于20比特 * * * 关键思想: 存储docID间隔而不是docID本身 每个倒排记录表中的docID是从低到高排序 例子: COMPUTER: 283154, 283159, 283202, . . . 存储间隔能够降低开销:283159-283154=5, 283202-283154=43 于是可以顺序存储间隔(第一个不是间隔) : COMPUTER: 283154, 5, 43, . . . 高频词项的间隔较小 因此,可以对这些间隔采用小于20比特的存储方式 * * * 对间隔编码 * * * 变长编码 目标: 对于 ARACHNOCENTRIC 及其他罕见词项, 对每个间隔仍然使用20比特 (bit位) 对于THE及其他高频词项,每个间隔仅仅使用很少的比特位来编码 为了实现上述目标,需要设计一个变长编码(variable length encoding) 可变长编码对于小间隔采用短编码而对于长间隔采用长编码 * * * 可变字节(VB)码 被很多商用/研究系统所采用 变长编码及对齐敏感性(指匹配时按字节对齐还是按照位对齐)的简单且不错的混合产物 设定一个专用位 (高位) c作为延续位(continuation bit) 如果间隔表示少于7比特,那么c 置 1,将间隔编入一个字节的后7位中 否则:将高7位放入当前字节中,并将c 置 0,剩下的位数采用同样的方法进行处理,最后一个字节的c置1(表示结束) 从高到低编码 * * * VB 编码的例子 * * * VB 编码算法 * 130?mod?128?=?2??--?bytes?数组 130?div?128?=?1,?prepend?到?bytes数组 于是循环结束有?bytes=[2,1] 算法最后一步,是在bytes[length(bytes)]上加128,即延续位置1 * * VB编码的解码算法 * 当延续位为1,bytestream[i]128,因此 if bytestream[i]128 判断的是数字之间界线 * * 其它编码 除字节外,还可以采用不同的对齐单位:比如32位(word)、16位及4位(nibble)等等

文档评论(0)

wyjy + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档