Каково текущее состояние алгоритмов сжатия только текста?

В честь присуждения приза Хаттера, каковы лучшие алгоритмы (и краткое описание каждого) для сжатия текста?

Примечание. Цель этого вопроса — получить описание алгоритмов сжатия, а не программ сжатия.


person Brian R. Bondy    schedule 25.10.2008    source источник
comment
Однажды я видел (фиктивную) статью, предлагающую сжатие текста с потерями, с отличной производительностью (по размеру!) ... Было забавно.   -  person PhiLho    schedule 25.10.2008
comment
@PhiLho хех, по сути, это то, что Summly сделал :) 25.03.2013/yahoo_buys_summly   -  person John Carter    schedule 05.05.2013


Ответы (3)


Компрессоры, раздвигающие границы, объединяют алгоритмы для безумных результатов. Общие алгоритмы включают в себя:

  • преобразование Burrows-Wheeler и здесь — перемешивание символов (или других блоков битов) с помощью предсказуемого алгоритма для увеличения повторяющихся блоков, что облегчает сжатие источника. Распаковка происходит как обычно, и результат не перемешивается с обратным преобразованием. Примечание. Сам по себе BWT фактически ничего не сжимает. Это просто облегчает сжатие источника.
  • Прогнозирование с помощью частичного сопоставления (PPM) — эволюция арифметического кодирования где модель прогнозирования (контекст) создается путем обработки статистики об источнике, а не с использованием статических вероятностей. Несмотря на то, что его корни лежат в арифметическом кодировании, результат может быть представлен кодировкой Хаффмана или словарем, а также арифметическим кодированием.
  • Смешивание контекста — арифметическое кодирование использует статический контекст для предсказания, PPM динамически выбирает один контекст, смешивание контекста использует множество контекстов и взвешивает их результаты. PAQ использует смешение контекста. вот общий обзор.
  • Динамическое марковское сжатие – относится к PPM, но использует контексты на уровне битов, а не байтов и более.
  • Кроме того, участники приза Хаттера могут заменить обычный текст мелкобайтовыми записями из внешних словарей и различать текст в верхнем и нижнем регистре с помощью специального символа по сравнению с использованием двух разных записей. Вот почему они так хорошо сжимают текст (особенно текст ASCII) и не так ценны для общего сжатия.

Maximum Compression – довольно неплохой сайт для тестирования текстов и общего сжатия. Мэтт Махони публикует еще один тест. Махони может представлять особый интерес, поскольку в нем указан основной алгоритм, используемый для каждой записи.

person Corbin March    schedule 26.10.2008
comment
Существуют ли алгоритмы, которые сжимают текст и возвращают мне текст (не двоичный)? - person CMCDragonkai; 09.04.2015
comment
Сжатие Pied Piper не было обнаружено при создании этого списка! - person flakerimi; 14.05.2020
comment
Интересно, как использование ИИ gpt3 в прогнозировании следующей части токена может улучшить лучшие результаты до сих пор. Может ли он превзойти существующие на данный момент лучшие результаты? Давайте предположим, что нас не волнует скорость и нам нужно максимальное сжатие, например, для целей долгосрочного архивирования текста. - person sktguha; 28.08.2020

Всегда есть lzip.

Шутки в сторону:

  • Там, где проблема совместимости, PKZIP (алгоритм DEFLATE) по-прежнему побеждает.
  • bzip2 — это лучший компромисс между относительно широкой базой установки и довольно хорошей степенью сжатия, но для него требуется отдельный архиватор.
  • 7-Zip (алгоритм LZMA) очень хорошо сжимается и доступен по лицензии LGPL. Однако немногие операционные системы поставляются со встроенной поддержкой.
  • rzip — это вариант bzip2, который, на мой взгляд, заслуживает большего внимания. Это может быть особенно интересно для больших файлов журналов, которые нуждаются в долгосрочном архивировании. Также требуется отдельный архиватор.
person Sören Kuklau    schedule 25.10.2008

Если вы хотите использовать PAQ как программу, вы можете установить пакет zpaq в системах на основе Debian. Использование (см. также man zpaq)

zpaq c archivename.zpaq file1 file2 file3

Сжатие составляло примерно 1/10 размера zip-файла. (1,9 млн против 15 млн)

person serv-inc    schedule 21.01.2018