信息检索导论入门(五)

写在前面的话

本文是信息检索导论的第五章,压缩部分,本文主要内容如下

  • 索引压缩
  • 倒排记录表压缩

对于索引压缩主要是采用的将词项放在同一字符串,减少指针,再对重复的前缀进行编码

对于倒排记录表就是通过编码来压缩倒排记录表的数字

整体内容上比较晦涩,对于编码技术兴趣不大的人看起来会比较头疼,我也是很迅速的过了这一章

索引压缩

压缩的优点:

  • 节省磁盘空间
  • 增加高速缓存的利用率
  • 加快磁盘到内存的传输速度

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

Heap定律:词项数目的估计

Heaps定律

1
M = kT^b
  • T:文档集合中词条的个数
  • M:词项数目
  • k >= 30 && k <= 100
  • b = 0.5

Heap定律的假设:

  • 随着文档数目的增加,词汇量会持续增长而不会稳定到一个最大值
  • 大规模文档集的词汇量也会非常大

Zipf定律:对词项分布的建模

如果t1是文档集中出现最多的词项,t2是文档集中的出现第二多的词项,那么排名第i多的词项的文档集频率cfi与1/i成正比

词典压缩

词典压缩的最主要目的是将词典放入内存中

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

字符串压缩

  • 将所有词项压缩成一个字符串
  • 每个词项增加一个定位指针
  • 通过二分查找来定位所需的词项

按块存储

块压缩

  • 只保留每个块开始的指针
  • 在词项开始的地方增加词项的长度存储

压缩搜索

块中词项越多,压缩率越大,但是查找会更缓慢

另外,使用前端编码技术(front coding),可以对词项的公共前缀进行压缩,进一步缩小词项大小。

倒排记录表的压缩

思路:对小数字采用比大数字更短的编码方式

可变字节码

VB编码(Variable byte,可变字节)利用整数个字节来对间距编码

y编码

y编码

采用了y编码后,在本文提到的所有压缩方式效果如下所示:

压缩效果