【问题标题】:Is there a way to store gzip's dictionary from a file?有没有办法从文件中存储 gzip 的字典?
【发布时间】:2013-02-24 01:24:51
【问题描述】:

我一直在对基于压缩的文本分类进行一些研究,并试图找出一种方法来存储由编码器(在训练文件上)构建的字典,以便在测试中“静态”运行文件?这完全可以使用 UNIX 的 gzip 实用程序吗?

例如,我一直在使用 sport.txt 和 atheism.txt 的 2 个“类”文件,因此我想对这两个文件运行压缩并存储它们使用的字典。接下来我要获取一个测试文件(未标记,可能是无神论或运动),并通过使用此 test.txt 上的预构建字典,我可以分析它在该字典/模型下的压缩程度。

谢谢

【问题讨论】:

    标签: algorithm unix dictionary compression classification


    【解决方案1】:

    deflate 编码器,如 gzip 和 zlib,不会“构建”字典。他们只是使用之前的 32K 字节作为可能匹配从当前位置开始的字节串的来源。最后 32K 字节称为“字典”,但名称可能会产生误导。

    您可以使用zlib 来试验预设词典。请参阅 deflateSetDictionary()inflateSetDictionary() 函数。在这种情况下,zlib 压缩以 32K 字节的“字典”作为初始值,该“字典”有效地先于第一个字节被压​​缩作为匹配源,但字典本身并未被压缩。启动只能改进前 32K 字节的压缩。之后,预设字典太远,无法提供匹配项。

    gzip 不支持预设字典。

    【讨论】:

    • 非常感谢您提供的信息,我没有意识到 gzip 是如何工作的。是否可以使用 lz78(例如使用 compress 实用程序)或 lzw 方法?
    • LZW 与现代方法相比是无效的。这不值得考虑。在我理解你想要做什么的范围内,你可以使用 deflate 32K 字典。您要做的是识别代表数据中的常见字符串,然后用这些字符串打包一个 32K 字典。 deflate 的压缩算法无法帮助您做到这一点。您需要编写自己的代码来查找这些常见字符串。
    • 太棒了,非常感谢您的帮助。我真的很感激!
    • 马克,我能再问一个简单的问题吗?一些基本的东西,我无法理解。 gzip压缩时是从文件头读到尾,还是从文件尾读到开头?
    猜你喜欢
    • 2020-10-01
    • 1970-01-01
    • 2023-02-25
    • 2021-09-04
    • 2010-12-05
    • 1970-01-01
    • 2017-05-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多