В этом миниисследовании я попробую построить консенсусное дерево на основании файла с частотностями их датасета «Стилеметрические данные “Тихого Дона” и современной ему прозы» и интерпретировать полученный результат.
Загружаем необходимые библиотеки, загружаем файл и транспонируем его, чтобы в названиях столбцов были слова, а в названиях рядов — авторы и произведения в формате автор_произведение.
library(tidyverse)
library(stylo)
library(DT)
data_raw <- read.table("table_with_frequencies.txt", header = TRUE, sep = " ")
data_transposed <- t(data_raw)
data <- as.data.frame(data_transposed)
datatable(data, options = list(pageLength = 10))
Построим консенсусное дерево со следующими параметрами: минимальное количество наиболее частотных слов — 100, максимальное количество слов, которые могут быть выбраны для анализа, — 500, шаг для выбора наиболее частотных слов — 100.
bct_result <- stylo(gui = FALSE,
frequencies = data,
analysis.type = "BCT",
mfw.min = 100,
mfw.max = 500,
mfw.incr = 100,
distance.measure = "wurzburg",
write.png.file = TRUE,
consensus.strength = 0.5,
plot.custom.width = 8,
plot.custom.height = 8,
custom.graph.title = "Консенсусное дерево: Шолохов и его современники")
Интересно, что на визуализации между произведениями Шолохова есть и другие авторы с их произведениями. Попробуем повлиять на это с помощью изменения упомянутых выше показателей, чтобы произведения Шолохова были ближе друг к другу: увеличим максимальное количество наиболее частотных слов и уменьшим шаг для выбора наиболее частотных слов.
bct_result <- stylo(gui = FALSE,
frequencies = data,
analysis.type = "BCT",
mfw.min = 100,
mfw.max = 1000,
mfw.incr = 20,
distance.measure = "wurzburg",
write.png.file = TRUE,
consensus.strength = 0.5,
plot.custom.width = 8,
plot.custom.height = 8,
custom.graph.title = "Консенсусное дерево: Шолохов и его современники")
Видим, что с показателями максимумом в 1000 слов, которые могут быть выбраны для анализа, и шагом 20 для выбора наиболее частотных слов произведения Шолохова кластеризовались в более явном виде и теперь они еще ближе друг к другу, причем между ними нет произведений других авторов.
А что, если мы оставим максимум в 500 слов и шаг 20?
bct_result <- stylo(gui = FALSE,
frequencies = data,
analysis.type = "BCT",
mfw.min = 100,
mfw.max = 500,
mfw.incr = 20,
distance.measure = "wurzburg",
write.png.file = TRUE,
consensus.strength = 0.5,
plot.custom.width = 8,
plot.custom.height = 8,
custom.graph.title = "Консенсусное дерево: Шолохов и его современники")
Видим, что в таком случае произведения Шолохова все равно кластеризуются ближе :)
А если только увеличить показатель максимального количества частотных слов, а шаг оставить прежним (100)?
bct_result <- stylo(gui = FALSE,
frequencies = data,
analysis.type = "BCT",
mfw.min = 100,
mfw.max = 1000,
mfw.incr = 100,
distance.measure = "wurzburg",
write.png.file = TRUE,
consensus.strength = 0.5,
plot.custom.width = 8,
plot.custom.height = 8,
custom.graph.title = "Консенсусное дерево: Шолохов и его современники")
В таком случае произведения Шолохова не кластеризуются до конца.
Консенсусное дерево — очень удобный инструмент, который помогает выявить устойчивые кластеры произведений, основываясь на частотностях слов. Оно показывает схожесть текстов разных авторов и возможное влияние стиля.
Изначально я предположила, что лучшую кластеризацию может обеспечить только увеличение показателя максимального количества частотных слов, однако только такое решение может не помочь — обеспечить более качественную кластеризацию помогло уменьшение шага (с 100 до 20).