如何为deflate压缩计算良好的预设字典

5
我有机会为压缩算法Deflate预设词典。在我这种情况下,这是有意义的,因为要压缩的数据相对较小,仅为1kb-3kb,并且我有大量代表性示例。要压缩的数据由任意字节序列组成,因此标记化等方法并不适用。此外,数据中显示出很多重复(在数据示例之间),因此良好的词典可能会产生非常好的结果。 问题是如何计算好的词典?是否有一种算法可以计算最优的词典(给定样本数据)? 我开始研究前缀树,但不清楚如何在此上下文中使用它们。
最好的祝愿, Jarek
2个回答

4

我不知道有没有一种算法可以生成最优甚至是好的字典。通常都是手工完成。我认为使用后缀树来查找字典中的常见字符串可能是一个不错的方法,但我从未尝试过。

首先要尝试的是简单地将您的1-3K示例拼接成32K,并查看与没有字典相比提供了多少收益。然后您可以从那里进行调整,更改示例的排序或将示例中重复的部分提取到字典的末尾。

请注意,最常见的字符串应该放在末尾,因为较短的距离需要较少的位。


谢谢Mark,这正是我现在正在做的事情。即使是简单的连接示例,压缩效果也非常好。我还将尝试查找最常见的子字符串,并将其放置在字典的末尾。我还计划使用多个字典(我的样本可以自然地分成子类)。 - Jarek Odzga

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接