5

トレーニング済みのデータを使用してデータを圧縮および解凍できる、事前にトレーニングできる圧縮アルゴリズムがあるかどうかを調べようとしています。

圧縮アルゴリズムがどのように機能するかは正確にはわかりませんが、これが可能であるという予感はあります。

たとえば、これらの行を個別に圧縮すると、あまり圧縮されません。

banana: 1, tree: 2, frog: 3
banana: 7, tree: 9, elephant: 10

事前に数百のサンプル行を使用して圧縮アルゴリズムをトレーニングすると、「バナナ」をコード/ルックアップ値にマッピングする方法が既にあるため、非常によく圧縮されます。

私の質問を説明するのに役立つ疑似コード:

# 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)

これを可能にする一般的な (つまり、一般的な言語用のライブラリがある) 圧縮アルゴリズムはありますか?

4

2 に答える 2

4

ほとんどの圧縮アルゴリズムの用語で説明しているのは、コンプレッサーのプリセット辞書です。

すべての圧縮ライブラリについて話すことはできませんが、zlibは、deflateSetDictionary()およびinflateSetDictionary()関数を介して、これを(想像しているとおりに)確実にサポートします。詳細については、zlibのマニュアルを参照してください。

于 2013-03-18T01:54:12.107 に答える
1

それは存在し、Lempel-Zivコーディングと呼ばれています。詳細はこちらをご覧ください。

http://en.wikipedia.org/wiki/LZ77_and_LZ78

いくつかの「辞書」タイプの可逆圧縮方式の1つです。

LZは、Zipアーカイバが基本的に行うことです。

于 2013-03-18T01:52:34.983 に答える