?

Log in

No account? Create an account

Previous Entry | Next Entry

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

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: Облако Путина после обрезания.

Comments

( 46 comments — Leave a comment )
malyj_gorgan
Apr. 16th, 2015 11:49 pm (UTC)
Не разбираюсь в программном синтаксисе, потому спрошу: а что в облаке с падежами и склонениями? Вот, есть "россии", а "россия" или "россией"? Или там "идет", но не "идем". Хотя, есть и "люди", и "людей"..., что, действительно вот настолько сильный перекос в конкретных формах для конкретных слов?
scholar_vit
Apr. 17th, 2015 12:15 am (UTC)
Падежные формы воспринимаются как отдельные слова. Ср. "эта" и "этим"
profpr
Apr. 17th, 2015 05:29 am (UTC)
Никогда не работал с русским - наврняка ведь стеммер для него тоже существует? Понимать, конечно, будет труднее.
scholar_vit
Apr. 17th, 2015 06:13 am (UTC)
Существует - мне было лень разбираться. Ладно, завтра поиграюсь с Rstem.
r_l
Apr. 17th, 2015 06:51 am (UTC)
mystem рекомендую
spamsink
Apr. 17th, 2015 12:10 am (UTC)
Нам всё время нужно спасибо людей нашей России. Поэтому всё-таки, пожалуйста, давайте просто будем, действительно, делать добрый бизнес и деньги. Надеюсь, тысяч миллиардов процентов. Люди должны.
malyj_gorgan
Apr. 17th, 2015 12:20 am (UTC)
Точно. Wow!
balalajkin
Apr. 17th, 2015 12:23 am (UTC)
Красиво! Замечательно!
breqwas
Apr. 17th, 2015 12:51 am (UTC)
Идеи навскидку:

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

Не станет ли результат интереснее?
breqwas
Apr. 17th, 2015 01:13 am (UTC)
$ ./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 at 2015-04-17 01:14 am (UTC)
breqwas
Apr. 17th, 2015 02:16 am (UTC)
$ 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 at 2015-04-17 02:26 am (UTC)
breqwas
Apr. 17th, 2015 02:48 am (UTC)
И ещё подход. Попробовал отрезать от словаря "клюв", 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 путин
breqwas
Apr. 17th, 2015 03:00 am (UTC)
...заодно, раз уж машиночитаемый словарь под рукой, решил найти ответ на вопрос, мучивший ещё с детства: какое самое длинное слово в русском языке? Ответ: их два, "высокопревосходительство" и "человеконенавистнический", по 24 буквы. Самостоятельно найденное классе в седьмом "высококвалифицированный" - на букву короче, и это третье по длине слово в языке. Неплохо!
r_l
Apr. 17th, 2015 06:52 am (UTC)
сверхчеловеконенавистнечиский
greenkrokodilla
Apr. 17th, 2015 07:54 am (UTC)
сверхнедочеловеконенавистнический.
Посмотрись в зеркало
r_l
Apr. 17th, 2015 07:57 am (UTC)
ПЕПКА, ПРЫГНИ!
breqwas
Apr. 17th, 2015 09:47 am (UTC)
Нет такого слова в словарях, и в интернете нет :) Ну, почти нет.
Так-то "стасемидесятипятимиллимитровый" и "меламинокарбамидоформальдегидный" тоже длинные, но это же явное читерство.
greenkrokodilla
Apr. 17th, 2015 05:32 am (UTC)
Правильно, так в стандартном анализе
и делают - находят слова, имеющие
отличную от средней по языку частотность.
Они несут смысл - тему текста и/или
особенности речи автора.

Другие подходы (высчитывание профилей
частотности служебных слов, в надежде,
что они уникальны для автора - или
переход на "триграммы" и т.д. -- теряют
осмысленность на уровне слов и
не подходят для заявленной цели)
r_l
Apr. 17th, 2015 08:01 am (UTC)
Блядь, ну нельзя же таким наглым быть. Я понимаю, жиды виноваты, но популярные пособия никто не отменял. Одно дело - когда человек честно говорит, что ничего в этом не понимает, другое - когда Пепка приходит этого человека учить.
Считается не средняя по языку частотность, а средняя частотность ближайшего контекста. Для отдельной речи - это другие речи того же автора, для корпуса политика - речи других политиков-современников - и так далее. Сравнение с общеязыковыми частотами ничего не дает практически никогда.
greenkrokodilla
Apr. 17th, 2015 01:49 pm (UTC)
OMG
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

r_l
Apr. 17th, 2015 06:07 pm (UTC)
Re: OMG
ПЕПКА, ПРЫГНИ!
dmpogo
Apr. 17th, 2015 01:18 am (UTC)
Там было про собаку ! Про это целая статья на ББС
scholar_vit
Apr. 17th, 2015 01:48 am (UTC)
Параметр max.words=200 убил собаку
vgramagin
Apr. 17th, 2015 01:37 am (UTC)
Что характерно, миллиона нет. Или миллиарды, или тысячи...
Лев Горенштейн [poxod.com]
Apr. 17th, 2015 03:19 am (UTC)
Ты крут.
scholar_vit
Apr. 17th, 2015 03:26 am (UTC)
Круты те, кто эти пакеты написали: Ingo Feinerer, Kurt Hornik, Ian Fellows. Я просто учусь разным новым для меня инструментам.
Лев Горенштейн [poxod.com]
Apr. 17th, 2015 03:51 am (UTC)
Посмотрел статью про tm (http://www.jstatsoft.org/v25/i05/paper). Впечатлился. Но ты все равно крут ;-)

А корреляции в term-document matrix (рис. 6 в статье) не пытался рисовать? И сравнить с http://scholar-vit.livejournal.com/409889.html?thread=16389921#t16389921 ;-)
scholar_vit
Apr. 17th, 2015 03:54 am (UTC)
Нет, не рисовал... Я еще только учусь.
prostak_1982
Apr. 17th, 2015 04:15 am (UTC)
Читал в свое время про другую форму смыслового анализа.
Берется текст, потом из него выкидываются все существительные, прилагательные и прочее, оставляют только глаголы. Потом подсчитывают, сколько в тексте глаголов, которые можно назвать глаголами действия (сделать, построить, выполнить), а сколько глаголов, которые можно назвать глаголами состояния (думать, обсудить, рассмотреть).

Edited at 2015-04-17 04:15 am (UTC)
r_l
Apr. 17th, 2015 06:56 am (UTC)
Глаголы fucking многозначны, без дизамбигуации это превратится в цирк с конями.
brother2
Apr. 17th, 2015 04:22 am (UTC)
Нам всё нужно! Нам всё время нужно! - вполне тянет на нацидею.
vlkamov
Apr. 17th, 2015 04:26 am (UTC)
Странно, что вас это волнует.
scholar_vit
Apr. 17th, 2015 06:10 am (UTC)
Вообще-то text mining действительно далек от моих занятий, но мне в последнее время стало интересно, как они это делают.
greenkrokodilla
Apr. 17th, 2015 05:19 am (UTC)
Я не могу сказать, что сильно люблю Путина.
Однако я еще и разбираюсь в языках и в
программировании, помимо прочето, а потому
могу объяснить: то, что вы сделали - очень
дешевая и лживая пропаганда

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

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

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


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

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


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

Понятно, что другие, кто также тайно
Сноудена ненавидит, вроде брюса шнайера,
тут же объявили это интервью самым великим
из всех: ну это же "коомик", он объяснил
простым американцам на понятном им языке,
что такое NSA. На примере их собственного
хуя.
greenkrokodilla
Apr. 17th, 2015 05:26 am (UTC)
П.С. И еще - раз вы "учитесь пользоваться
новыми пакетами" (хотя эти задачи решаются
несколькими строчками на пёрле, без пакетов),
то - если не читаете книг - я вам раскрою
стандартную процедуру анализа речи.

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

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

А не то, что вы нам тут нарисовали.
profpr
Apr. 17th, 2015 05:57 am (UTC)
Было бы интересно сравнить результат с правильным "облаком Путина", сделанным профессионалом. Должно быть легко - ведь для него это просто несколько строчек на перле, без пакетов?
sidorow
Apr. 17th, 2015 07:49 am (UTC)
Интересно было бы сравнить вообще облака разнообразных граждан, и политиков в т.ч. Или где-то есть такие данные?
r_l
Apr. 17th, 2015 06:55 am (UTC)
О, настоящий олдфаг, оловянный солдат антижидовского фронта, давно таких не видал!
(Anonymous)
Apr. 17th, 2015 07:16 am (UTC)
это же виртуал эмдрона
greenkrokodilla
Apr. 17th, 2015 07:52 am (UTC)
Ну, совсем недавно Боря "А-Вешать-
Мы-Их-Будем-Потом" Филатов жалостно
блеял о моем "антисемитизме", после
комментария где я назвал его надлежащим
именем.

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


Теперь в моей коллеции есть и ваш
автограф - в одной коробке с вашим
подельниками жидобандеровцами.
Good.
r_l
Apr. 17th, 2015 07:54 am (UTC)
Я как-то упустил Ваши трансформации, но добрый анонимус меня просветил. В это говно я уже вступал, ага.
r_l
Apr. 17th, 2015 07:55 am (UTC)
Кто, кстати, жаловался? Я просто отметил чистоту и незамутненность, вот эти вот все переносы строк, касплоки, сноуден, все, как мы любим.
(Deleted comment)
scholar_vit
Apr. 17th, 2015 07:55 pm (UTC)
Нет, не пользовался.
sidorow
Apr. 17th, 2015 07:45 am (UTC)
А чего ты хотел, собссно?
В любой речи любого политика будет что-то в этом роде.
Что же до речи нормального человека - так в быту будет ещё и похлеще при соответствующей длины выборке.
ab_s
Apr. 17th, 2015 11:07 am (UTC)
Не совсем о том, но музыкой навеяло.
Есть еще старый пионерский способ: берется исходная песня (стихотворение, параграф из учебника физики, речь Брежнева...) и после каждого нечетного предложения вставляется "в штанах", а после каждого четного -- "без штанов".

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

:)
( 46 comments — Leave a comment )

Profile

knot
scholar_vit
scholar_vit

Latest Month

August 2017
S M T W T F S
  12345
6789101112
13141516171819
20212223242526
2728293031  

Tags

Powered by LiveJournal.com
Designed by Paulina Bozek