Неспешно делается неторопливый HMM-архиватор.


Сайт о сжатии >> Форум #Компрессор# >> [Ответить] [Ответы]

Автор: Олег Набатов, <oleg_nabatov@mail.ru>
Россия, 24 июля 2003 года в 21:55:43

HMM это Hidden Markov Model - Марковская модель со скрытым слоем.

Флейм.
В ppm-архиве основной вес приходится на ошибки Марковской модели. Если файл содержит текст то наибольшая информация приходится на начало слов. Буквы внутри и особенно в конце слова ppm хорошо прогнозирует, поэтому улучшение сжатия должно быть направлено именно на устранение избыточности в предсказании первой буквы, а не совершенствование предсказания следующих.

Пример.
Имеем 256 символов. Допустим ppm знает что за пробелом обычно идет одна из 32 букв. Самые популярные весят по 3 бита, редкие по 6, остальные из 256-и символов соответственно получают вес 9 бит. Это несколько упрощено.
В файле значительны объем приходится на буквы по 5 бит. 9-битные встречаются редко, основные символы это середина и конец слов, их размер 1-2 бита.

Но.
Если мы знаем правила вроде того что за прилагательным обычно идет существительное то распределение сильно изменится. Основная масса будет по прежнему по 9 бит, а первые слова существительных по 4, плюс мы имеем некоторую поправку к вероятностям суффиксов и окончаний. Думаю общий выигрыш должен быть 10-20%. Это оставит позади все семейство ppm-архиваторов, которые между собой отличаются меньше.

Идея.
Пока мне представляется что разница PPM и HMM в том что последний не предсказывает на каждом шаге следующий символ, а иногда должен просто перестраивать распределения. Он должен работать по словам - распаковываемые символы это описание слова во внутренней классификации а не сами буквы, последний символ распакованный из арифметика это, например, число букв. После чего система на автопилоте выдает собственно буквы.

Алгоритм пока вырисовывается N*N*LogN но возможно может быть оптимизирован до N*LogN*LogN. В моем случае качество результата важнее скорости.

Ответы:



Ответить на это сообщение

Тема:

Имя (желательно полное):

E-Mail:

URL:

Город:

Страна:

Вежливый и подробный комментарий:
(Форматируйте его, пожалуйста, как почту - короткими строками
Еnter в конце строки, пустая строка между параграфами).

Пожалуйста, заполните все поля.
И не нажимайте по два раза на кнопку! Дождитесь ответа сервера.