信息检索——索引压缩

本文详细介绍了信息检索中为何需要进行索引压缩,包括词典和倒排记录表的压缩方法。提到词项的统计特性,如Heaps定律和Zipf定律,并探讨了词典压缩的多种策略,如定长数组、长字符串、按块存储和前端编码。此外,还讨论了倒排记录表的可变字节编码和Gamma编码等压缩技术,以实现更高的存储效率和更快的检索速度。
摘要由CSDN通过智能技术生成

索引压缩

目录

索引压缩

为什么需要压缩?

两种压缩方式:

信息检索中词项的统计特性

Heaps定律

Zipf定律

词典压缩

用定长数组来存储词典中的词项。

将词典看成单一字符串的压缩方法  

按块存储

前端编码

倒排记录表的压缩

可变字节编码VB编码

gamma 编码


 

索引压缩:对词典和倒排记录表这两个数据结构进行压缩。

 

为什么需要压缩?

  1. 使用更少的磁盘空间

节省资金

  1. 在内存中存放更多信息

提高速度

  1. 提高数据从磁盘传输到内存的速度

读取压缩数据|解压缩 比 读取未压缩数据 快得多

前提:解压缩算法是高效的

 

词典尽可能全部放在内存中,如果放不下,

倒排表没有办法全部放在内存中,把查询最多的词项的倒排表放在内存。

 

词典:

  1. 使其足以存放在内存中
  2. 使内存可以多容纳一些倒排记录表

倒排记录表:

  1. 减少所需的磁盘空间
  2. 减少从磁盘中读取倒排记录表所需的时间
  3. 大型搜索引擎将一部分倒排记录表保存在内存中(压缩使内存能保存更多的倒排记录表)

 

 

两种压缩方式:

无损压缩:所有原始信息都保留(大多数IR系统的做法)

有损压缩:大小写转换,词干还原,停用词...

会造成一定的信息丢失,但是有时候对检索没影响

 

 

信息检索中词项的统计特性

  1. 词项的个数:Heaps定律
  2. 词项在文档出现的次数,有的词项出现的多,有的词项出现的次数少:Zipf定律

文档集频率:一个词项在文档集中总共出现次数

文档频率:一个词项在几个文档中出现,倒排索引一部分。

区别:词A中文档1中出现了3次,文档频率只算1个,但文档集频率算3

 

Heaps定律

词项数目的估计

  • Heaps’ 定律: M = kTb
  • M 是词汇表大小, T 是文档集中的词条个数
  • 参数k和b的典型取值为: 30 ≤ k ≤ 100 b ≈ 0.5
  • Heaps定律认为,在对数空间中词汇量 M T,存在线性关系

 

Zipf定律

对词项分布的建模

自然语言中存在一些高频词项,也存在一些极低频词项

  • Zipf’s 定律: 排名第i多的词项的文档集频率与1/i 成正比.
  • cfi文档集频率: 文档集中排名第i多的词项的文档集频率.
  • cfi ∝ 1/i = K/i K 是一个常量
  • 如果出现最多的词项的出现次数是cf1的话
    • 出现第二多的词项的出现次数就是 cf1的一半
    • 出现第三多的词项出现次数是cf1的1/3 …
  • 等价变换: cfi = K/i ,其中k=1, 因此
    • log cfi = log K - log i
  • log cfi log i 线性关系

 

 

 

词典压缩

定长数组(浪费空间)——长字符串(完全不浪费空间)——按块存储(继续减少词项指针占的空间)——       前端编码

定长数组(浪费空间,11.2MB)——长字符串(完全不浪费空间,7.6MB)——按块存储(继续减少词项指针占的空间,7.1MB)——前端编码(5.9MB)

用定长数组来存储词典中的词项。

——浪费空间。词项没那么长,为了存储很长的单词为每个词项使用同样大的小存储空间。

 

terms:词项,每个词项采用20个字节来存储。

Freq:文档频率(查询优化使用,也要存储),4个字节

postings ptr:倒排表指针,4个字节

词典需要存储词项文档频率倒排表三部分,压缩重点在词项上。

每个词项用20个字节浪费。

about:占6个   computer:占9个  20个:有些词项太长

初始时直接设20个,为了容纳很 长的单词,为每个词项都 安排了20个字节

缺点:浪费空间,一般单词都没20个那么长

例子

定长数组这种方法花多少空间来存储400K个词项

每个词项需要存三部分(词项本身20,文档频率4,倒排表指针4)

400K

0.4M*(20+4+4)=11.2MB

做实验:先用小数据集来做实验,再应用到大型的数据集。

单词的平均长度为8字节。

 

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

NoTqqa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值