Вступление

Романы-антиутопии крепко заняли свою нишу в отечественной и мировой литературе. Однако, существует мнение, что большинство произведений данного жанра имеет очень схожий сюжет, персонажей и атмосферу и от того такие книги не должны расцениваться как действительно ценные ячейчки мировой культуры. В данной лабораторной работе я постараюсь разобраться в специфики жанра антиутопия и найти различия в их тематическом содержании с помощью модели латентного размещения Дирихле. В качестве корпуса были выбрана 4 наиболее популярных произведения в жанре антиутопия: “Мы” Евгения Замятина,“О дивный новый мир” Хаксли,“451 градус по Фаренгейту” Брэдбери и “1984” Джорджа Оруэлла

Обработка данных

В комбинации эти 4 произведения дали порядка 130000 неуникальных слов после удаления стоп-слов, цифр и знаков пунктуации. Также, была выполнена лемматизация, затем корпус был разделен на одинаковые документы по 1000 слов на каждый, такое исскуственное деление было вынужденым, так как деление по главам или частям выдавало слишком большие документы. Помимо стандартных, в список стоп слов были добавлены именна главных героев книг.

rustopwords = data.frame(word =c(stopwords("ru"),"это","всё","весь","свой","мой","версия","альбом","наш","ваш","я","мы","ты","твой","все","лишь","моё","б","ооо","ещё","оно","своё","мои","нам","тот","бернард","уинстон","джулия","обрайен","ленайна","ленайн","линда","джон","гельмгольц","генри","монтэг","битти","милдред","монтэга","фанни","фабер","мустафа","фостер","линда","форд"),stringsAsFactors=FALSE)

Оптимальное количество категорий

Перед тем как мы могли бы построить нашу модель, нужно выяснить оптимальное количество тем. Построив несколько моделей в пределах разумных значений ,с вычислительной точки зрения, мы видим как варируется coherence score в зависимости от количества тем. Можно сделать вывод что 8 тем наиболее оптимальное количество. ## Построение модели Для начала мы должны построить doc-term матрицу, на основе которой будет построена наша модель. Помимо отдельных слов, матрица захватывает биграммы, а также повторно отчищает данные от лишнего шума.

dtm <- CreateDtm(doc_vec = tokens$text, 
                 doc_names = tokens$Num,
                 ngram_window = c(1, 2), 
                 stopword_vec = c(stopwords::stopwords("ru"), 
                                  stopwords::stopwords(source = "smart")), 
                 lower = TRUE, 
                 remove_punctuation = TRUE, 
                 remove_numbers = TRUE, 
                 verbose = FALSE)

dtm <- dtm[,colSums(dtm) > 2]

Для воспроизводимых результатов устанавливаем seed. Параметры были подобраны на глаз, однако многие вариации были опробованы

set.seed(12345)

model <- FitLdaModel(dtm = dtm, 
                     k = 8,
                     iterations = 500, 
                     burnin = 400,
                     alpha = 0.1,
                     beta = 0.01,
                     optimize_alpha = TRUE,
                     calc_likelihood = TRUE,
                     calc_coherence = TRUE,
                     calc_r2 = FALSE,
                     cpus = 8)

Темы

В результате мы получаем следующие темы:
topic coherence prevalence top_terms
8 8 0.022 20.438 рука, знать, глаз, хотеть, видеть, голова, дверь, увидеть, нога, лицо, почему, мир, уходить, слово, ночь, белый, черный, должный, слышать, воздух
6 6 0.008 20.019 мочь, лицо, становиться, понимать, день, голос, женщина, идти, снова, думать, комната, тело, стоять, смотреть, друг, взять, место, несколько, время, приходить
2 2 0.020 14.206 каждый, год, время, давать, новый, самый, чувство, ребенок, хотя, четыре, вид, очень, большой, случай, смерть, жить, приходиться, любовь, продолжать, первый
7 7 0.046 10.680 который, война, становиться, мир, книга, век, власть, цель, смысл, должный, самый, либо, наука, ибо, революция, группа, общество, история, свобода, возможность
5 5 0.112 10.081 стена, древний, самый, розовый, ясно, понимать, мочь, единый, вниз, говорить, синий, знать, стеклянный, глаз, завтра, день, запись, стол, последний, нумер
4 4 0.076 8.664 партия, слово, который, знать, телекран, год, старший, брат, мочь, старший_брат, министерство, существовать, новояз, океания, мысль, самый, кроме, победа, дело, прошлое
1 1 0.196 8.036 дикарь, директор, затем, главноуправитель, мистер, сом, голос, бутыль, слово, говорить, зал, студент, монд, эпсилон, повторять, вертоплан, отвечать, девушка, принимать, дельта
3 3 0.023 7.876 книга, который, словно, говорить, дом, стена, огонь, отвечать, город, пес, река, улица, сжигать, пожарный, миссис, бежать, сделать, дома, снова, делать
Параметр Coherence показывается насколько слова внутри одной темы семантически похожи, а prevalance оценивает насколько темы представлены в нашем корпусе. Поменяем названия наших тем и опишем их подробнее: * 1ая тема -“Система” - название должностей, специфические термины, деление людей. Данная тема описывает структурные обьекты и их компоненты. В случаи антиутопий мы можем наблюдать гос. структуры, университеты.
* 2ая тема -“Жизнь” - тема, описывающая жизнь человека, ее стадии. Новые открытия, первые в жизни события, рождения и смерть
* 3ья тема -“Движение” - Слова, описывающие движение: в городе, в доме, порывы огня, бег собаки. Постоянная активность и энергиченость.
* 4ая тема -“Старший брат” - тема, описывающая систему контроля, слежки и наказаний. Антиутопическая система устройства общества
* 5ая тема -“Описательные выражения” - много цветов, эпитетов, предметов * 6ая тема - “Неизвестно” - непонятный набор слов, которые скорее всего являются службными и не несут особого смысла
* 7ая тема -“Прогресс” - тема, связанная с развитием человечества, а также события, которые его сопроваждают.
* 8ая тема - “Непонятно” - неизвестный набор слов, которые скорее всего являются службными и не несут особого смысла
Система Жизнь Движение Старший брат Описательные выражания Неизвестно Прогресс Непонятно
дикарь каждый книга партия стена мочь который рука
директор год который слово древний лицо война знать
затем время словно который самый становиться становиться глаз
главноуправитель давать говорить знать розовый понимать мир хотеть
мистер новый дом телекран ясно день книга видеть
сом самый стена год понимать голос век голова
голос чувство огонь старший мочь женщина власть дверь
бутыль ребенок отвечать брат единый идти цель увидеть
слово хотя город мочь вниз снова смысл нога
говорить четыре пес старший_брат говорить думать должный лицо
зал вид река министерство синий комната самый почему
студент очень улица существовать знать тело либо мир
монд большой сжигать новояз стеклянный стоять наука уходить
эпсилон случай пожарный океания глаз смотреть ибо слово
повторять смерть миссис мысль завтра друг революция ночь
вертоплан жить бежать самый день взять группа белый
отвечать приходиться сделать кроме запись место общество черный
девушка любовь дома победа стол несколько история должный
принимать продолжать снова дело последний время свобода слышать
дельта первый делать прошлое нумер приходить возможность воздух
Посмотрим на дендрамму близости наших тем. Примечательно, что часть с темами с непонятными значениями вынесена отдельно от более конкретных тем.
Теперь мы можем более подробнее расмотреть темы и их близость:
Непонятно

Непонятно

Неизвестно

Неизвестно

Прогресс

Прогресс

Описательные выражения

Описательные выражения

Система

Система

Жизнь

Жизнь

Движение

Движение

Старший брат

Старший брат

В целом, результаты схожи с дендрамой.

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