Compression 如何计算良好的预设置字典进行放气压缩

Compression 如何计算良好的预设置字典进行放气压缩,compression,gzip,zlib,deflate,jzlib,Compression,Gzip,Zlib,Deflate,Jzlib,我有机会预先设置字典以进行压缩。这在我的例子中是有意义的,因为要压缩的数据相对较小,只有1kb-3kb,而且我有大量代表性示例。要压缩的数据由任意字节序列组成,因此标记化等不是一种好方法。而且,数据显示了大量重复(在数据示例之间),所以好的字典可能会给出非常好的结果。 问题是如何计算好词典?是否有计算最优字典(给定样本数据)的算法 我开始研究前缀树,但不清楚在这种情况下如何使用它们 致以最良好的祝愿, Jarek我不知道有什么算法可以生成一个最佳的甚至是一个好的词典。这通常是手工完成的。我认为后

我有机会预先设置字典以进行压缩。这在我的例子中是有意义的,因为要压缩的数据相对较小,只有1kb-3kb,而且我有大量代表性示例。要压缩的数据由任意字节序列组成,因此标记化等不是一种好方法。而且,数据显示了大量重复(在数据示例之间),所以好的字典可能会给出非常好的结果。 问题是如何计算好词典?是否有计算最优字典(给定样本数据)的算法

我开始研究前缀树,但不清楚在这种情况下如何使用它们

致以最良好的祝愿,
Jarek

我不知道有什么算法可以生成一个最佳的甚至是一个好的词典。这通常是手工完成的。我认为后缀树是查找字典常用字符串的好方法,但我从未尝试过

第一件要尝试的事情是简单地连接32K的1-3K示例,看看这比没有字典能提供多少好处。然后你从那里开始搞乱它,改变例子的顺序,或者把例子中重复的部分拖到字典的末尾


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

我不知道这有多好,但它是一个字典创建者:

谢谢马克,这正是我现在正在做的。即使使用简单的连接示例,压缩也非常好。我还将尝试寻找最常见的子字符串,并将它们放在字典的末尾。我还计划使用不止一本词典(我的样本可以自然地划分为子类别)。