Комментарии 43
+7
НЛО прилетело и опубликовало эту надпись здесь
А еще на основе частотного анализа можно много чего в криптографии сделать.
Кстати я думаю что если по всем произведениям литературным пройтись, то общий вид графика не поменяется
Кстати я думаю что если по всем произведениям литературным пройтись, то общий вид графика не поменяется
0
Если на вход подать тексты песен группы «Ленинград», то я знаю, какие три буквы будут самыми популярными =)
+2
А задача то, сама по себе интересная — какие буквы распространены в песнях/стихах, и сильно ли изменится график от исходных данных.
0
НЛО прилетело и опубликовало эту надпись здесь
А вот так будет выглядеть график если проанализировать 14 487 песен 658ми русских исполнителей
![](https://habrastorage.org/r/w780q1/getpro/geektimes/comment_images/6be/d74/549/6bed745496615df4ad52067662df91d5.jpg)
Всего букв: 629 536
И что интересно, частота использования букв сильно отличается от классических произведений.
![](https://habrastorage.org/getpro/geektimes/comment_images/6be/d74/549/6bed745496615df4ad52067662df91d5.jpg)
Всего букв: 629 536
И что интересно, частота использования букв сильно отличается от классических произведений.
+1
Всё, что можно было сделать в криптографии на основе частотного анализа уже давно сделано.
0
Ух ты! Новый способ ездить на двух колесах.
0
Я один выражу мысль «велосипед»? Статистику частотности букв можно легко найти по всему Интернету. И среднюю длину слов в предложении и среднюю длину самих слов.
+5
Исходник ваш ужасен, к сожалению:
1) Зачем постоянно делать uc($char), да ещё и в цикле? один раз было бы достаточно.
2) getc() — не слишком эффективное решение.
3) Вместо того, чтобы сравнивать поступившую букву с массивом имеющихся, логично и удобно воспользоваться хэшем. Лишние символы можно красиво обойти регэкспом /\p{Cyrillic}/ — правда, тогда надо работать в UTF-8, но это тоже будет плюс.
4) А файлы закрыть?
и вот это, конечно…
Просто без комментариев :)
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);
Просто без комментариев :)
+9
IMHO, значительно интереснее было бы посчитать частоту употребления слов с различной длиной. Она по крайней мере 100% отличается у разных авторов
0
Вы действительно думаете она будет отличаться?
-1
Тут ударила мне кровь в голову.
— Ложи, — говорю, — взад!
А она испужалась. Открыла рот, а во рте зуб блестит.
Average length: 4.16
По целым месяцам не испытывая влечения к женщине, девственный карлик переживал изредка пронзительные приступы одинокой любовной тоски, которые проходили так же внезапно, как и вспыхивали, и снова на время он не замечал ни голых плеч, белеющих за бархатным барьером, ни маленьких акробаток, ни танцовщицы испанской, чьи ляжки обнажались на миг, когда при быстром кружении всхлестывал оранжевый пух ее кудрявых исподних воланов.
Average length: 5.83
Где тут Зощенко, а где Набоков? ;)
+1
Кстати, мне стало интересно. Напишу на досуге такое.
0
Еще один интересный момент — длина слов, в отличии от частоты букв, не зависит от языка. Так что по идее можно (с некоторыми поправками на буквосочетания) посмотреть, насколько и как отличаются языки, в том числе разной степени родства :)
0
Я пользуюсь вот этой базой. Правда здесь только фантастика, а так — есть всё, что нужно и даже больше: средняя длина слова, знаков; средняя длина предложения, знаков; доля диалогов в тексте; доля авторского текста в диалогах
+1
НЛО прилетело и опубликовало эту надпись здесь
Многие занимались этим, особенно те кто пишет генераторы тексты для «не хороших сайтов» Поищите в гугле «Частотный словарь», там уже есть результаты и выводы…
+1
В «Тихом Доне» была цензура на букву Ю?
+2
— «Война и мир» Льва Николаевича Толстого, «Тихий Дон» Михаила Шолохова… Просто первые два — это единственные, которые я читал в школе
— Редко, но метко, что называется :)
— p.s. да уж, без тегов неудобно :)
— Редко, но метко, что называется :)
— p.s. да уж, без тегов неудобно :)
0
Вы абсолютно правы. Твердых знаков там почти две сотни. Текст топика поправил. Вам большое спасибо за замечание.
+1
Помниться в свое время на одном из порталов была «виселица» на базе «шуток» Русского радио и Фоменко. От нечего делать я сделал бот, который очень быстро попал в топ :)
Первым делом я выбирал случайные буквы по частотной таблицы типа
Поскольку там было позволено 3 ошибки — работало безупречно.
Первым делом я выбирал случайные буквы по частотной таблицы типа
%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 ошибки — работало безупречно.
+1
А Punto Switcher и не знает!..
0
После прочтения вашего топика вспомнил о своей давней идее написания скрипта для составления TOP используемых в тексте слов. Собственное, зачем это нужно… А для того, чтобы облегчить себе жизнь при чтении литературы на неродном языке, например, английском. Берем какой-то текст на английском, или даже книгу, прогоняем через скрипт, получаем top используемых слов в порядке убывания. Прогоняем через переводчик, ознакамливаемся и приступаем к чтению. Кстати, может такого рода велосипед уже изобрели?
0
хмм… А мне почему-то помнится из детства, что самая часто встречающаяся буква в русском языке — это «Е»… Какую-то книжку тогда читал по методам шифровки и дешифровки, и там вот эти данные были.
+1
НЛО прилетело и опубликовало эту надпись здесь
«Зачем все это нужно?» Я сейчас пишу статью о свойствах шрифтов и мне пригождаются ваши данные. Частотность букв в языке — это важнейший параметр для оценки шрифтов, особенно текстовых. 50% букв, что мы встретим в русском, будут о, е, а, и, н, т, это очень отличается от 50% английского e, t, a, o, i, n. Это очень важно, например, для расчета размеров табличек в городской навигации и для понимания общего впечатления от любого шрифта на разном языке. Оно зависит во многом от того, сколько и каких форм (овальных, прямых, похожих ммежду собой или нет) мы встречаем при чтении.
0
Да, вот еще для чего пригождается частотность. Мы делаем распознаватель шрифтов по картинке для нашего шрифтового сервиса. И не все буквы подряд мы распознаем, а в очередности, зависящей, в том числе, от их встречаемости в языке.
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Считаем буквы в произведениях русской литературы