Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Таблица частотных распределений, определение кодировки 
:(
    Опции темы
Bulat
Дата 17.7.2008, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

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



Цитата(aleksh @  17.7.2008,  11:37 Найти цитируемый пост)
о предостовляемом тексте ничего заранее не известно? 

В том-то и дело. Предполагается лишь то, что в тексте есть кириллица, а что там может быть еще, кроме кириллицы, и в каком количестве?

Кстати, вот тут мне кажется как раз уместно смотреть по таблице частотных вхождений. Ведь исключать вариант, что в файле есть пару абзацев кириллицы, а все остальное кракозябры(причем с теми байтами, которые как раз могут выдать вероятность совсем иной кодировки, чем есть на самом деле) исключать нельзя. 

Или я в чем-то ошибаюсь??


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
ksili
Дата 17.7.2008, 12:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(aleksh @  17.7.2008,  15:37 Найти цитируемый пост)
может имеет смысл привязываться не к статистике букв, а к поиску ожидаемых слов

ну это было бы слишком... к такому привязываться нельзя

Добавлено через 2 минуты и 24 секунды
Цитата(Bulat @  17.7.2008,  16:08 Найти цитируемый пост)
Ведь исключать вариант, что в файле есть пару абзацев кириллицы, а все остальное кракозябры(причем с теми байтами, которые как раз могут выдать вероятность совсем иной кодировки, чем есть на самом деле) исключать нельзя. 

В случае такого противоречия надо на мой взгляд отображать в кодировке начала документа, ведь когда человек откроет его, он увидит именно начало 


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
W4FhLF
Дата 17.7.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Если символы не подходят, а слова слишком круто - можно брать слоги. Хотя прежде, чем усложнять задачу, необходимо проверить эффективность самого простого решения, может его вполне достаточно будет. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
maxim1000
Дата 17.7.2008, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(W4FhLF @  16.7.2008,  16:47 Найти цитируемый пост)
maxim1000, до того момента, как ты меня спросил, я считал своё утверждение истинным smile Я не прав?


нормальное распределение определено на действительных числах (если рассматривать одномерный вариант), так что перед тем, как вообще применить понятие нормального распределения к буквам, их нужно перенумеровать
и здесь возникает первая проблема: какой порядок выбрать
ведь выбирая различные порядки можно сделать и один всплеск в середине, и два по краям
и выбрав какой-то один порядок, нужно представлять, чем он лучше других

вторая проблема в том, что даже сопоставив каждому символу номер, непонятно, что делать с остальными числами на действительной оси - к каким символам их отнести?

это относилось к вопросу "как?"

третья проблема - "почему?"
далеко не в любом случае распределение стремится к нормальному
в каких-то случаях более естественным оказывается экспоненциальное, в других равномерное

большинство случаев, когда распределение стремится к нормальному, основываются на том, что у нас есть сумма большого количества случайных величин
но как бы мы не нумеровали символы, нас не интересует распределение суммы их индексов, так что здесь нет оснований применять всякие законы больших чисел и т.п.

Это сообщение отредактировал(а) maxim1000 - 17.7.2008, 12:53


--------------------
qqq
PM WWW   Вверх
aleksh
Дата 17.7.2008, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



если сказали о возможности использования таблицы частотных распределений букв значит файл большой, а раз может быть только три кодовых таблицы (если правильно понял) -- значит кракозябры мало
может так: находим пару самых встречаемых символов, проверяем не коды ли utf это, например первых шести букв таблицы, если да -- кодировка определена, если нет -- находим еще пару-тройку самых встречаемых из файла, и смотрим, в диапазон каких оставшихся кодировок входят найденные нами пять-шесть символов

Добавлено через 7 минут и 23 секунды
еще один вариант: сортируем символы в файле по убыванию, потом переводим их в кириллицу использую, по очереди, кодовые таблицы, а потом сравниваем с таблицой частотных вхождений (нам же ее дадут, или самим составлять?), получится три сравнения, выбираем тот, где разброс букв меньше (позиции в таблицах более близкие)

p.s. на перле писать не умею, поэтому насколько предложенные варианты реализуемые судить не могу
PM MAIL   Вверх
Bulat
Дата 18.7.2008, 09:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

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



Цитата(aleksh @  17.7.2008,  13:53 Найти цитируемый пост)
значит кракозябры мало

под крякозяброй имелось ввиду, не только "крякозябра" а весь набор символов не относящийся к буквам(или цифрам) smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
aleksh
Дата 18.7.2008, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ну если так, то все на много проще: самый встречаемый символ -- это пробел, не помню на сколько но в разы превышает буквы. отсель следует: находим самый встречаемый символ (это будет пробел) и смотрим к какой из трех кодировк он относится
а касательно кракозябры: если это не текст какой-нибудь лекции/доклада/статьи по физике/математики/химии, то закодированых цифр и мат-символов (плюсы, дроби и т.д.) там будет мало, на статистику не сильно повлияют
назрел вопрос: какое требование к универсальности алгоритма?
PM MAIL   Вверх
W4FhLF
Дата 18.7.2008, 10:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



Цитата(aleksh @  18.7.2008,  09:53 Найти цитируемый пост)
ну если так, то все на много проще: самый встречаемый символ -- это пробел, не помню на сколько но в разы превышает буквы. отсель следует: находим самый встречаемый символ (это будет пробел) и смотрим к какой из трех кодировк он относится


У пробела в ASCII один и тот же код независимо от кодировки.

Bulat, ещё раз, ты высасываешь проблему из пальца. Возьми реализуй и протестируй. 


--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Bulat
Дата 18.7.2008, 11:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

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



Цитата(W4FhLF @  18.7.2008,  10:35 Найти цитируемый пост)
Возьми реализуй и протестируй.  

Как только на работе появится немного свободного времени, продолжу ;)

Цитата(W4FhLF @  18.7.2008,  10:35 Найти цитируемый пост)
У пробела в ASCII один и тот же код независимо от кодировки.

Bulat, ещё раз, ты высасываешь проблему из пальца. 


Лучше сначала обговорить все возможные варианты, просмотреть и подумать, составить хоть какой-нить план работы, а не кидаться сразу к написанию кода, что частенько приводит к переписыванию оного несколько раз smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
W4FhLF
Дата 18.7.2008, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


found myself
****


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

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



maxim1000, спасибо за пояснения, действительно что-то перепутал я, но вот не пойму откуда у меня засела мысль с нормальным распределением для русского текста.  smile 




--------------------
"Бог умер" © Ницше
"Ницше умер" © Бог
PM ICQ   Вверх
Bulat
Дата 18.7.2008, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

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



Цитата(aleksh @  18.7.2008,  09:53 Найти цитируемый пост)
какое требование к универсальности алгоритма? 

Четкого требования нет. Я выкладывал отрывки из формулировки задачи.

Цитата(aleksh @  18.7.2008,  09:53 Найти цитируемый пост)
а касательно кракозябры: если это не текст какой-нибудь лекции/доклада/статьи по физике/математики/химии, то закодированых цифр и мат-символов (плюсы, дроби и т.д.) там будет мало, на статистику не сильно повлияют


Опять же, мы не знаем, что у нас за текст. Каких-то четких условий нет. Наткнулся вот на задачу - появилось желание попробовать реализовать smile

Цитата(aleksh @  17.7.2008,  13:53 Найти цитируемый пост)
еще один вариант: сортируем символы в файле по убыванию, потом переводим их в кириллицу использую, по очереди, кодовые таблицы, а потом сравниваем с таблицой частотных вхождений (нам же ее дадут, или самим составлять?), получится три сравнения, выбираем тот, где разброс букв меньше (позиции в таблицах более близкие)


Делаю немного по иному. Просто первожу символы в 16-е значения, и для каждой кодировки подсчитываю количество вхождений только тех, что соотв. алфавиту данной кодировки. Таким образом у меня есть данные сразу для трех кодировок.(Попути уже вычисляю "свои частоты").

Теоретичски, уже сейчас достаточно(т.е. если предположить, что в текст, скажем так литературный), можно сложить для каждой кодировки соотношения, и та что ближе к 1, и будет верной кодировкой. Но все же, я думаю надо еще прописать чего-нить для разброса букв. Т.е. сравнить мои частоты с табличными. smile


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Алгоритмы"

maxim1000

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


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

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


 




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


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

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