Pull to refresh

Comments 43

UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
А еще на основе частотного анализа можно много чего в криптографии сделать.
Кстати я думаю что если по всем произведениям литературным пройтись, то общий вид графика не поменяется
Если на вход подать тексты песен группы «Ленинград», то я знаю, какие три буквы будут самыми популярными =)
А задача то, сама по себе интересная — какие буквы распространены в песнях/стихах, и сильно ли изменится график от исходных данных.
UFO just landed and posted this here
А вот так будет выглядеть график если проанализировать 14 487 песен 658ми русских исполнителей

Всего букв: 629 536
И что интересно, частота использования букв сильно отличается от классических произведений.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Да, Вы правы, «припев» забыл вырезать. Но оно встречается не так часто в текстах, которые у меня есть. Думаю большой погоды это не сделает.
Всё, что можно было сделать в криптографии на основе частотного анализа уже давно сделано.
Ух ты! Новый способ ездить на двух колесах.
Я один выражу мысль «велосипед»? Статистику частотности букв можно легко найти по всему Интернету. И среднюю длину слов в предложении и среднюю длину самих слов.
Нет, не один. Буквально перед вами я высказал ту же мысль.))
Исходник ваш ужасен, к сожалению:

1) Зачем постоянно делать uc($char), да ещё и в цикле? один раз было бы достаточно.
2) getc() — не слишком эффективное решение.
3) Вместо того, чтобы сравнивать поступившую букву с массивом имеющихся, логично и удобно воспользоваться хэшем. Лишние символы можно красиво обойти регэкспом /\p{Cyrillic}/ — правда, тогда надо работать в UTF-8, но это тоже будет плюс.
4) А файлы закрыть?

и вот это, конечно…

my @out = qw(0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0);

Просто без комментариев :)
Да там вообще цикл перебора букв не уперся :)

Можно сделать сразу $out[(int)$char]++
Ну или как там в перле получить ascii код, короче вы меня поняли )
Файлы действительно забыл закрыть.
IMHO, значительно интереснее было бы посчитать частоту употребления слов с различной длиной. Она по крайней мере 100% отличается у разных авторов
Вы действительно думаете она будет отличаться?
Тут ударила мне кровь в голову.
— Ложи, — говорю, — взад!
А она испужалась. Открыла рот, а во рте зуб блестит.
Average length: 4.16


По целым месяцам не испытывая влечения к женщине, девственный карлик переживал изредка пронзительные приступы одинокой любовной тоски, которые проходили так же внезапно, как и вспыхивали, и снова на время он не замечал ни голых плеч, белеющих за бархатным барьером, ни маленьких акробаток, ни танцовщицы испанской, чьи ляжки обнажались на миг, когда при быстром кружении всхлестывал оранжевый пух ее кудрявых исподних воланов.
Average length: 5.83


Где тут Зощенко, а где Набоков? ;)

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

Средняя длина слова в русском языке — 5.28 символов. В английском — 5.10.

В языке фон — 3.03 (изолирующий язык), в инуктитуте — 14.48 (агглютинативные языки).
Я пользуюсь вот этой базой. Правда здесь только фантастика, а так — есть всё, что нужно и даже больше: средняя длина слова, знаков; средняя длина предложения, знаков; доля диалогов в тексте; доля авторского текста в диалогах
UFO just landed and posted this here
Многие занимались этим, особенно те кто пишет генераторы тексты для «не хороших сайтов» Поищите в гугле «Частотный словарь», там уже есть результаты и выводы…
В «Тихом Доне» была цензура на букву Ю?
— «Война и мир» Льва Николаевича Толстого, «Тихий Дон» Михаила Шолохова… Просто первые два — это единственные, которые я читал в школе
— Редко, но метко, что называется :)
— p.s. да уж, без тегов неудобно :)
>> В романе «Мастер и Маргарита» твердый знак встречается всего лишь один раз

здесь я нашёл 192 твёрдых знака, проверьте расчёты ещё раз :)
Вы абсолютно правы. Твердых знаков там почти две сотни. Текст топика поправил. Вам большое спасибо за замечание.
Да не за что :)

Ещё хорошо бы отделить «е» от «ё», хотя с современными изданиями это будет непросто. Всё-таки, это разные буквы.
Думается что эта операция заметно пошатнёт позиции «е» на графике.
Помниться в свое время на одном из порталов была «виселица» на базе «шуток» Русского радио и Фоменко. От нечего делать я сделал бот, который очень быстро попал в топ :)

Первым делом я выбирал случайные буквы по частотной таблицы типа
%WT = (
'О' => 10000, 'Е' => 10000, 'А' => 10000, 'Т' => 10000, 'И' => 10000, 'Н' => 10000,
'С' => 100,   'Р' => 100,   'Л' => 100,   'В' => 100,   'К' => 100,   'М' => 100,
'Д' => 1,     'У' => 1,     'П' => 1,     'Ь' => 1,     'Б' => 1,     'Я' => 1,
'Ы' => 1,     'Ч' => 1,     'Г' => 1,     'З' => 1,     'Ж' => 1,     'Ш' => 1,
'Й' => 1,     'Х' => 1,     'Ю' => 1,     'Ц' => 1,     'Щ' => 1,     'Э' => 1,
'Ф' => 1,     'Ъ' => 1   
);

Поскольку там было позволено 3 ошибки — работало безупречно.
После прочтения вашего топика вспомнил о своей давней идее написания скрипта для составления TOP используемых в тексте слов. Собственное, зачем это нужно… А для того, чтобы облегчить себе жизнь при чтении литературы на неродном языке, например, английском. Берем какой-то текст на английском, или даже книгу, прогоняем через скрипт, получаем top используемых слов в порядке убывания. Прогоняем через переводчик, ознакамливаемся и приступаем к чтению. Кстати, может такого рода велосипед уже изобрели?
хмм… А мне почему-то помнится из детства, что самая часто встречающаяся буква в русском языке — это «Е»… Какую-то книжку тогда читал по методам шифровки и дешифровки, и там вот эти данные были.
UFO just landed and posted this here
«Зачем все это нужно?» Я сейчас пишу статью о свойствах шрифтов и мне пригождаются ваши данные. Частотность букв в языке — это важнейший параметр для оценки шрифтов, особенно текстовых. 50% букв, что мы встретим в русском, будут о, е, а, и, н, т, это очень отличается от 50% английского e, t, a, o, i, n. Это очень важно, например, для расчета размеров табличек в городской навигации и для понимания общего впечатления от любого шрифта на разном языке. Оно зависит во многом от того, сколько и каких форм (овальных, прямых, похожих ммежду собой или нет) мы встречаем при чтении.
Да, вот еще для чего пригождается частотность. Мы делаем распознаватель шрифтов по картинке для нашего шрифтового сервиса. И не все буквы подряд мы распознаем, а в очередности, зависящей, в том числе, от их встречаемости в языке.
Sign up to leave a comment.

Articles