Цветовая палитра Иосифа Бродского

подзаголовок

Автор

Пирогова Виктория

Дата публикации

30.11.2024

Аннотация
Цель данного мини-исследования – представить по возможности относительно полное разнообразие цветов в поэзии И. А. Бродского, а также обратить внимание на самые “цветные” стихотворения автора.

Я обожаю живопись. Мне больше других всю жизнь… дороже всех итальянцы; я думаю, Джованни Беллини и Пьеро делла Франческа. В двадцатом веке <…> французский художник Вюйяр(Vuillard). Боннар тоже, но Вюйяр гораздо больше”.

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

Введение

Предпосылки

Историю цвета всегда интересно изучать в поэзии. Особенно, если автор намеренно использует определнный цвет только в определенных контекстах. Бродский очень редко делает что-то просто так. Приведенная выше цитата лишь одна из немногих, в которых можно увидеть трепетное отношение поэта к живописи. Для понимания того, насколько Бродский был погружен в данную область, привожу несколько предпосылок:

  • отец Бродского занимался фотографией. У поэта сохранилось несколько черно-белых снимков
  • отношения с Марианой Басмановой – дочери художника Павла Ивановича Басманова – наложили отпечаток на поэтическое восприятие. Сборник, посвященный девушке, содержит большую часть “цветовой гаммы”
  • еще до эмиграции в 1972 г. Бродский был хорошо знаком с “левыми” художниками – мастерами авангарда

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

Материал

Для данного исследования был аннотирован датасет, состоящий из “малых” стихотворений Бродского. “Большие” тексты (поэмы, пьесы, эссе) в данной работе не учтены.

  • Количество текстов: 579
  • Количество токенов (= слов, без учета пунктуации): 143,627

Использованные библиотеки

  • stringr
  • rvest
  • tidyverse
  • ggplot2
  • tidytext
  • tokenizers
  • udpipe
  • wordcloud
  • RColorBrewer

Этапы работы

  1. Собран датасет с данного сайта при помощи инструмента Selector gadget;

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

  3. Полученные тексты аннотированы при помощи предустановленной модели

  4. Найдены самые часто употребляемые глаголы и прилагательные. Предложена идея исследовать все упоминания цветов в выбранном корпусе текстов

Код

Далее представлены частично аннотированные части кода, который был написан для проведения этого мини-исследования

Этап №0. Загрузка библиотек

library(stringr)
library(rvest)
library(tidyverse)
library(ggplot2)
library(tidytext)
library(tokenizers)
library(udpipe)
library(wordcloud)
library(RColorBrewer)

Этап №1. Сборка датасета

Текст представляет собой ссылки на все стихотоврения. Перейдя по ссылкам, мы попадаем к тексту. Таким образом, для начала нужно пройтись по первой странице и собрать: 1. Названия стихотоврений 2. Полные сслыки на стихотворения

url <- "https://libverse.ru/brodskii/list.html"
# из-за проблем с кодировкой, нужно добавить конкретный параментр encoding,
# чтобы тексты отображались на русском, а не на эльфийском
url_encoding <- guess_encoding(url)
#загружаем url в окружение. Даем системе его прочитать
html <- read_html(url, encoding = "windows-1251")

# используя selector gadget, собираем только те элементы, которые нам нужны, то есть ссылки на стиховторения
toc <- html|>
  html_elements("#verses a")

# создаем таблицу, вынимая из html нужное нам содержание
libri <- tibble(title = toc|>
                  html_text2(),
                href = toc|>
                  html_attr("href")) |>
  filter(!is.na(title))

# чтобы получить полноценную ссылку, которую мы можем вставить в поисковую строку, 
# необходимо "приклеить" к href протокол доступа и доменное имя  
libri <- libri |> 
  mutate(link = paste0("https://libverse.ru/brodskii/", href)) |> 
  select(-href)

#собираю полученные сслыки для след. этапа
urls <- libri |> 
  pull(link)

libri

Этап №2. Чистка текста стихотворений

После получения названий и ссылок на стихотворения необходимо добавить текст каждго них в таблицу. Для этого создается функция, проходящаяся по каждой ссылке (которые мы до этого “склеили” с протоколом и именем). Функция забираем на каждой странице текст (при помощи уже упомянутого selector gadget). Однако, тексты содержат служебные значки и двойные пробелы. Используем регулярные выражения, чтобы избавиться от шума.

#создаем функцию
get_text <- function(url){
  read_html(url, encoding = "windows-1251")|>
    html_element("pre")|>
    html_text2()|>
    #используем регулярные выражения
    str_replace_all("\\\n", " ")|>
    str_replace_all("\\\r", " ")|>
    str_replace_all(" {2,}", " ")|>
    #убираем двойные пробелы
    trimws()
  
}

#при помощи map проходимся функцией по всем ссылкам, которые собрали на прошлом этапе
libri_text <- map(urls, get_text) 

#превращаем полученное в таблицу
libri_text <- libri_text |>
  flatten_chr() |>
  as_tibble()

#объединяем две таблицы
brodsky <- libri |> 
  bind_cols(libri_text)

#сохраняем полученный датасет
save(brodsky, file = "brodsky.Rdata")

brodsky

#save(brodsky, file = "brodsky.Rdata")

Этап №3. Аннотирование

После создания таблицы, текст внутри был аннотирован при помощи предустановленной модели syntagrus (была еще опробована модель taiga, обученная на русской поэзии. Однако данная модель возвращала большое количество ошибочных лемм.)

udpipe_download_model(language = "russian-syntagrus")
syntagrus <- udpipe_load_model(file = "russian-syntagrus-ud-2.5-191206.udpipe")

brodsky_annotate <- udpipe_annotate(syntagrus, brodsky$value, doc_id = brodsky$title)

brodsky_annotate_tbl <- as_tibble(brodsky_annotate)

brodsky_annotate_tbl

Разведывательный анализ

Для начала было принято решение составить список самых частотных глаголов и прилагательных, поскольку не было идеи, с чего можно начать анализ. После составления частотных таблиц были созданы два облака слов. Параллельно было отмечено, что одними из самых частых прилагательных являются две категории цвета: “черный” и “белый”. И здесь было принято решение опираться на книгу Валентины Полухиной “Словарь цвета поэзии Иосифа Бродского” (Полухина 2017). Книга посвящена исследованию категории цвета в поэзии И. Бродского.

brodsky_verb <- brodsky_annotate_tbl|>
  filter(upos == "VERB")|> 
  count(lemma, sort = TRUE) 

brodsky_adj <- brodsky_annotate_tbl|>
  filter(upos == "ADJ")|> 
  count(lemma, sort = TRUE) 

#создаем два облака слов: с глаголами и прилагательными
pal <- RColorBrewer::brewer.pal(8, "Dark2")
wordcloud(brodsky_verb$lemma, brodsky_verb$n, colors = pal, max.words = 130)
wordcloud(brodsky_adj$lemma, brodsky_adj$n, colors = pal, max.words = 130)

Таблицы с самыми часто появляющимися в стихах Бродского глаголами и прилагательными

Облако слов для визуализации(обращем внимание на “черный” и “белый”):

Сбор информации о цветах

Выбраны несколько основных цветов и оттенков (“черный”, “белый”, “темный”, “светлый”, “красный”, “желтый”, “серый”, “зеленый”, “синий”). Остальные цвета имею около одного вхождения и в данной работе не учитываются. Посчитано количество каждого цвета (лемма) в аннотированном тексте.

Однако прежде чем перейти к результату, предположите, какие цвета (помимо черного и белого, которые мы уже видели) встречаются у Бродского чаще всего?

А теперь читайте дальше, чтобы подтвердить или опровергнуть свои предположения:3

brodsky_colors <- brodsky_annotate_tbl|>
  filter(lemma %in% c("черный", "белый", "темный", "светлый", "красный", "желтый", "серый", "зеленый", "синий"))|>
  count(lemma, sort = TRUE)

#график - иллюстрация таблицы с частотой цветов
g <- ggplot(brodsky_colors, aes(x = n, y = reorder(lemma, n), fill = "blue")) +
  geom_bar(stat = "identity", show.legend = FALSE) +
  labs(
    title = "Распределение цветов у Бродского",
    subtitle = "1961-1989",
    y = NULL
  ) +
  theme_bw()

g

На данном этапе мы получаем данные, которые не совпадают с уже упомянутой книги Валентины Полухиной. По ее данным распределение цветов у Бродского такое:

Цвет % вхождений
Светлый 62
Темный 38
Белый 22
Синий (голубой) 22.5
Черный 22.5
Красный 9
Серый 9
Зеленый 8
Желтый 8

Из-за чего происходит такое насовпадение? Все достаточно просто. Можно представить несколько гипотез:

  • разное количество текстов в двух корпусах: у В. Полухиной 184 стихотворений, здесь же 579 (а цветовые обозначения точно неравномерно распределены по стихам)
  • исследование Полухиной построено на английских переводах Бродского, поэтому распределение цветовых обозначений отличается

Однако скорее всего здесь имеют место быть оба предположения.

Самое “цветное” стихотворение

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

colors_in_poems <- brodsky_annotate_tbl|>
  select(doc_id, lemma)|>
  filter(lemma %in% c("черный", "белый", "темный", "светлый", "красный", "желтый", "серый", "зеленый", "синий", "голубой"))|>
  count(doc_id, sort = TRUE)

colors_in_poems

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

Для ответа на вопрос выше нам нужно посчитать количество токенов в каждом стихотоворении(без учета пунктуации)

count_tokens <- brodsky_annotate_tbl|>
  filter(upos != "PUNCT")|>
  select(doc_id, token)|>
  count(doc_id, sort = TRUE)

count_tokens

В таком случае нам необъходимо посчитать не количество цветов, а их долю в тексте одного стиха

final <- count_tokens|>
  left_join(colors_in_poems)|>
  mutate(perc = n*100/tokens)|>
  arrange(-perc)

final

Таким образом, мы получаем результат - самое “цветное” стихотворение у Бродского - это текст под названием “Был черный небосвод белей тех ног…”. Не совсем подходит понятие “цветное”, но так как “черный” и “белый” мы установили как цвета, получилось, что получилось

По-настоящему цветное стихотворение

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

count_tokens <- brodsky_annotate_tbl|>
  filter(upos != "PUNCT")|>
  select(doc_id, token)|>
  count(doc_id, sort = TRUE)|>
  rename(tokens = n)
  
colors_in_poems <- brodsky_annotate_tbl|>
  select(doc_id, lemma)|>
  filter(lemma %in% c("красный", "желтый", "серый", "зеленый", "синий", "голубой", "оранжевый", "розовый"))|>
  count(doc_id, sort = TRUE)

final <- count_tokens|>
  left_join(colors_in_poems)|>
  mutate(perc = n*100/tokens)|>
  arrange(-perc)

final

Получаем результат, что самое цветное стихотворение – это “Остров Прочида”. Однако тут важно задать вопрос о том, что мы считаем “самым” цветным текстом. Ведь если посмотреть на вышеуказанное стихотворение, из цветного там только слова “синий” и “синева”(2 токена). Делает ли это его “цветнее” текста “Был черный небосвод белей тех ног…”, где токенов, обозначающих цвета гораздо больше(хоть и само стихотворение длиннее).

Выводы

Важно задать вопрос о том, что мы считаем “самым” цветным текстом. Ведь если посмотреть на вышеуказанное стихотворение, из цветного там только слова “синий” и “синева”(2 токена). Делает ли это его “цветнее” текста “Был черный небосвод белей тех ног…”, где токенов, обозначающих цвета гораздо больше(хоть и само стихотворение длиннее)? Ответом на данном этапе будет: “Каким образом конкретный исследователь будет понимать”цвет”, таким и будет результат”. Мы не придем к абсолютной истине, однако можем получить любопытную статистику и вступить в диалог с уже проведенными исследованиями.

Для прочитавший есть подарок:

использованная литература

Полухина, Валентина. 2017. Словарь цвета поэзии Иосифа Бродского. Новое литературное обозрение.