![]() |
|
![]() ![]() ![]() |
|
Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
Немного погуглил, но что-то особое пока не нашел. Хотелось бы почитать про то, как с помощью таблицы частотных распределений букв русского алфавита можно определить кодировку. Конечно, если такое возможно
![]() Может ссылка на какой полезный и раскрывающий данную тему ресурс будет?? А если еще и ![]() ![]() -------------------- менеджер по кодеврайтингу ![]() |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 5 Всего: 121 |
Распределение букв русского алфавита в любом тексте стремиться к нормальному. Кодировка задаёт соответствие таблицы кодов символам для отображения. Как это может быть связано? Только если какое-то эмпирическое наблюдение и то это кажется странным.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: 33 Всего: 110 |
это как? и почему? -------------------- qqq |
|||
|
||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: нет Всего: 13 |
а что подразумевается под словом "кодировка"?
случаем не шифрование смещением/заменой? потому что если да, то лучше использовать таблицу биномов (или как там они называются) |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 5 Всего: 121 |
maxim1000, до того момента, как ты меня спросил, я считал своё утверждение истинным
![]() Bulat, ты неверно сформулировал вопрос. За основу берётся не частотное распределени букв, а частотное распределение символьных кодов. MS уже всё сделала за тебя ![]() -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Bulat |
|
||||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
Под кодировкой имеется ввиду - utf8, koi8-r, win1251 и т.п.
W4FhLF, Это не я сформулировал, это было сформулировано до меня. Но я так же как и был застан врасплох данной формулировкой ![]() Вот отрывки
А вот это очень верное наблюдение, ИМХО ;) -------------------- менеджер по кодеврайтингу ![]() |
||||
|
|||||
dereyly |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 217 Регистрация: 16.6.2006 Репутация: 1 Всего: 4 |
Прикольный способ.... респект тому кто предложил воть линка http://www.aronetis.com/freq.html |
|||
|
||||
Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
dereyly, сама таблица есть, вместе с текстом задачи. Хотя скока я не находил в сети таблиц, почему-то значения той таблицы что в задании отличаются.
![]() Мне бы поточнее разобраться в алгоритме. Потому как подсчитать сколько раз определенная буква встречается в тексте, в независимости от кодировки - это еще более простая часть. А вот дальше я немного в затруднении, ибо кажется мне, что лишь простым соотношением <количество определенной буквы>/<общее количество символов> дело не ограничивается ![]() -------------------- менеджер по кодеврайтингу ![]() |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 5 Всего: 121 |
А что ту непонятного? Забудь про буквы, пока ты не знаешь, что за кодировка, ты даже понятия не имеешь какие коды каким символам(буквам) соответствуют. Тебе и знать этого не надо. Ты читал ссылку, которую я приводил?
Для каждой кодировки русские буквы занимают разные диапазоны кодов. Выше приведены эти диапазоны для 4х кодировок. Ну вот возьми подсчитай частоту встречи символов в своём тексте с кодом 128-255, потом проверь в какой из вышеперечисленных диапазонов попадает наибольшее число символов, ну и задача собсно решена. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: нет Всего: 13 |
цифры в разных таблицах конечно же будут отличаться, просто есть определенный коридор, а погрешность -- это количество текста по которому собиралась статистика
а по поводу алгоритма: вроде простого отношения достаточно. чаще всего встречается буква "о", значит определяется код буквы наиболее встречаемой в заданном тексте, и проверяется какой кодировке принадлежит определенный код. но это все упрощенно, если текст маленький, то вилами по воде писано что буква "о" там часто встречается. для проверки можно сопоставлять коды нескольких букв, отсортировав по убыванию коды букв в заданном тексте, искать "а" после запятой, както еще усложнить, или искать пары букв (как в криптологии), но для этого нужна совсем другая статистика. p.s. долго писал... Это сообщение отредактировал(а) aleksh - 17.7.2008, 09:45 |
|||
|
||||
Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
А как быть с utf8 ?? ![]() Добавлено через 1 минуту и 8 секунд Конечно можно попробовать соориентироваться на первые пару символов, которые есть только в тексте с кодировкой utf8, но не думаю. что этого будет достаточно ![]() -------------------- менеджер по кодеврайтингу ![]() |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 5 Всего: 121 |
Русские символы в UTF-8 кодируются двумя байтами. Допустим диапазон прописных русских: 0xD0B0 - 0xD18F(на самом деле там два поддиапазона для первой и второй половин алфавита). Этого уже может быть достаточно для определения кодировки.
Файлы в UTF-8 обычно начинаются с 3х постоянных байт: EF BB BF Хотя я не знаю, является ли это гарантией, но как один из признаков точно. -------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
Bulat |
|
|||
![]() татарский Нео ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1701 Регистрация: 22.3.2006 Где: Альметьевск Репутация: нет Всего: 57 |
В одно время постоянно приходилось разбираться с кодировками. Пока что всегда в utf присутствовали эти три байта. Тут есть лишь другое "но", нет гарантий, что в тексте лишь кириллица и пробелы, т.е. возможна латиница и вообще иные символы. Не исключено что текст в той же win может начинаться с символов, которым соответствуют как раз эти три байта ![]() Добавлено через 3 минуты и 12 секунд Скорее всего нет. Т.е. для очень большого текста, вполне, может быть, если проверить не на одну а на две-три буквы. -------------------- менеджер по кодеврайтингу ![]() |
|||
|
||||
W4FhLF |
|
|||
![]() found myself ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2831 Регистрация: 2.12.2006 Репутация: 5 Всего: 121 |
Bulat, ты ведь используешь статистические показатели, которые накапливаются. В общем случае, чем больше текст, тем ближе твой вывод о кодировке к истине. Ясно, что тут существует некоторый порог, ниже которого принятое решение о кодировке не является значимым. Ну, допустим, если в тексте 10 символов, 7 из которых не являются символами русского алфавита(в данной, ещё неизвестной, кодировке), то тут накопленой статистики просто может не хватить.
-------------------- "Бог умер" © Ницше "Ницше умер" © Бог |
|||
|
||||
aleksh |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 609 Регистрация: 8.7.2008 Репутация: нет Всего: 13 |
может имеет смысл привязываться не к статистике букв, а к поиску ожидаемых слов, или о предостовляемом тексте ничего заранее не известно?
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Алгоритмы" | |
|
Форум "Алгоритмы" предназначен для обсуждения вопросов, связанных только с алгоритмами и структурами данных, без привязки к конкретному языку программирования и/или программному продукту.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, maxim1000. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Алгоритмы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |