Compression Can压缩算法“;“学习”;在一组文件上,并更好地压缩它们?

Compression Can压缩算法“;“学习”;在一组文件上,并更好地压缩它们?,compression,Compression,是否有支持对某些文件集进行“学习”或使用某些文件作为压缩其他文件的基础的压缩库 如果我们想压缩许多相似的文件,以保持对每个文件的快速访问,那么这将非常有用 比如: # compression: compressor.learn_on_data(standard_data); compressor.compresss(data, data_compressed); # decompression: decompressor.learn_on_data(the_same_standard_data

是否有支持对某些文件集进行“学习”或使用某些文件作为压缩其他文件的基础的压缩库

如果我们想压缩许多相似的文件,以保持对每个文件的快速访问,那么这将非常有用

比如:

# compression:
compressor.learn_on_data(standard_data);
compressor.compresss(data, data_compressed);

# decompression:
decompressor.learn_on_data(the_same_standard_data);
decompressor.decompress(data_compressed, data);
它叫什么(我认为“增量压缩”是另一回事)?在流行的压缩库中有这样的实现吗?我希望它能工作,例如,用标准数据预先填充字典。

是的,它能工作。 尽管有很多方法可以做到这一点,但最简单的方法是“字典预填充”。简言之,您提供了一个文件,其中最新的部分被“摘要化”(最大窗口大小,根据您的算法可以是4K到64MB),因此可以用于更好地压缩下一个文件

实际上,这类似于“实体模式”,即在存档中,所有相同类型的文件都分组在一起,以便前一个文件可以用作下一个文件的字典,从而提高压缩比


缺点:必须为压缩器和解压缩器提供相同的字典。

标准lzma/zlib/任何压缩库都支持它吗?/*我还没有尝试过lzma的压缩库*/我不知道。对于zlib,我在某个地方读到过它被支持的消息,尽管我自己还没有亲眼目睹过。按照更简单的方法,将此功能添加到LZ4将非常简单:。Cyan4973及其自定义词典如何?