8

私は圧縮ベースのテキスト分類についていくつかの研究を行ってきました.テストファイルで「静的に」実行するために使用するために、エンコーダーによって(トレーニングファイルで)構築された辞書を保存する方法を見つけようとしていますか? これは、UNIX の gzip ユーティリティを使用してまったく可能ですか?

たとえば、sport.txt と atheism.txt の 2 つの「クラス」ファイルを使用しているため、これらのファイルの両方で圧縮を実行し、使用した辞書を保存したいと考えています。次に、テスト ファイル (ラベルが付けられていない、無神論またはスポーツのいずれか) を取得し、この test.txt で事前に作成された辞書を使用して、その辞書/モデルの下でどの程度圧縮されているかを分析できます。

ありがとう

4

1 に答える 1

9

gzip や zlib のような deflate エンコーダーは、辞書を「構築」しません。現在の位置から始まるバイト文字列に一致する可能性のあるソースとして、前の 32K バイトを使用するだけです。最後の 32K バイトは「辞書」と呼ばれますが、その名前はおそらく誤解を招くものです。

zlibを使用して、プリセット辞書を試すことができます。deflateSetDictionary()および関数を参照してくださいinflateSetDictionary()。その場合、zlib 圧縮は、一致のソースとして圧縮される最初のバイトに効果的に先行する 32K バイトの「ディクショナリ」で準備されますが、ディクショナリ自体は圧縮されません。プライミングは、最初の 32K バイトの圧縮のみを改善できます。その後、プリセット辞書は、一致を提供するには遠すぎます。

gzip は、プリセット辞書をサポートしていません。

于 2013-03-08T16:10:03.243 に答える