scholar_vit: (knot)
scholar_vit ([personal profile] scholar_vit) wrote2015-04-16 07:25 pm
Entry tags:

Облако Путина

[livejournal.com profile] peresedov задает вопрос, чего не было в "Прямой линии" Путина. Это вопрос, конечно, интересный, но методически правильнее, на мой взгляд, было бы спросить, что там было.

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

library("tm")
library("wordcloud")
putin <- Corpus(DirSource(pattern="putin.txt"))
putin <- tm_map(putin,content_transformer(tolower))
putin <- tm_map(putin,removePunctuation)
putin <- tm_map(putin,stripWhitespace)
putin <- tm_map(putin,removeWords,stopwords("russian"))
putin <- tm_map(putin,removeWords,c("владимир",
                                    "владимиром",
                                    "владимирович",
                                    "путиным",
                                    "путин",
                                    "линия",
                                    "прямая",
                                    "мситтель",
                                    "кклеймёнов",
                                    "клеймёнов",
                                    "впутин",
                                    "мситтель:",
                                    "это",
                                    "вопрос",
                                    "ещё",
                                    "очень",
                                    "который",
                                    "которая",
                                    "которые",
                                    "которое"))
wordcloud(putin, max.words=200,
          scale=c(5,0.5),
          random.order=FALSE,
          use.r.layout=FALSE,
          colors=brewer.pal(8, "Dark2"))

А вот что у меня получилось:

Update: Облако Путина после обрезания.

[identity profile] malyj-gorgan.livejournal.com 2015-04-16 11:49 pm (UTC)(link)
Не разбираюсь в программном синтаксисе, потому спрошу: а что в облаке с падежами и склонениями? Вот, есть "россии", а "россия" или "россией"? Или там "идет", но не "идем". Хотя, есть и "люди", и "людей"..., что, действительно вот настолько сильный перекос в конкретных формах для конкретных слов?

[identity profile] spamsink.livejournal.com 2015-04-17 12:10 am (UTC)(link)
Нам всё время нужно спасибо людей нашей России. Поэтому всё-таки, пожалуйста, давайте просто будем, действительно, делать добрый бизнес и деньги. Надеюсь, тысяч миллиардов процентов. Люди должны.

[identity profile] scholar-vit.livejournal.com 2015-04-17 12:15 am (UTC)(link)
Падежные формы воспринимаются как отдельные слова. Ср. "эта" и "этим"

[identity profile] malyj-gorgan.livejournal.com 2015-04-17 12:20 am (UTC)(link)
Точно. Wow!

[identity profile] balalajkin.livejournal.com 2015-04-17 12:23 am (UTC)(link)
Красиво! Замечательно!

[identity profile] breqwas.livejournal.com 2015-04-17 12:51 am (UTC)(link)
Идеи навскидку:

- инфинитивы можно с некоторой точностью получить mystem'ом
- пессимизировать тривиальщину можно частотным словарём (навскидку нашёлся этот)

Не станет ли результат интереснее?

[identity profile] breqwas.livejournal.com 2015-04-17 01:13 am (UTC)(link)
$ ./mystem -nl putin.txt | perl -MEncode -lnwe 's/\|.+//; s/\?//; print if length(decode_utf8($_)) > 3' | sort | uniq -c | sort -n | tail -n20

81 владимир
82 знать
82 хотеть
86 давать
98 чтобы
103 свой
105 если
112 такой
115 очень
116 сказать
117 говорить
118 сейчас
122 путин
127 мочь
142 человек
167 вопрос
200 который
235 весь
239 этот
399 быть

Скучно.
Что ж, попробую перевзвесить по словарю.
Edited 2015-04-17 01:14 (UTC)

[identity profile] dmpogo.livejournal.com 2015-04-17 01:18 am (UTC)(link)
Там было про собаку ! Про это целая статья на ББС

[identity profile] vgramagin.livejournal.com 2015-04-17 01:37 am (UTC)(link)
Что характерно, миллиона нет. Или миллиарды, или тысячи...

[identity profile] scholar-vit.livejournal.com 2015-04-17 01:48 am (UTC)(link)
Параметр max.words=200 убил собаку

[identity profile] breqwas.livejournal.com 2015-04-17 02:16 am (UTC)(link)
$ join -i pmyst_sorted.txt freqs_uniq.txt | perl -lnawe 'print join "\t", sprintf("%.03f", $F[1] / $F[2]), $F[0]' | sort -n | tail -n30

2.286 данила
2.500 ворог
2.500 жульнический
2.500 многоконфессиональный
2.500 низковатый
2.500 нормандский
2.500 перерегистрировать
2.500 супердержава
2.500 тиранический
2.500 турбулентность
2.500 увековечивать
2.778 ксенофобия
2.857 макроэкономика
2.857 покритиковать
2.857 помечать
3.205 владимирович
3.333 субсидирование
3.523 должный
3.953 таки
4.286 паромный
4.444 забайкальский
4.444 космодром
5.000 морфин
5.000 регионал
5.882 юрьев
6.000 надой
6.000 обезболивание
6.818 донбасс
7.500 проиндексировать
7.500 сельхозпроизводство

Это вхождения, делённые на частоту. Так интереснее, конечно, но теперь тупо маргинальные слова лезут (супердержава, турбулентность, перерегистрировать - по одному вхождению). Если выкинуть все слова с менее чем 5 вхождениями, из 3400 останется 790, и топ такой:

0.955 спасибо
1.017 нибудь
1.053 минздрав
1.064 выплачивать
1.111 вынуждать
1.144 крым
1.149 отменять
1.275 путин
1.304 рублевый
1.373 иранский
1.477 поставлять
1.579 подрастать
1.589 санкция
1.628 фермер
1.667 минский
1.795 курсовой
1.935 триллион
1.951 госслужба
2.000 ипотека
2.000 ушаков
2.286 данила
2.778 ксенофобия
3.205 владимирович
3.333 субсидирование
3.523 должный
3.953 таки
4.444 космодром
5.882 юрьев
6.000 надой
6.818 донбасс

Вооот. Вот об этом он, наверное, и говорил. Ну, за вычетом оказавшихся в словаре имён-фамилий.
Это, понятно, только словарные слова, как правильно взвесить несловарные - я навскидку не придумал.

Ещё пробовал делить не на частотность, а на логарифм частотности. Топ всё так же был непримечательным набором частотных банальностей, но всплыли слова "россия", "донбасс" и "процент". :)

В исходном файле - и вопросы, и ответы, просто копипаст стенограммы. Из списка слов выкинул все короче четырёх букв (ещё на первом шаге), из частотного словаря - омографы по частям речи, в качестве частотности оставлял максимальную. Про инфинитивы верил mystem'у.


NB: я, несмотря на место работы, ничего не понимаю в том, как правильно анализировать тексты.
Edited 2015-04-17 02:26 (UTC)

[identity profile] breqwas.livejournal.com 2015-04-17 02:48 am (UTC)(link)
И ещё подход. Попробовал отрезать от словаря "клюв", 100 самых частотных слов, и делить вхождения на логарифм частотности:

$ join -i pmyst_sorted.txt freqs_sin100.txt | perl -lnawe 'print join "\t", sprintf("%.03f", $F[1] / log(2.72 + $F[2])), $F[0]' | sort -n | tail -n30

7.354 крым
7.569 тоже
7.668 поставлять
7.710 сделать
7.754 малый
7.905 бизнес
7.971 потому
8.286 экономика
8.332 санкция
8.411 работать
8.678 космодром
9.414 донбасс
9.630 миллиард
9.726 проблема
9.978 пожалуйста
10.033 много
10.551 нужно
10.646 украина
11.071 здесь
11.193 процент
11.835 страна
12.351 конечно
12.663 спасибо
14.520 давать
15.426 владимир
18.555 таки
20.587 должный
22.987 владимирович
24.943 вопрос
26.584 путин

[identity profile] breqwas.livejournal.com 2015-04-17 03:00 am (UTC)(link)
...заодно, раз уж машиночитаемый словарь под рукой, решил найти ответ на вопрос, мучивший ещё с детства: какое самое длинное слово в русском языке? Ответ: их два, "высокопревосходительство" и "человеконенавистнический", по 24 буквы. Самостоятельно найденное классе в седьмом "высококвалифицированный" - на букву короче, и это третье по длине слово в языке. Неплохо!

[identity profile] Лев Горенштейн (from livejournal.com) 2015-04-17 03:19 am (UTC)(link)
Ты крут.

[identity profile] scholar-vit.livejournal.com 2015-04-17 03:26 am (UTC)(link)
Круты те, кто эти пакеты написали: Ingo Feinerer, Kurt Hornik, Ian Fellows. Я просто учусь разным новым для меня инструментам.

[identity profile] Лев Горенштейн (from livejournal.com) 2015-04-17 03:51 am (UTC)(link)
Посмотрел статью про tm (http://www.jstatsoft.org/v25/i05/paper). Впечатлился. Но ты все равно крут ;-)

А корреляции в term-document matrix (рис. 6 в статье) не пытался рисовать? И сравнить с http://scholar-vit.livejournal.com/409889.html?thread=16389921#t16389921 ;-)

[identity profile] scholar-vit.livejournal.com 2015-04-17 03:54 am (UTC)(link)
Нет, не рисовал... Я еще только учусь.

[identity profile] prostak-1982.livejournal.com 2015-04-17 04:15 am (UTC)(link)
Читал в свое время про другую форму смыслового анализа.
Берется текст, потом из него выкидываются все существительные, прилагательные и прочее, оставляют только глаголы. Потом подсчитывают, сколько в тексте глаголов, которые можно назвать глаголами действия (сделать, построить, выполнить), а сколько глаголов, которые можно назвать глаголами состояния (думать, обсудить, рассмотреть).
Edited 2015-04-17 04:15 (UTC)

[identity profile] brother2.livejournal.com 2015-04-17 04:22 am (UTC)(link)
Нам всё нужно! Нам всё время нужно! - вполне тянет на нацидею.

[identity profile] vlkamov.livejournal.com 2015-04-17 04:26 am (UTC)(link)
Странно, что вас это волнует.

[identity profile] greenkrokodilla.livejournal.com 2015-04-17 05:19 am (UTC)(link)
Я не могу сказать, что сильно люблю Путина.
Однако я еще и разбираюсь в языках и в
программировании, помимо прочето, а потому
могу объяснить: то, что вы сделали - очень
дешевая и лживая пропаганда

Дело в том, что распределение слов в языках
сильно неравномерно. Есть некое частотное
ядро (и я выдумал нестандартный и более
быстрый способ учить языки, зная это).
Самые-самые частые слова (в любых - как
минимум европейских - языках) - предлоги,
союзы, прочие "служебные" или "грамматические"
слова.
Если хорошо знать их, язык начинаешь понимать
как в известном примере Щербы (глокая
куздра ... - ни одного слова не знаем, но
"всё" понятно).
Затем идет несколько "слоёв" слов, без
четких границ.
Ядро языка покрывает 85-90 процентов
общих текстов. А оставшиеся десятки тысяч
слов - длинный хвост распределения, попадающихся
в среднем раз на десятки тысяч слов текста.

Вы - будучи членом секты фанатиков-террористов,
которая каждый божий день ВОЮЕТ с народами,
внутри которых она живет - не озабочены
представлением реальности.
Потому вы взяли частотное распределение
НЕ ОТРЕЗАВ грамматические слова, потому что,
попробовав так и этак, вы решили, что
вот такая картинка выглядит наиболее издевательски.

'Смотрите, вот он Путен - "безусловно, эта,
этим, хотя, этих, далее" - хахаха, какой
обсос, видите? Да? да? да?


Что и было вашей целью (как это всегда является
целью любых еврейских воинов с людьми по
всему миру)

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


П.С. на днях наблюдал по ссылке из блога
Шнайера еще одного еврейского юмориста,
который (понятно, ненавидя Сноудена как
предателя "страны, которой владеют наши",
т.е. США) пришел его унизить, заставив
разговаривать про свой еврейский хуй.

Понятно, что другие, кто также тайно
Сноудена ненавидит, вроде брюса шнайера,
тут же объявили это интервью самым великим
из всех: ну это же "коомик", он объяснил
простым американцам на понятном им языке,
что такое NSA. На примере их собственного
хуя.

[identity profile] greenkrokodilla.livejournal.com 2015-04-17 05:26 am (UTC)(link)
П.С. И еще - раз вы "учитесь пользоваться
новыми пакетами" (хотя эти задачи решаются
несколькими строчками на пёрле, без пакетов),
то - если не читаете книг - я вам раскрою
стандартную процедуру анализа речи.

Найдя частотное распределение его СРАВНИВАЮТ
С ОБЩИМ СРЕДНИМ частотным распределением
по большой массе подобного языка (сегодня
для этого есть "корпусы" языков).

И значимыми особенностями являются
СЛОВА, ИМЕЮЩИЕ ЧАСТОТНОСТЬ, ЗАМЕТНО
ОТЛИЧНУЮ ОТ ОБЩЕГО СРЕДНЕГО РАСПРЕДЕЛЕНИЯ.

А не то, что вы нам тут нарисовали.

[identity profile] profpr.livejournal.com 2015-04-17 05:29 am (UTC)(link)
Никогда не работал с русским - наврняка ведь стеммер для него тоже существует? Понимать, конечно, будет труднее.

[identity profile] greenkrokodilla.livejournal.com 2015-04-17 05:32 am (UTC)(link)
Правильно, так в стандартном анализе
и делают - находят слова, имеющие
отличную от средней по языку частотность.
Они несут смысл - тему текста и/или
особенности речи автора.

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

[identity profile] profpr.livejournal.com 2015-04-17 05:57 am (UTC)(link)
Было бы интересно сравнить результат с правильным "облаком Путина", сделанным профессионалом. Должно быть легко - ведь для него это просто несколько строчек на перле, без пакетов?

[identity profile] vilomaxus.livejournal.com 2015-04-17 06:03 am (UTC)(link)
Здравствуйте! Спасибо, за инфографику. Вопрос не совсем по теме поста - вы пользовались сервисом www.infogr.am? Как вам он?

[identity profile] scholar-vit.livejournal.com 2015-04-17 06:10 am (UTC)(link)
Вообще-то text mining действительно далек от моих занятий, но мне в последнее время стало интересно, как они это делают.

[identity profile] scholar-vit.livejournal.com 2015-04-17 06:13 am (UTC)(link)
Существует - мне было лень разбираться. Ладно, завтра поиграюсь с Rstem.

[identity profile] r-l.livejournal.com 2015-04-17 06:51 am (UTC)(link)
mystem рекомендую

[identity profile] r-l.livejournal.com 2015-04-17 06:52 am (UTC)(link)
сверхчеловеконенавистнечиский

[identity profile] r-l.livejournal.com 2015-04-17 06:55 am (UTC)(link)
О, настоящий олдфаг, оловянный солдат антижидовского фронта, давно таких не видал!

[identity profile] r-l.livejournal.com 2015-04-17 06:56 am (UTC)(link)
Глаголы fucking многозначны, без дизамбигуации это превратится в цирк с конями.

(Anonymous) 2015-04-17 07:16 am (UTC)(link)
это же виртуал эмдрона

[identity profile] sidorow.livejournal.com 2015-04-17 07:45 am (UTC)(link)
А чего ты хотел, собссно?
В любой речи любого политика будет что-то в этом роде.
Что же до речи нормального человека - так в быту будет ещё и похлеще при соответствующей длины выборке.

[identity profile] sidorow.livejournal.com 2015-04-17 07:49 am (UTC)(link)
Интересно было бы сравнить вообще облака разнообразных граждан, и политиков в т.ч. Или где-то есть такие данные?

[identity profile] greenkrokodilla.livejournal.com 2015-04-17 07:52 am (UTC)(link)
Ну, совсем недавно Боря "А-Вешать-
Мы-Их-Будем-Потом" Филатов жалостно
блеял о моем "антисемитизме", после
комментария где я назвал его надлежащим
именем.

Если жаловаться начинают даже такие
еврейские фашисты, это значит, что
что-то я понимаю очень правильно.
Феерическое было зрелище: преступник
против человечества (кстати: не
"человечности", а "человечества"),
военный преступник без срока давности,
жалится на то, что его оскорбляют
антисемиты.


Теперь в моей коллеции есть и ваш
автограф - в одной коробке с вашим
подельниками жидобандеровцами.
Good.

[identity profile] r-l.livejournal.com 2015-04-17 07:54 am (UTC)(link)
Я как-то упустил Ваши трансформации, но добрый анонимус меня просветил. В это говно я уже вступал, ага.

[identity profile] greenkrokodilla.livejournal.com 2015-04-17 07:54 am (UTC)(link)
сверхнедочеловеконенавистнический.
Посмотрись в зеркало

[identity profile] r-l.livejournal.com 2015-04-17 07:55 am (UTC)(link)
Кто, кстати, жаловался? Я просто отметил чистоту и незамутненность, вот эти вот все переносы строк, касплоки, сноуден, все, как мы любим.

[identity profile] r-l.livejournal.com 2015-04-17 07:57 am (UTC)(link)
ПЕПКА, ПРЫГНИ!

[identity profile] r-l.livejournal.com 2015-04-17 08:01 am (UTC)(link)
Блядь, ну нельзя же таким наглым быть. Я понимаю, жиды виноваты, но популярные пособия никто не отменял. Одно дело - когда человек честно говорит, что ничего в этом не понимает, другое - когда Пепка приходит этого человека учить.
Считается не средняя по языку частотность, а средняя частотность ближайшего контекста. Для отдельной речи - это другие речи того же автора, для корпуса политика - речи других политиков-современников - и так далее. Сравнение с общеязыковыми частотами ничего не дает практически никогда.

[identity profile] breqwas.livejournal.com 2015-04-17 09:47 am (UTC)(link)
Нет такого слова в словарях, и в интернете нет :) Ну, почти нет.
Так-то "стасемидесятипятимиллимитровый" и "меламинокарбамидоформальдегидный" тоже длинные, но это же явное читерство.

Не совсем о том, но музыкой навеяло.

[identity profile] ab-s.livejournal.com 2015-04-17 11:07 am (UTC)(link)
Есть еще старый пионерский способ: берется исходная песня (стихотворение, параграф из учебника физики, речь Брежнева...) и после каждого нечетного предложения вставляется "в штанах", а после каждого четного -- "без штанов".

"Облако -- в штанах! -- Путина -- без штанов!"

:)

OMG

[identity profile] greenkrokodilla.livejournal.com 2015-04-17 01:48 pm (UTC)(link)
OMG.
Why don't you go practice something your halfbrain can handle, like
sitting on a chair or switching a TV set on or off?

Image

OMG

[identity profile] greenkrokodilla.livejournal.com 2015-04-17 01:49 pm (UTC)(link)
OMG.
Why don't you go practice something your halfbrain can handle, like
sitting on a chair or switching a TV set on or off?

sunnylol. com/ images/ 2012/ July/ 1 /4ff0401e03825.jpg

Re: OMG

[identity profile] r-l.livejournal.com 2015-04-17 06:07 pm (UTC)(link)
ПЕПКА, ПРЫГНИ!

[identity profile] scholar-vit.livejournal.com 2015-04-17 07:55 pm (UTC)(link)
Нет, не пользовался.