![]() |
Модераторы: bsa |
![]() ![]() ![]() |
|
Bugrimov |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 8.11.2012 Репутация: нет Всего: нет |
Доброе время суток!
Нужна помощь в вопросе нахождения энтропии текста, максимальной энтропии и избыточности текста. Кто-нибудь сталкивался с данным вопросом? Добавлено @ 18:13 Есть следующая функция, до которой я додумался
Но, на сколько я понимаю, максимальная энтропия и избыточность находятся не верно. ![]() Нужен совет знающих людей. Это сообщение отредактировал(а) Bugrimov - 26.11.2012, 18:15 |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
А что значит энтропия текста ?
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
Bugrimov |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 8.11.2012 Репутация: нет Всего: нет |
http://ru.wikipedia.org/wiki/%C8%ED%F4%EE%...%F0%EE%EF%E8%FF
Добавлено через 6 минут и 45 секунд http://www.sernam.ru/book_tec.php?id=53 |
|||
|
||||
Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 4 Всего: 39 |
как известно гласных в словах больше, но именно согласные несут информацию в словах. Если из слова убрать все гласные буквы, то это слово мы по прежнему можем понять по согласным буквам. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
Bugrimov |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 8.11.2012 Репутация: нет Всего: нет |
Есть какие-нибудь соображения по поводу кода
|
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
На вид, должно быть не log(total), а log(256) (ну, или если Вы все знаки препинания свалили в одну кучу, то логарифм меньшего числа, чем 256). Судя по учебнику, должно быть
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
Bugrimov |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 8.11.2012 Репутация: нет Всего: нет |
Но в тексте файла могут не использоваться все символы (256). Максимальная энтропия не рассчитывается от размера алфавита например текст "aaacccbbms" - размер алфавита 5, т.е. 5 символов, поправьте меня если я ошибаюсь. Как тогда должен выглядеть программный код? |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Могут, но Вы же их учитываете (посмотрите, как формируется total), учитываете даже пробелы, табуляцию, перенос строк, различаете строчные буквы от прописных. Потом, если в тексте не встретилась какая-то буква алфавита, то это не значит, что её существование можно проигнорировать (как раз нет, просто она редко встречается). Ограничьте себя английским алфавитом или русским. Не различайте строчные и прописные буквы. Если есть необходимость в учёте знаков препинания - учитывайте. Все остальные символы игнорируйте. Соответственно вместо 256 получится 26/27 или 32/33/34 (если учитывать ё и пунктуацию) символов. -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Рекурсия здесь не нужна абсолютна. По поводу энтропии. вы ее никогда точно не посчитаете. Приблизительно её можно оценить с помощью архиватора. Архиваторы, асимтотично стремятся к некому пределу сжатия. У кого-то лучше получается, у кого-то хуже. Со временем появляются новые архиваторы, которые сжимают текст еще лучше. Но ни один архиватор никогда не сможет сжать текст ниже уровня энтропии. А вот каков он этот предел... кто ответит? ![]() |
|||
|
||||
Bugrimov |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 8.11.2012 Репутация: нет Всего: нет |
Я пытался добиться следующего:
Открыть любой текстовый файл. Рассчитать его энтропию (регистр не учитывается - строчные и прописные символы одинаковые, все знаки препинания подсчитать как один символ - любой символ), максимальную энтропию и избыточность текста. В коде рассмотрен еще один вариант - для пар символов. Я полагал, что есть определенная формула по расчету энтропии, максимальной энтропии, избыточности. С энтропией и избыточностью вроде разобрался с макс. энтропией вообще ничего не понятно. Есть у кого-нибудь образец кода. |
|||
|
||||
feodorv |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
В коде, который Вы привели, регистр учитывается. А так же пробелы, табуляция, перевод строки и прочая. Судя по заданию, нужно именно ограничиться каким-то языком (русским или английским), плюс пунктуация. А при чём здесь образец кода, когда максимальная энтропия достигается при равных вероятностях для всех букв алфавита?
где m - число букв алфавита (с учётом пунктуации). -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
||||
|
|||||
Bugrimov |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 8.11.2012 Репутация: нет Всего: нет |
Подскажите пожалуйста как в моем куске кода можно сделать, чтобы регистр не учитывался, знаки препинания (табуляция и пробелы) считались как один символ.
Число букв алфавита m. Для большего понимания. Например текст: фффаааяяя qqrrr (6 букв алфавита). Я верно понимаю? Или учитываются все буквы алфавита. Если например текст латинница - все буквы латинского языка, если русский - то русского. Это сообщение отредактировал(а) Bugrimov - 29.11.2012, 04:46 |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
Честно говоря, для большей ясности лучше спросить у заказчика))) Лично я бы тупо ограничился английским алфавитом, завёл бы массив из 27 позиций (26 на буквы, 1 на остальные символы) и сделал бы аналогично Вашему коду, только иначе бы вычислял индекс массива:
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
Bugrimov |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 8.11.2012 Репутация: нет Всего: нет |
Будут открываться текстовые файлы на русском или английском языке, возможно это предусмотреть как-нибудь в коде.
Этот вопрос так же актуален... ![]() |
|||
|
||||
feodorv |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: 12 Всего: 45 |
А что по этому поводу говорит "заказчик"?
-------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "C/C++: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |