library(tidyverse)
library(purrr)
library(ape)
library(phangorn)
library(TreeTools)
library(scales)Консенсусная сеть и Шолохов
Строим консенсусную сеть на основе частотностей из датасета «Стилеметрические данные “Тихого Дона” и современной ему прозы», подготовленного Б.В.Ореховым
Введение
Попробуем построить консенсусную сеть с помощью метода consensusNet(). Он позволяет построить сеть на основе множества деревьев. Хорошо подходит для выявления конфликтующих сигналов, областей неопределенности в филогенетических отношениях. В качестве входных данных принимает набор деревьев.
Используемые библиотеки
Трансформируем данные
Читаю файл и транспонирую матрицу, чтобы столбцы соответствовали переменным, а ряды - наблюдениям
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)Выводы
На консенсусной сети мы видим близость “Тихого Дона” к “Донским рассказам”, что, возможно, связано с тематическим и лексическим сходством. Оба произведения описывают жизнь и быт казачества, часто используются архаизмы и регионализмы.
“Поднятая целина” и “Они сражались за родину” попали в другой кластер. Это более поздние произведения, и их лексика заметно отличается от “Тихого Дона” и “Донских рассказов”.
Так как метод консенсусной сети позволяет сгруппировать тексты на основе сходства, а сходство может быть различного качества (тематическое, лексическое, грамматическое и т. д.), можно предположить особую роль тематико-лексического фактора.
Несмотря на описанные выше различия, произведения Шолохова группируются в общий корневой кластер, в который не попадает “Судьба человека”. Возможно, это произведение оказывается изолированным из-за жанровых особенностей (рассказ в рассказе), компактного размера и акцента на личную трагедию, а не на социальные процессы