Тихий дон да консенсусное дерево

Author

Оксана Цегоева

1 Введение

В 2020 в рамках работы “Стилеметрические данные «Тихого Дона» и современной ему прозы” был подготовлен датасет, содержащий информацию о частотностях слов в произведениях различных писателей, в частности — Михаила Александровича Шолохова. В данной работе мы кластеризуем данные, построив консенсусное дерево, и попробуем интерпретировать результаты.

2 Построить дом, посадить дерево

Прежде всего мы загружаем данные и транспонируем таблицу, чтобы в названиях столбцов были слова, а в наименованиях рядов — авторы_произведения:

library(tidyverse)
library(stylo)

freqs_data <- read.table(file = "table_with_frequencies.txt") |>
  t()

Благодаря stylo можно построить консенсусное дерево с помощью метода BCT (Bootstrap Consensus Tree). Я хочу показать два дерева, которые отличаются значением одного параметра mfw.max (максимальное число самых часто встречающихся слов):

bct_result <- stylo(gui = FALSE, 
                    frequencies = freqs_data,
                    analysis.type = "BCT",
                    mfw.min = 100,
                    mfw.max  = 500,
                    mfw.incr = 100,
                    distance.measure = "wurzburg",
                    custom.graph.title = "Sholohov and others",
                    consensus.strength = 0.5,
                    write.png.file = TRUE
)

Заметно, что авторы, представленные несколькими произведениями, в основном по ним и кластеризуются, и само дерево выглядит неплохо. Впрочем, задавая mfw.max = 500 и наблюдая, что между Тихим Доном и другими произведениями Шолохова встают несколько других произведений, я задумывалась о том, можно ли это как-нибудь изменить. На интерес меняя mfw.max , я увидела, что примерно с mfw.max = 1300 Тихий Дон и другие работы автора начинают располагаться гораздо ближе по отношению друг к другу. Можно даже сказать, что находясь на отедьных ветках, они всё же собираются на одной большой ветке:

bct_result <- stylo(gui = FALSE, 
                    frequencies = freqs_data,
                    analysis.type = "BCT",
                    mfw.min = 100,
                    mfw.max  = 1300,
                    mfw.incr = 100,
                    distance.measure = "wurzburg",
                    write.png.file = TRUE,
                    consensus.strength = 0.5,
                    custom.graph.title = "Sholohov and others"
)

В целом я вижу смысл в этом изменении: задействование большего количества данных часто приводит к более совершенным результатам. Но могла ли я предугадать такой исход? Если честно, нет. Но всё равно это весьма любопытно!