倒排索引压缩

来源:互联网 发布:电力软件开发 python 编辑:程序博客网 时间:2024/04/30 04:43

1、压缩的对象

倒排索引中,主要由:词典和单词对应的倒排表组成,倒排表主要记载3类信息:文档编号、文档中的词频、文档中的位序。(文档编号重排序使得文档号尽可能是按照从小到大排列,所以用用差值表示,求最终文档号需要cpu来计算差值)

压缩算法处理的就是倒排表的3类信息:文档编号、词频、位序。

压缩的指标:压缩率、压缩速度、解压缩速度(比较重要),压缩算法中重要的两个元素:一元编码、二进制编码。

一元编码:表示X则用X-1个1和一个0来表示: 如1:0, 2:10, 3:110, 4:1110

二进制编码:和计算机内部底层的二进制一样。

对于原始数据值较小的情况,压缩效果也较好。


2、常见的压缩算法

(1)Elias Gamma 和 Elias Delta:  x = 2(head e)+d

(2)Golomb算法和Rice算法

(3)变长字节算法(variable bytes)

(4)simpleX系列算法

(5)PForDelta算法


3、倒排索引中采取的方案

(1)无损压缩,文档编号重排序后用压缩算法进行压缩:确保在倒排表中相邻的两个文档的文档编号也相邻,这样D-Gap值也较小。希望内容越相似的文档其文档编号也越相似。

例子:包含“百度”的文档冲排序为文档编号相邻的文档,则创建“百度”倒排表时候,相邻的差值(D-Gap)则较小。百度-----D-Gap{1,4,9} 转化为  百度------D-Gap{1,1,1},  要压缩的原始数据值变小,则获得较高的压缩率。

文档编号重新排序,可以依靠按照某些主题词来聚类,将同一个类的文档编号排成相邻的。


(2)有损压缩,静态索引裁剪:将不重要的索引项从倒排索引中清除,只保留重要的索引项。静态索引裁剪分为:

a、以单词为中心的索引裁剪

根据默认返回数目,设定每个单词的倒排表的项至少为k个,设计相似性函数,计算单词和文档的相似性得分,把分数小于设定阈值的文档信息从倒排表中裁剪掉。

b、以文档为中心的索引裁剪

在建立索引之前,把文档中不重要的词语删除掉。这样的话可能导致通用词或者停用词的倒排表为空。


故以单词为中心的索引裁剪是更加常用的方法。







0 0