Вступление

“В 90-м году я умирал — просто действительно физически умирал…”,“Я думал, что это такое — энцефалит, не энцефалит? Страшно было действительно. А через какое-то время — дней через десять — я понял, что это можно претерпеть. Самое неприятное в этом состоянии — это не то, что 41 градус постоянно, а то, что не спишь… невозможно уснуть… И вот это было бессонное состояние, которое продолжалось около сорока дней… В течение которого я в некий момент начал творить. И альбом «Прыг-скок» — это вещь оттуда.”

Так описывал Егор Летов свою работу над альбомом “Прыг-Скок”, альбомом, который вместе с “Сто Лет Одиночества” стал переломным моментом в творчестве Летова и всех связанных с ним творческих проектов.Помимо тяжелого физического состояния, Егор начинает принимать ЛСД и другие психоделики.У него происходит переоценка ценностей, а вместе с ней так называемый переход от социальности к метафизики. Песни теряют свою политическую окраску и дух протеста, а заместо им приходят космос,размышления на тему смерти и попытки выйти за грань человеческого понимания. В данной лабораторной работе я постараюсь пронаблюдать изменения в творчестве Егора, сравнивая два периода: До “Прыг-скока” и после. Для этого я хочу выделить характерные слова для обоих периодов и сравнить их.

Данные и их обработка

В качестве источника своих данных я использовал сайт http://grob-hroniki.org/, где смог найти 600 произведений(стихи и песни) за авторством Егора Летова. Суммарно данный корпус составил порядка сорока тысяч слов. Для сравнения двух периодов я использовал дату написания и выделил первый период как 1982-1989 год и второй как 1990-2007, и корпусы составили 23 и 17 тысяч слов соответственно. В качестве фокусного корпуса я выбрал период 1990-2007, однако для полноты картины все метрики высчитывались в обе стороны(специфичность фокусного относительно референсного и наоборот).Такой шаг я предпринял для того что бы увидеть не только какие слова стали более частыми, но и какие стали менее частыми. Примечание: В дальнейшей работе существуют два фактора, влияющих на качество результатов. Во-первых, специфика жанра песни с ее струтурой и ,как результат, повторение частей песен и ,соответсвенно, слов. И во-вторых, сайт предоставлял данные о произведении в неструктурированном виде.Ввиду этого, примечания и альтернативные версии могли попасть в конечнные данные. К сожалению, на стадии скачивании данных эта проблема не была исправлена.

Лемматизация, токенизация и стоп-слова

Провел лемматизацию и токенизацию на обоих корпусах.Список стандартных стоп-слов был дополнен словами, обнаруженными как частыми и не имеющих ценности для работы.

rustopwords = data.frame(words =c(stopwords("ru"),c("это","всё","свой","мой","наш","ваш","я","мы","ты","твой","все","лишь","моё","б","ооо","ещё","оно","своё","мои","нам")),stringsAsFactors=FALSE)

Частотные списки

Для каждого корпуса были построены частотные списки.

Частотный список фокусного корпуса
Слово Кол-во
словно 118
земля 74
небо 72
день 46
значит 43
мир 43
глаз 36
рука 33
знать 31
ночь 31
Частотный список референсного корпуса
Слово Кол-во
умирать 78
лицо 75
глаз 70
рука 66
словно 62
идти 58
ленин 58
небо 58
становиться 57
стимул 55
table = dplyr::left_join(spisok2,spisok1, by = "words")
table[is.na(table)] = 0
table <- table %>% 
  rename(FC = n.x,RC = n.y)

Отношение частотностей

В качестве Add-N я выбрал 100, потому что опытным путем были получены наиболее правдаподобные результаты. Сравним частоты слов в фокусном и референсом корпусах:

table1 <- table
table1$FC = table1$FC + 100
table1$RC = table1$RC + 100
table1$ipm_fc = table1$FC/sum(table1$FC)*1000000
table1$ipm_rc = table1$RC/sum(table1$RC)*1000000
table1 <- mutate(table1, Ratio = round((ipm_fc/ipm_rc),3))

table1 <- select(table1,words,Ratio)
table1F <- table1[order(-table1$Ratio),]
table1R <- table1[order(table1$Ratio),]
Отношение часточностей(Специфичные для ФК)
Слово Соотношение
1 словно 1.341
19 родина 1.266
17 радуга 1.238
5 значит 1.178
75 дурачок 1.146
76 прыг 1.146
77 скок 1.146
2 земля 1.141
39 гореть 1.139
86 полететь 1.136
Отношение часточностей(Специфичные для РК)
Слово Соотношение
232 умирать 0.605
48 лицо 0.678
716 хороший 0.691
2666 звучать 0.694
95 идти 0.713
137 давать 0.726
169 который 0.739
55 убивать 0.769
58 тело 0.772
572 красный 0.785

Отношение правдоподобия (Dunning log-likelihood)

Отношение правдоподобия - метрика показывающая наиболее специфичные в обоих корпусах:

table2 <- table
table2$FC = table2$FC + 100
table2$RC = table2$RC + 100
Logll = function(a, b) {
  c = sum(a)
  d = sum(b)
  E1 = c * ((a + b) / (c + d))
  E2 = d * ((a + b) / (c + d))
  return(2*((a*log(a/E1+1e-7)) + (b*log(b/E2+1e-7))))
}
table2 <- mutate(table2, G2 = round(Logll(FC,RC),2)) %>% arrange(desc(G2))
Отношение праваподобия
Слово FC RC G2
умирать 108 178 17.55
лицо 119 175 10.92
хороший 104 150 8.53
словно 218 162 8.09
звучать 101 145 8.06
идти 113 158 7.66
давать 110 151 6.61
который 109 147 5.79
убивать 118 153 4.65
тело 117 151 4.44

Взаимная информация (Pointwise mutual information)

Для данной метрики не требуется нормальзация, однако для более интересных результатов, я проигнорирую слова с частностью 0 в референсом корпусе:

table3 = table
table3$s = table3$FC + table3$RC
table3$pmi_FC = round(log(table3$FC/sum(table3$FC)/(table3$s/sum(table3$s))),4)
table3$pmi_RC = round(log(table3$RC/sum(table3$RC)/(table3$s/sum(table3$s))),4)
table3 <-filter(select(arrange(table3,desc(pmi_FC)),words,pmi_FC,pmi_RC),pmi_RC !="-Inf")
table3F <- select(table3,words,pmi_FC)[1:10,]
table3R <-arrange(select(table3,words,pmi_RC),desc(pmi_RC))[1:10,]
Pointwise mutual information
Слово PMI_FC
плыть 0.5396
света 0.5396
зола 0.5327
вовсе 0.5244
неведомый 0.5244
радуга 0.5179
мимо 0.5143
молоко 0.5143
простор 0.5143
сопли 0.5143
Pointwise mutual information
Слово PMI_RC
звучать 0.7505
иван 0.7361
равно 0.7280
боевой 0.7259
рок 0.7259
поганый 0.7237
собирать 0.7212
анархист 0.7153
ребенок 0.7153
подвал 0.7118

Данная метрика выявила совершенно новые специфичные слова! Примечательно, что она выявило довольно много “проблемных” слов - те, которые повторяются скорее в одной песне и из-за этого специфичные(рок,иван,прыг,скок) ## Логарифм отношения шансов (Log-Odds) Также нормализуем:

table4 <- table
table4$FC = table4$FC + 100
table4$RC = table4$RC + 100
table4$odd_FC = table4$FC/(sum(table4$FC) - table4$FC)
table4$odd_RC = table4$RC/(sum(table4$RC) - table4$RC)
table4$log_oddsF = round(log(table4$odd_FC/table4$odd_RC),4)
table4$log_oddsR = round(log(table4$odd_RC/table4$odd_FC),4)
table4F <- select(arrange(table4,desc(log_oddsF)),words,log_oddsF)[1:10,]
table4R <- select(arrange(table4,desc(log_oddsR)),words,log_oddsR)[1:10,]
Логарифм отношения шансов FC/RC
Слово Log Odds
словно 0.2936
родина 0.2357
радуга 0.2139
значит 0.1637
дурачок 0.1364
прыг 0.1364
скок 0.1364
земля 0.1318
гореть 0.1301
полететь 0.1276
Логарифм отношения шансов RC/FC
Слово Log Odds
умирать 0.5032
лицо 0.3892
хороший 0.3698
звучать 0.3651
идти 0.3387
давать 0.3203
который 0.3026
убивать 0.2632
тело 0.2586
красный 0.2419

Как можно заметить, данная метрика почти не отличается от отношения частностей.

Взвешенный логарифм отношения шансов (Weighted Log-Odds)

Здесь как с Log-likehood буду выражены наиболее специфичные из обоих корпусов вместе, метрика не нуждается в ручному сглажевании данных, так как это заложено в функцию:

fc <-mutate(spisok2,corpus = "FC")
rc <- mutate(spisok1,corpus = "RC")
table5 <- rbind(fc,rc)
table5 <- select(arrange(bind_log_odds(table5,corpus, words, n),-log_odds_weighted),words,corpus,log_odds_weighted)[1:10,]
Взвешенный логарифм отношения шансов
Слово Корпус Weighted Log-Odds
ленин RC 4.727781
стимул RC 4.603343
родина FC 4.020262
версия RC 3.508108
насрать RC 3.161418
альбом RC 3.099903
дурачок FC 2.994983
прыг FC 2.994983
скок FC 2.994983
левый RC 2.973088

Как результат,данная метрика выделила “проблемные” слова из другой категории - слова-примечания и другие версии(версия и альбом)

Выводы

Выделю общие выводы на основе всех метрик:

  • Как мы можем наблюдать, слово родина находится на первых местах по специфичности в фокусном корпусе - это можно интерперетировать как переход от борьбы с государством к духовному ощущению родины.
  • Дурачек, прыг и скок - конкретные песни(Про дурачка, Прыг-скок),проблема с жанром песни, указанная выше.
  • В целом, частые глаголы в корпусах отличаются. Так в фокусном корпусе больше встречаются глаголы состояния(знать, гореть), в то время как в референсном гллаголы состояния(идти,давать,убивать)
  • Огромное количество слова “словно”, означающее что автор активно пользуется сравнениями и ,более того, в фокусном корпусе их количество становится еще больше относительно референсного.
  • Самое частое слово референсного корпуса - “умирать”, несмотря на то, что тема смерти становится актуальной именно в фокусном корпусе. Предположу, что здесь данное слово относится к смерти как к чему-то социально-политическому,смерть за идею, как например “Мы будем умирать, а вы — наблюдать” в одноименной песне.
  • Ленин,красный, левый,анархист,боевой в референсном корпусе - олицетворяет идею борьбы с политическим режимом.
  • Рука,лицо,тело,глаза - материальное проявление человека, часто встречаются именно в референсном корпусе и показывают материальную суть человека как основную, в то время как фокусный корпус обращается к окружающему миру(радуга,земля,небо,день,ночь) как основному объекту и человеку как к субъекту познающему это окружающий мир.

В целом, данные наблюдения подтверждают утверждение о переходе “от социальности к метафизики”. Несмотря на проблемные слова, я считаю результаты работы успешными и доказывающими точку зрения, изложенную в введении.