Консенсусная сеть и Шолохов

Строим консенсусную сеть на основе частотностей из датасета «Стилеметрические данные “Тихого Дона” и современной ему прозы», подготовленного Б.В.Ореховым

Автор

Карина Чадаева

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

20.02.2025

Введение

Попробуем построить консенсусную сеть с помощью метода consensusNet(). Он позволяет построить сеть на основе множества деревьев. Хорошо подходит для выявления конфликтующих сигналов, областей неопределенности в филогенетических отношениях. В качестве входных данных принимает набор деревьев.

Используемые библиотеки

library(tidyverse)
library(purrr)
library(ape)
library(phangorn)
library(TreeTools)
library(scales)

Трансформируем данные

Читаю файл и транспонирую матрицу, чтобы столбцы соответствовали переменным, а ряды - наблюдениям

data <- read.table("table_with_frequencies.txt", header = TRUE, sep = " ") |> 
  t() |> 
  as.data.frame()

Консенсусная сеть consensusNet()

Для построения консенсусной сети мне нужно построить консенсусные деревья. Функция get_tree считает евклидово расстояние и строит дерево. В качестве аргументов я указываю, чтобы функция брала 500 столбцов в диапазоне 1:4000 без повторов.

get_tree <- function(df) {
  X <- df[ , sample(4000, replace = F, size = 500)]
  distmx <- dist(scale(X))
  tr <- as.phylo(hclust(distmx))
  tr
}

trees <- map(1:30, ~get_tree(data))

Получив деревья, я могу вычислить консенсус.

mph <- as.multiPhylo(trees)
cons.nw <- consensusNet(mph, prob = 0.4, rooted = FALSE)

Навожу красоту

cons.nw$col <- str_remove_all(cons.nw$tip.label, "_.+")
colour <- hue_pal()(12)
col_tbl <- tibble(label = unique(cons.nw$col),
                  col = colour)

color_group <- tibble(label = cons.nw$col) |> 
  left_join(col_tbl)

cons.nw$col <- color_group$col

set.seed(28000)
par(mar = c(0,0,0,0))
plot(cons.nw, type = "2D", 
     direction = "horizontal",
     edge.color = "grey40",
     tip.color = cons.nw$col,
     edge.width = 0.7,
     cex = 0.7,
     srt = 20,
     adj = 0.5,
     fsize = 0.8)

Выводы

На консенсусной сети мы видим близость “Тихого Дона” к “Донским рассказам”, что, возможно, связано с тематическим и лексическим сходством. Оба произведения описывают жизнь и быт казачества, часто используются архаизмы и регионализмы.

“Поднятая целина” и “Они сражались за родину” попали в другой кластер. Это более поздние произведения, и их лексика заметно отличается от “Тихого Дона” и “Донских рассказов”.

Так как метод консенсусной сети позволяет сгруппировать тексты на основе сходства, а сходство может быть различного качества (тематическое, лексическое, грамматическое и т. д.), можно предположить особую роль тематико-лексического фактора.

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