Compression &引用;“启动”;或;“培训”;用于压缩/解压缩的压缩算法?

Compression &引用;“启动”;或;“培训”;用于压缩/解压缩的压缩算法?,compression,Compression,我试图找出是否有一种可以事先训练的压缩算法,你可以使用训练过的数据来压缩和解压数据 我不知道压缩算法是如何工作的,但我有一个线索,这是可能的 例如,如果我单独压缩这些行,它不会压缩得很好 banana: 1, tree: 2, frog: 3 banana: 7, tree: 9, elephant: 10 如果我事先用100个样本行训练压缩算法,它会压缩得非常好,因为它已经有了将“香蕉”映射到代码/查找值的方法 帮助解释我的问题的伪代码: # Compressing side rip =

我试图找出是否有一种可以事先训练的压缩算法,你可以使用训练过的数据来压缩和解压数据

我不知道压缩算法是如何工作的,但我有一个线索,这是可能的

例如,如果我单独压缩这些行,它不会压缩得很好

banana: 1, tree: 2, frog: 3
banana: 7, tree: 9, elephant: 10
如果我事先用100个样本行训练压缩算法,它会压缩得非常好,因为它已经有了将“香蕉”映射到代码/查找值的方法

帮助解释我的问题的伪代码:

# Compressing side

rip = Rip()
trained = rip.train(data)  # once off
send_trained_data_to_clients(trained)

compressed = rip.compress(data)

# And on the other end

rip = Rip()
rip.load_train_data(train)
data = rip.decompress(compressed)

有没有一种通用的(即有流行语言库)压缩算法让我来做这件事?

它存在并且被称为Lempel-Ziv编码,您可以在这里阅读更多内容:

它是几种“字典”式无损压缩方法之一


LZ是Zip archiver的基本功能。

用大多数压缩算法的说法,您所描述的将是压缩机的预设字典


我不能代表所有的压缩库,但zlib肯定支持这一点——正如您想象的那样——通过
deflateSetDictionary()
inflateSetDictionary()
函数。有关详细信息,请参阅。

哇,我看到字典的压缩量增加了约2-5倍。太棒了!