Algorithm 文本压缩算法

Algorithm 文本压缩算法,algorithm,unicode,compression,text-compression,Algorithm,Unicode,Compression,Text Compression,我只是想知道是否有人能给我介绍任何算法,将Unicode文本压缩到原始大小的10-20%? 事实上,我读过将文本大小减少到原始大小60%的算法,但我听说如果您只考虑文本压缩,而不是第一个使用基于熵的加密(称为Huffman编码)的算法,则有一些算法具有这种性能 然后是LZW压缩,它使用字典编码来使用以前使用的字母序列来分配代码以减小文件大小 我认为以上两种方法足以有效地编码文本数据,并且易于实现 注意:不要期望所有文件都能得到良好的压缩,如果数据是随机的,没有模式,那么任何压缩算法都不能提供

我只是想知道是否有人能给我介绍任何算法,将Unicode文本压缩到原始大小的10-20%?
事实上,我读过将文本大小减少到原始大小60%的算法,但我听说如果您只考虑文本压缩,而不是第一个使用基于熵的加密(称为Huffman编码)的算法,则有一些算法具有这种性能

然后是LZW压缩,它使用字典编码来使用以前使用的字母序列来分配代码以减小文件大小

我认为以上两种方法足以有效地编码文本数据,并且易于实现


注意:不要期望所有文件都能得到良好的压缩,如果数据是随机的,没有模式,那么任何压缩算法都不能提供任何压缩。压缩的百分比取决于文件中出现的符号,而不仅仅取决于所使用的算法。

LZ-like编码器不适合文本压缩。 但是,与unicode直接使用的最佳方法是lzma,因为它有位置对齐选项。()

但为了获得最佳压缩效果,我建议将unicode文本转换为字节格式, utf8,然后在文本上使用具有已知良好结果的算法,例如。 BWT()或PPMd()

还可以应用一些预处理来改进文本压缩的结果 (见附件) 还有一些压缩机的比率甚至比建议的要好 (主要是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算法容器(为使PAQ的未来更容易而创建)
  • -功能最强大,也可用于EXE和WAV文件
  • -更快(压缩和解压缩),主要用于TXT文件
您必须自己从源代码构建它们,幸运的是有人制作了一个GUI,将两个最好的二进制文件打包成一个

一旦您有了一个易于使用的函数二进制文件,就可以找到文档了


注:我知道这是一个非常古老的问题,但我希望包括相关的现代数据。我来寻找同样的问题,但找到了一个更新的、更强大的答案。

实际上,请转换为所描述的字节表示,而不是UTF-8。该文件还建议Burrows Wheeler对较大的Unicode文本进行压缩。请问使用这些压缩平均可以减少原始文本文件大小的多少百分比?哈夫曼编码平均减少到0.5,而LZW平均可以减少1/5,如果用于书面语言文本。 7z rar4 paq8px69 modeling_win1251.txt 156091 50227 42906 36254 modeling_utf16.txt 312184 52523 50311 38497 modeling_utf8.txt 238883 53793 44231 37681 modeling_bocu.txt 165313 53073 44624 38768 modeling_scsu.txt 156261 50499 42984 36485