我只是想知道是否有人可以向我介绍任何将 Unicode 文本压缩到其原始大小的 10-20% 的算法?实际上我已经阅读了Lempel-Ziv 压缩算法,它将文本大小减少到原始大小的 60%,但我听说有一些算法具有这种性能
3 回答
类似 LZ 的编码器对文本压缩没有任何好处。直接与 unicode 一起使用的最佳选择是 lzma,因为它具有位置对齐选项。( http://www.7-zip.org/sdk.html )
但为了获得最佳压缩效果,我建议将 unicode 文本转换为字节格式,例如。utf8,然后在文本上使用已知良好结果的算法,例如。BWT ( http://libbsc.com ) 或 PPMd ( http://compression.ru/ds/ppmdj1.rar )。
还可以应用一些预处理来改善文本压缩的结果(请参阅http://xwrt.sourceforge.net/)并且有一些压缩器比建议的压缩器具有更好的比率(主要是 paq 衍生物),但它们也很多慢点。
在这里,我测试了 Witten 的“文本压缩建模”的俄语翻译的各种表示:
7z rar4 paq8px69 建模_win1251.txt 156091 50227 42906 36254 建模_utf16.txt 312184 52523 50311 38497 建模_utf8.txt 238883 53793 44231 37681 建模_bocu.txt 165313 53073 44624 38768 建模_scsu.txt 156261 50499 42984 36485
它表明更长的输入并不一定意味着更好的整体压缩,SCSU 虽然有用,但并不是 unicode 文本的最佳表示(win1251 代码页也是其中之一)。
PAQ是文本压缩的新卫冕冠军...有几种不同的风格,有关它们的信息可以在这里找到。
我推荐三种口味:
- ZPAQ - 面向未来的 PAQ 算法容器(旨在让 PAQ 的未来更轻松)
- PAQ8PX/PAQ8KX - 最强大的,也适用于 EXE 和 WAV 文件。
- PAQ8PF - 更快(压缩和解压缩),主要用于 TXT 文件
您必须自己从源代码构建它们,幸运的是有人制作了一个 GUI,FrontPAQ,它将两个最好的二进制文件打包成一个。
一旦你有了一个易于使用的功能二进制文件,就可以在此处找到文档。
注意:我知道这是一个非常古老的问题,但我希望包括相关的现代数据。我来寻找同样的问题,但找到了一个更新更强大的答案。