library(tidyverse)
library(stylo)
library(dendextend)
library(ape)
library(purrr)
Шолохов или не Шолохов: повтряем стилеметрический эксперимент
Эта небольшая работа - попытка повторить исследование, посвященное атрибуции “Тихого Дона”
1 Вдруг вы пропустили всю шумиху:
«Тихий Дон» — это не просто роман, это настоящая литературная эпопея, которая всколыхнула не только донские степи, но и умы читателей и критиков. С самого момента его публикации в конце 1920-х годов начались споры вокруг определения авторства текста.
Шолохову на момент написания «Тихого Дона» было чуть больше 20 лет. В 20 лет большинство только учатся варить макароны, а тут парень берет и пишет эпопею уровня Толстого. Конечно, у многих возникли вопросы:
«Миш, ты уверен, что это твое? Может, списал где-то?»
Ну, и рукопись долгое время найти не могли. Не то, что бы, когда нашли, вопросы прям отпали, но все же.
Стилеметрический анализ дает нам еще одну возможность беспристрасно взглянуть на этот исследовательский вопрос.
2 Стилеметрия в консенсусных деревьях
2.1 Сперва…
2.2 Данные
В уже подготовленном корпусе собраны тексты Шолохова и его современников. Важным является и наличие в корпусе произведений писателя Фёдора Крюкова, которому, в одной из версий “против” Шолоха приписывают авторство “Тихого Дона”.
<- read.csv('table_with_frequencies.txt', header = TRUE, sep = ' ') %>%
data t()
2.3 Консенсусное дерево методом Bootstrap Consensus Tree
Настройки предикторов регулируются “под” уже бесспорную аттрибуцию. Так, мы, например, подстраивали значения, смотря на кластеризацию тектов Крюкова. Например, если задавать довольно низкое количество наиболее частотных слов, “Крюков” расползается по множеству кластеров, несмотря на то, что многие авторы кластеризуются довольно четко.
par(family = "Arial", cex.main = 1.5, col.main = "#0E540F")
<- stylo(gui = FALSE,
bct_result frequencies = data,
analysis.type = "BCT",
mfw.min = 50,
mfw.max = 1500,
mfw.incr = 100,
distance.measure = "wurzburg",
write.png.file = FALSE,
consensus.strength = 0.5,
plot.custom.width = 8,
plot.custom.height = 8,
custom.graph.title = 'Атрибуция авторства "Тихого Дона"',
plot.custom.height = 100,
plot.custom.width = 100
)
Результаты кластеризации демострируют некоторую оторванность “Тихого Дона” от основного массива текстов Шолохова, однако явно прослеживается несомненная связь. Так, первый том “Тихого Дона” даже кластеризуется не с остальными томам, а с “Донскими рассказами” - ранней прозой Шолохова. Кроме того, видна и оторванность четвертого тома “Тихого Дона” от общей ветви романа, что объясняется более поздним временем написания и, соответсвенно, большим временным разрывом.
2.4 Консенсусное дерево с Ape
<-c('#0E540F', '#308860FF', '#60C090FF', '#505050FF', "#808080FF", "#B8B078FF", "#787038FF", "#E0D088FF", "#92A0FF", "#C8C8C8FF", "#B8B8D8FF", "#7888D8FF")
pal
<- function(df) {
get_tree <- df[ , sample(2000, replace = F, size = 100)]
X <- dist(scale(X))
distmx <- as.phylo(hclust(distmx))
tr
tr
}
set.seed(123)
<- map(1:3, ~get_tree(data))
trees_result <- consensus(trees_result, p = 0.5, rooted = FALSE)
cons
# назначаем цвета для каждого автора
<- tibble(author = str_remove(cons$tip.label, "_.+")) %>%
colors distinct(author) %>%
mutate(pal)
<- tibble(author = str_remove(cons$tip.label, "_.+")) %>%
cols left_join(colors)
<-c('#0E540F', '#308860FF', '#60C090FF', '#505050FF', "#808080FF", "#B8B078FF", "#787038FF", "#E0D088FF", "#92A0FF", "#C8C8C8FF", "#B8B8D8FF", "#7888D8FF")
pal
<- consensus(trees_result, p = 0.5, rooted = FALSE)
cons
# строим дерево
par(mar = c(0,0,0,0))
plot.phylo(cons,
type = "unrooted",
use.edge.length = TRUE,
edge.width = 1,
font = 2,
no.margin = TRUE,
label.offset = 0,1,
direction = "rightwards",
plot = TRUE,
lab4ut = "a",
node.depth = 1,
tip.color = cols$pal)
# подписываем узлы
nodelabels(text=sprintf("%.2f", cons$node.label),
node=1:cons$Nnode+Ntip(cons),
frame='circle',
bg = "#B4C3C3FF",
cex = 0.5,
)
Здесь мы также можем увидеть, что стилистически “Тихий Дон” очень схож с “Донскими рассказами”, в то время как поздняя проза Шолохова обособляется в отдельную ветвь.
3 Итоги
Вместе с другими фактами, позволяющими определить авторство определенного писателя, стилеметрический анализ - действительно очень эффективный метод. Но его минусами все же остаются субъективность выборки текстов и настройки построения дерева.