Встречи из «Камер-фурьерского журнала» В. Ходасевича за 1926 г.
Author
Darya Galkina
Published
March 16, 2025
Как журнал Ходасевича стал математическим объектом
«Камер-фурьерский журнал» представляет собой краткие подневные записи за 17 лет (с 1922 по 1939) жизни В. Ходасевича за границей. Несмотря на то, что подобные личные заметки писателя не могут претендовать на объективность и полноту, журнал является важным источником сведений об истории эмигрантской литературы в целом и его социальной организации в частности.
Портрет В. Ходасевича
Этому документу посчастливилось стать предметом исследования Б. В. Орехова, П. Ф. Успенского и В. В. Файнберг (Орехов,Б.В., Успенский, П.Ф., Файнберг, В.В. 2018), которые прибегли к методу анализа сложных сетей, подсказанному им самой структурой материала. Действительно, журнал содержит единообразно оформленные записи Ходасевича о том, в чьём присутствии происходили его встречи с теми или иными людьми. Авторы структурировали данные журнала и подготовили набор данных о круге общения Ходасевича за 17 лет эмиграции. Работе с частью подготовленных для анализа документов посвящён наш исследовательский экзерсис.
Выбор и подготовка материала
Загрузим из папки months_data записи за один год — 1926 — и обобщим их. Выбор этого периода неслучаен. Весной 1925 года В. Ходасевич переезжает с Ниной Берберовой в Париж, что, как пишут (Орехов,Б.В., Успенский, П.Ф., Файнберг, В.В. 2018), вынуждает писателя “активно налаживать связи на новом месте”. Исследователи отмечают, что этап интенсивного общения продолжается и в течение 1926 года, что делает этот период ключевым для реконструкции круга контактов Ходасевича в эмиграции.
library(rgexf)library(igraph)library(dplyr)library(visNetwork)library(ggraph)library(paletteer)setwd(".\\dataverse_files\\months_data")paths <-list.files(pattern ="^1926_.*\\.gexf$", full.names =TRUE) joined <-tibble (from_name =character(), to_name =character(), weight =character())all_docs_to_df <-function(doc){ doc1 <-read.gexf(doc) |>gexf.to.igraph() |>as_long_data_frame () |>select(from_name, to_name, weight) joined <<-merge(doc1, joined, all=TRUE)}for (doc in paths){all_docs_to_df(doc)}#есть повторяющиеся пары, объединим эти наблюдения, сложив их весjoined_summarized <- joined |>group_by(from_name, to_name) |>summarize(weight =sum(weight))joined_summarized
Согласно сводке, граф направленный, именованный, взвешенный. Как можно понять из документации к набору данных, направленность рёбер не имеет смысла, ведь документы фиксируют только количество встреч каждого из упомянутых Ходасевичем лиц с каждым за каждый документированный месяц. Граф содержит 165 узлов, 1216 рёбер. У узлов есть атрибут name, а у рёбер – атрибут weight (количество встреч).
Плотность сети
edge_density(graph)
[1] 0.04493718
Количество и состав компонент
components(graph)$csize
[1] 158 3 2 2
Граф состоит из четырёх компонент, в наиболее крупной из них 158 узлов. Рассмотрим, кто из персон не попал в состав главной компоненты.
Рассчитаем взвешенную центральность узлов (она отражает количество и вес связей, в которые вовлечена персона) и сделаем её атрибутом. Также закодируем ширину рёбер количеством встреч – то есть присвоим атрибуту width значения атрибута weight.
E(graph)$width <-E(graph)$weightV(graph)$size <-sqrt(sqrt(wDegree))*5# нормализуем размер узловV(graph)$label.cex =0.5# укажем размер подписейE(graph)$width[1:10]
Клики представляют собой плотные группы внутри сети, структура которых удовлетворяет некоторым условиям. Так как на результат выделения клик может повлиять направленность рёбер, преобразуем граф в ненаправленный. Выведем некоторые из выделенных клик.
graph_undir <-as_undirected(graph, mode ="each")cliques(graph_undir, min =20)[1:3]
В главной компоненте ключевыми точками сочленения являтся Женя, Каплун, Аминадо, Рысс, Вольфсон и др.
Модулярность и анализ сообществ
Ранее был показан один из способов группировки узлов: деление на клики. Теперь продемонтрируем ещё один: применение алгоритмов обнаружения сообществ. Чтобы выбрать алгоритм для разбиения на группы, применим некоторые из них и посчитаем модулярность полученных сетей.
Алгоритм Louvain наилучшим образом определяет сообщества на нашем материале, поэтому остановимся на нём для дальнейшего анализа. Теперь каждому узлу графа присвоен номер его группы. Отобразим группы на графе закрашенными областями и оставим подписи только для периферийных групп, чтобы не перегружать изображение.
Конечно, рассматриваемая сеть обладает высокой плотностью, что сильно затрудняет процесс группировки (модулярность 0.34 – всё же не очень высокий показатель). Тем не менее, алгоритм выделил несколько обособленных сообществ, которые расположены ближе друг к другу, чем к остальной сети.
Так, легко выделяются: зелёное сообщество слева (Кук, Зайцев, Таубе, Нина, Женя, Ася и др.), голубая область справа (Сев, Каплун, Липницкий, Скрябнев и др.), салатовая область снизу (Аминадо, Бенедиктов, Вакар, Керенский, Сосинский, Поляков, Цвибак, Португейс и др.), а также сообщества, не принадлежащие главной компоненте (Карякины и Наташа; Поволоцкий и Цатуров; Слоним и Милоти).