每年,压缩算法都会得到改进,出现一些新的东西,或者对现有的算法进行修改。
问题:
目前存在的 2016 年文本信息压缩算法中的哪一个给出了最好的结果(自然地,没有损失)?
此外:
- 文本将自己表示为一组来自拉丁文、西里尔文、标点符号的字符 - 来自 ASCII(cp866 或 win-1251),也许伪图形也将是
- 相同的字符集,但以 ru_RU.UTF-8 编码呈现
目前为止,听说过,但是时间比较长,PPMd,PPMz算法。还有更完美的东西吗?
每年,压缩算法都会得到改进,出现一些新的东西,或者对现有的算法进行修改。
问题:
目前存在的 2016 年文本信息压缩算法中的哪一个给出了最好的结果(自然地,没有损失)?
此外:
目前为止,听说过,但是时间比较长,PPMd,PPMz算法。还有更完美的东西吗?
这个问题的最佳答案是在encode.ru 论坛上提问。我个人并没有非常密切地关注它,所以随便:paq8px、emma、cmix(每个在论坛上都有自己的主题)。此外,预处理——字典替换(xml-wrt)、Grabowski tricks。请记住,文本必须足够大(好吧,至少数百 KB)并且压缩/解压缩速度可以在几 kb / s 的范围内,并且在不影响压缩的情况下不可能进行多线程处理。
实际上,您提供的链接http://mattmahoney.net/dc/text.html对您的问题给出了相当详尽的答案。该级别的所有算法都在 encode.ru 论坛上收到分支,并由 Mutt 在英语维基百科的文本上进行测试。
是的,语言/编码(假设它是 8 位)只对字典预处理器很重要——它们通常只适用于拉丁语。其余算法适用于任何语言。
如果您真正想要的不是最大压缩率,而是速度和压缩率的最佳组合,那么对于文本我更喜欢bsc,尤其是因为它是唯一能够使用 GPU 的通用压缩库。
我试图压缩“战争与和平”(从这里)
可以看出PPMd在战争与和平上最有效。
接下来是 BZ2,然后是 LZMA2 和 Deflate。
我试过 cmmix。他真的吃掉了36GB内存,压缩了43分钟。
它也有带字典(拼写)的模式,但只包含约 45,000 个英语单词的字典。
然而,这些都是相当古老且广为人知的算法。或许还有别的,更适合题主需要压榨的课文。
闲来无事,就把《战争与和平》拆成文字,用霍夫曼编码。结果444Kb不算表。那些。这是个坏主意。
一张图片的八位表示,通常这可以减少。(当然,我的意思是字符的八位表示)。如果文本是双语预处理:减少字母 - 使用字符匹配 t=t g=g L=L 等。并在文本中用拉丁语表示文本开始和结束的标记。另一种方法是不使用符号,而是使用音节作为文本编码的单位(以完成诗歌和文本);如果我没记错的话,30% 的音节占文本的 70-75%。另外,朋友们,有点题外话的提醒——有“有损”压缩方法,恢复后可以提供很高的准确性!最后:为了最大程度地压缩文本,应使用与艺术类别的文件规范(文本片段的规范)相对应的算法。文学或技术 一位作者的文学或文本,