Первое, что следовало бы сделать, закрыв данную книгу, это отменить существующий миропорядок.

— Иосиф Бродский

Даже люди, не читавшие Платонова, знают про особый платоновский язык: автор будто очнулся после катастрофы и заново собирает рассыпавшуюся речь. Герои «Котлована» — рабочие и крестьяне 1920-х годов — строят светлое будущее, но повесть об этом пронизана чувством абсурда и обречённости — то ли строительства, которым они заняты, то ли советского проекта, то ли жизни вообще.

Язык «Котлована» не имеет аналогов в русской литературе: он избыточный, намеренно «неправильный», смешивающий разные регистры речи. Эти черты вообще свойственны языку Платонова, но в «Котловане» его странность достигает, может быть, высшей степени. Именно язык задает контуры мира «Котлована» — где все устремлено к высшей цели и вместе с тем пронизано ощущением обреченности. Попробуем очертить эти контуры с помощью компьютерного анализа текста Платонова.

Импорт текста

Для импорта текста по главам нам потребуется пакет rvest и расширение Selector Gadget, которое поможет легко идентифицировать узел html, связанный с данными, которые необходимо извлечь.

library(dplyr)
library(tidyverse)
library(rvest)

# передаем ссылку на текст и выделяем необходимые уровни

url <- "https://knigityt.ru/text/kotlovan/"
html = read_html(url)

toc <- html %>% 
html_elements(".d2 a")
toc2 <- html %>% 
html_elements("p") 

# составляем тиббл с номером главы и ссылкой на текст

kotlovan <- tibble(
title_year = toc2 %>%
html_text2(),
href = toc %>% 
html_attr("href")
)

kotlovan <- kotlovan %>% 
mutate(href = paste0("https://knigityt.ru/", href))

urls <- kotlovan %>% 
pull(href)

# cоздаем функцию для извлечения текстов и скачиваем их
get_text <- function(url) {
read_html(url) %>% 
html_elements(".p") %>% 
html_text2() %>% 
paste(collapse= " ")
}

kotlovan_text <- map(urls, get_text)

# регулярное выражение, которое удалит имя автора в начале первой части
kotlovan_text[[1]] <- gsub("^Андрей Платонов ", "", kotlovan_text[[1]])

kotlovan_text <- kotlovan_text  %>%
flatten_chr() %>% 
as_tibble() 

kotlovan_text
## # A tibble: 10 × 1
##    value                                                                        
##    <chr>                                                                        
##  1 "В день тридцатилетия личной жизни Вощеву дали расчет с небольшого механичес…
##  2 "Утром Вощеву ударил какой-то инстинкт в голову, он проснулся и слушал чужие…
##  3 "Производитель работ общепролетарского дома вышел из своей чертежной конторы…
##  4 "Утром Козлов долго стоял над спящим телом Прушевского; он мучился, что это …
##  5 "В начале осени Вощев почувствовал долготу времени и сидел в жилище, окружен…
##  6 "Козлов прибыл на котлован пассажиром в автомобиле, которым управлял сам Паш…
##  7 "Организационный Двор покрылся сплошным народом; присутствовали организованн…
##  8 "...Очнулся Чиклин первым, потому что вспомнил что-то насущное, но, открыв г…
##  9 "Ликвидировав кулаков вдаль, Жачев не успокоился, ему стало даже труднее, хо…
## 10 "Поближе к утренней заре гостевые вчерашние мужики стали расходиться в окрес…

Частотные существительные

Начнем анализ с поиска наиболее частотных имен существительных. Для этого необходимо провести лемматизацию и частеречную разметку текста, с чем нам поможет пакет udpipe и модель для русского языка UD Russian SynTagRus.

library(udpipe)
russian_gsd <- udpipe_load_model(file = "russian-gsd-ud-2.5-191206.udpipe")
ann <- udpipe_annotate(russian_gsd, kotlovan_text$value)

ann_tbl <- as_tibble(ann) %>% 
select(-paragraph_id, -sentence, -xpos) %>%
filter(upos != "PUNCT")

nouns <- ann_tbl %>% 
filter(upos %in% c("NOUN", "PROPN")) %>% 
count(lemma) %>% 
arrange(-n)

DT::datatable(nouns[1:50,])

Отметим обилие фамилий в таблице. Значение имени в языке Платонова действительно крайне важно, ведь это едва ли не единственный источник информации о герое. В произведении практически нет портретных характеристик, герои Платонова обитают в мире, лишенном интерьеров и вещных подробностей. Помимо этого, фамилии ярко отражают характер своего героя: так, фамилия главного героя Вощева фонетически созвучна со словами «вообще» (в разговорном варианте - «ваще») и «вотще». Оба «значения» фамилии героя реализуются в повести: он ищет Смысл общего Существования («своей жизни я не боюсь, она мне не загадка») - но его личные поиски истины, равно как и общие усилия в достижении идеала, остаются Тщетными. Имя, таким образом, задает вектор смысла; оно как бы направляет читателя - но одновременно и «впитывает» значения контекста, наполняясь новыми оттенками смысла.

Итак, для отражения тональности произведения имена нарицательные также важны, поэтому мы сохраним этот подход и визуализируем полученные данные в виде интерактивного облака слов.

library(wordcloud2)
top_50 <- nouns %>% slice(1:50)
wordcloud2(top_50,
color="random-light", 
fontWeight = "normal",
backgroundColor="black", 
minRotation = -pi/6, 
maxRotation = -pi/6, 
rotateRatio = 1
)

Совместная встречаемость слов

Облако слов помогает дать общий обзор на тематику произведения. Углубляясь в часть смыслового анализа, обратимся к анализу совместной встречаемости слов в тексте и визуализируем полученные данные.

library(igraph)
library(ggraph)
x <-  subset(ann_tbl, upos %in% c("NOUN", "ADJ"))
cooc <- cooccurrence(x, term = "lemma", group = c("doc_id", "sentence_id"))

wordnetwork <- head(cooc, 30)
wordnetwork <- graph_from_data_frame(wordnetwork)

ggraph(wordnetwork, layout = "fr") +
geom_edge_link(aes(width = cooc, edge_colour = "grey", edge_alpha=0.7), show.legend = F) +
geom_node_text(aes(label = name), col = "darkblue") +
labs(title = "Совместная встречаемость слов", subtitle = "Слова, стоящие рядом в тексте")

Данный график позволяет нам определить ключевые идеи текста. Одна из важнейших проблем повести - проблема приобщения человека к новой жизни, и поэтому именно понятия “жизнь” и “человек” являются здесь центральными узлами. В то же время слово “жизнь” связано со многими экзистенциальными понятиями (смысл, счастье, истина, чувство), так как еще одной ключевой линией произведения является поиск “плана жизни” (в противовес существующим планам пятилеткам). Главный герой, по замыслу Платонова, «захотел открыть всеобщий, долгий смысл жизни». Помимо определения ключевых понятий, данный график позволяет выделить тематические группы внутри текста. Как показано выше, большая часть произведения вращается вокруг понятий поиска смысла жизни, познания человека, но Платонов затрагивает и другие важные вопросы: так, узел “девочка-мать” отражает, согласно некоторым исследованиям, образ судьбы России: умершая и оставленная лежать под спудом мать Насти символизирует вечную Россию, Россию историческую, ушедшую в прошлое без возврата; сама же Настя является символом новой советской России, ставшей «сиротой» без России исторической и по этой причине погибающей (Александров 1970, 140). Группа, объединяющая понятия социалистической направленности, отражает проблему колхозного строительства.

Синтаксическая разметка

А теперь проведем синтаксический анализ вступительного предложения, которое, по мнению автора известного литературного канала “Армен и Федор”, входит в топ-10 первых строчек в истории русской литературы (для тех, кто еще не знаком с творчеством Армена Захаряна, его Youtube-канал - моя персональная рекомендация).

kotlovan_synt <- ann %>% 
as.data.frame() 

kotlovan_synt_sel <- kotlovan_synt %>% 
filter(doc_id == "doc1", sentence_id == 1) 

e <- subset(kotlovan_synt_sel, head_token_id != 0, select = c("token_id", "head_token_id", "dep_rel"))
e$label <- e$dep_rel


gr <- graph_from_data_frame(e, vertices = kotlovan_synt_sel[, c("token_id", "token", "lemma", "upos", "xpos", "feats")], directed = TRUE)

a <- grid::arrow(type = "closed", length = unit(.1, "inches"))

ggraph(gr, layout = "fr") + 
  geom_edge_link(aes(edge_alpha=0.7, label = dep_rel), 
                 arrow = a, 
                 end_cap = circle(0.07, 'inches'), 
                 show.legend = F,
                 label_colour = "grey30",
                 edge_color = "grey") + 
geom_node_point(color = "lightblue", size = 4) +
theme_void(base_family = "") +
geom_node_text(ggplot2::aes(label = token), nudge_y = 0.2)

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

Выводы

Результаты компьютерного анализа повести Платонова «Котлован» подтверждают уникальность и богатство ее лингвистических и семантических слоев. Визуализация частотных существительных, где фамилии героев выступают в качестве полноценных смысловых единиц, акцентрирует внимание на тональности произведения, дает общий обзор затрагиваемых тем. Анализ совместной встречаемости слов показывают важность таких концептов в произведении, как “жизнь”, “человек”, “смысл”, подчеркивающих экзистенциальные поиски героев, а также помогает очертить и разграничить несколько ключевых тем текста. Синтаксический анализ первого предложения открывает многослойность и разветвленность языка произведения, его намеренную избыточность и неправильность (или, как отмечает писатель Отрошенко, наоборот, “сверхправильность, правильность до такой степени, в какой земные существа не нуждаются: для них было бы достаточно сказать в день тридцатилетия Вощеву дали расчет (Отрошенко 2005, 45).

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

Совокупность этих аспектов создает сложный, многомерный образ произведения Платонова, где каждый стилистический прием и каждое слово играют свою роль, формируя уникальную атмосферу «Котловане», непрерывно вызывающего интерес исследователей литературы.

Александров, A. 1970. О повести «Котлован». Грани.
Отрошенко, В. 2005. Тайная история творений. Культурная революция.