![]() |
|
![]() ![]() ![]() |
|
Деордица |
|
|||
не понял Профиль Группа: Участник Сообщений: 4 Регистрация: 17.2.2011 Где: Кишинёв Репутация: нет Всего: нет |
Я бы написал на форум http://forum.compression.ru/, но не смог там зарегистрироваться
Предлагаю для сжатия текста следующий алгритм: Для начала найти 50000 самых частовстречающихся словоформ. Использовать для этого можно библиотеку Мошкова. Это примерно 5000 слов в разных падежах и склонениях. Эти слова будут заменяться на 2 байта, указывающих номер этого слова в таблице. В таблице слова будут располагаться не по частоте, а по алфавиту. Это нужно чтобы ускорить архивирование. В специальном массиве размером 33Х33 будут храниться номера слов которые первыми начинаются с двух данных букв. Например, чтобы найти слово "капля" нужно найти какое слово начинается с "ка" в таблице первым. Затем перебором доходим до слова "капля" и узнаём какой код ему соответствует. Это его номер в таблице. Пробел кодируется нулём. Слова которых нет в словаре кодируются единицей, плюс длина слова, плюс само слово. Те слова которые не попали в 50000 самых частовстречающихся словоформ будут кодироваться тремя байтами. Для этого составляется ещё одна таблица - редковстречающихся словоформ. Размер этой таблицы может достигать примерно 14000*256=3584000 словоформ. Сюда можно запихнуть английский язык и ещё место останется. |
|||
|
||||
nworm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: 4 Всего: 8 |
А что, интересный подход. Можно исследовать, смотреть, менять детали.
|
|||
|
||||
Jimy |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 177 Регистрация: 4.7.2010 Репутация: 1 Всего: 3 |
Средняя длина слова в русском языке - 5,28 символа (источник).
Если даже применить Ваш алгоритм к идеальному для него тексту (100% слов будут содержаться в словаре и будут закодированы по 2 байта на слово), то степень сжатия текста составит около 37% от исходного, что вовсе не является выдающимся результатом. А для "неидеальных" текстов результат будет и того хуже. |
|||
|
||||
Деордица |
|
|||
не понял Профиль Группа: Участник Сообщений: 4 Регистрация: 17.2.2011 Где: Кишинёв Репутация: нет Всего: нет |
Да, но результат сжатия можно сжать ещё каким-нибудь архиватором, правда насколько он будет сжиматься можно определить только экспериментально. |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 2 Всего: 85 |
Чисто по опыту. если текст сжать сначала zip, а потом rar, то результат будет хуже, чем если просто, сразу rar. По поводу алгоритма, скажу, что мне тоже когда-то приходила такая мысль. И уж вероятно, что не только мне и вам. Ведь алгоритмы сжатия текста отрабатываются не одно десятилетие. ![]() К тому же такой алгоритм будет работать только с одним каким-то языком, и одной кодировкой. Если включать все языки и кодировки, то размер словарей такого архиватора будет ой-ей-ей! (Я уже не говорю о работе по составлению таких словарей. ![]() В перспективе мы будем иметь очень большой архиватор, который сжимает только текст, и которому для полноценной работы будет нужен еще какой-то архиватор... ![]() |
|||
|
||||
borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: нет Всего: 135 |
где-то читал про такой алгоритм сжатия текста:
вычисляется частота появления букв, а не слов, далее самые частые буквы кодируются 4-мя битами (фактически 3-мя, т.е. 8 букв, т.к. 1 бит - маркерный и всегда равен 0). Оставшиеся буквы кодируются 7-ю битами (фактически 5-ю, т.к. 2 бита - маркерные и всегда равны 10). Оставшиеся символы кодируются 8-ю битами (фактически 6-ю, т.к. 2 бита маркерные и всегда равны 11). Это сообщение отредактировал(а) borisbn - 28.2.2011, 11:10 -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |