Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Предлагаю алгоритм сжатия текста 
:(
    Опции темы
Деордица
Дата 17.2.2011, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не понял



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 17.2.2011
Где: Кишинёв

Репутация: нет
Всего: нет



Я бы написал на форум http://forum.compression.ru/, но не смог там зарегистрироваться
Предлагаю для сжатия текста следующий алгритм:
Для начала найти 50000 самых частовстречающихся словоформ. Использовать для этого можно библиотеку Мошкова. Это примерно 5000 слов в разных падежах и склонениях. Эти слова будут заменяться на 2 байта, указывающих номер этого слова в таблице.  В таблице слова будут располагаться не по частоте, а по алфавиту. Это нужно чтобы ускорить архивирование. В специальном массиве размером 33Х33 будут храниться номера слов которые первыми начинаются с двух данных букв. Например, чтобы найти слово "капля" нужно найти какое слово начинается с "ка" в таблице первым. Затем перебором доходим до слова "капля" и узнаём какой код ему соответствует. Это его номер в таблице.
Пробел кодируется нулём.
Слова которых нет в словаре кодируются единицей, плюс длина слова, плюс само слово.
Те слова которые не попали в 50000 самых частовстречающихся словоформ будут кодироваться тремя байтами. Для этого составляется ещё одна таблица - редковстречающихся словоформ. Размер этой таблицы может достигать примерно 14000*256=3584000 словоформ. Сюда можно запихнуть английский язык и ещё место останется.
PM MAIL WWW   Вверх
nworm
Дата 17.2.2011, 17:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 502
Регистрация: 22.10.2005

Репутация: 4
Всего: 8



А что, интересный подход. Можно исследовать, смотреть, менять детали.
PM MAIL WWW   Вверх
Jimy
Дата 17.2.2011, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 177
Регистрация: 4.7.2010

Репутация: 1
Всего: 3



Средняя длина слова в русском языке - 5,28 символа (источник).
Если даже применить Ваш алгоритм к идеальному для него тексту (100% слов будут содержаться в словаре и будут закодированы по 2 байта на слово), то степень сжатия текста составит около 37% от исходного, что вовсе не является выдающимся результатом.
А для "неидеальных" текстов результат будет и того хуже.
PM   Вверх
Деордица
Дата 18.2.2011, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


не понял



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 17.2.2011
Где: Кишинёв

Репутация: нет
Всего: нет



Цитата

степень сжатия текста составит около 37% от исходного, что вовсе не является выдающимся результатом.

Да, но результат сжатия можно сжать ещё каким-нибудь архиватором, правда насколько он будет сжиматься можно определить только экспериментально.
PM MAIL WWW   Вверх
volatile
Дата 19.2.2011, 00:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: 2
Всего: 85



Цитата(Деордица @  18.2.2011,  12:11 Найти цитируемый пост)
Да, но результат сжатия можно сжать ещё каким-нибудь архиватором

Чисто по опыту. если текст сжать сначала zip, а потом rar, то результат будет хуже, чем если просто, сразу rar.

По поводу алгоритма, скажу, что мне тоже когда-то приходила такая мысль. И уж вероятно, что не только мне и вам.
Ведь алгоритмы сжатия текста отрабатываются не одно десятилетие. smile 

К тому же такой алгоритм будет работать только с одним каким-то языком, и одной кодировкой. Если включать все языки и кодировки, то размер словарей такого архиватора будет ой-ей-ей! (Я уже не говорю о работе по составлению таких словарей. smile )
В перспективе мы будем иметь очень большой архиватор, который сжимает только текст, и которому для полноценной работы будет нужен еще какой-то архиватор... smile 
PM MAIL   Вверх
borisbn
Дата 28.2.2011, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 4875
Регистрация: 6.2.2010
Где: Ростов-на-Дону

Репутация: нет
Всего: 135



где-то читал про такой алгоритм сжатия текста:
вычисляется частота появления букв, а не слов, далее самые частые буквы кодируются 4-мя битами (фактически 3-мя, т.е. 8 букв, т.к. 1 бит - маркерный и всегда равен 0). Оставшиеся буквы кодируются 7-ю битами (фактически 5-ю, т.к. 2 бита - маркерные и всегда равны 10). Оставшиеся символы кодируются 8-ю битами (фактически 6-ю, т.к. 2 бита маркерные и всегда равны 11).

Это сообщение отредактировал(а) borisbn - 28.2.2011, 11:10


--------------------
Женщины отличаются от программистов тем, что у них чары состоят из стрингов
PM MAIL Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Алгоритмы | Следующая тема »


 




[ Время генерации скрипта: 0.1124 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.