Перейти к содержанию

Стилометрические графики

ruts.visualizers.dendrogram_plot(), ruts.visualizers.pca_plot(), ruts.visualizers.mds_plot(), ruts.visualizers.mendenhall_plot()

Описание

Графики к стилометрии: дендрограмма и многомерное шкалирование по матрице расстояний delta, диаграмма главных компонент по частотам самых частых слов и кривые Менденхолла нескольких текстов - набор, которым в stylo смотрят на кластеризацию текстов по авторам. Функции принимают оси ax и возвращают Axes.

Дендрограмма

Иерархическая кластеризация scipy.cluster.hierarchy по матрице расстояний между текстами; метод Уорда по умолчанию, как в stylo и у Evert и др. (2015), подписи листьев - имена текстов из индекса матрицы.

Параметр Тип По умолчанию Описание
distances DataFrame - Симметричная матрица расстояний с именами текстов
method str ward Метод объединения кластеров scipy.cluster.hierarchy.linkage
ax Axes None Оси для графика

Главные компоненты

Метод главных компонент по z-оценкам относительных частот самых частых единиц (frequency_table, z_scores) через сингулярное разложение, как pca.visualization в stylo: тексты на плоскости двух первых компонент с подписями, в подписях осей - доля объясненной дисперсии.

Параметр Тип По умолчанию Описание
corpus dict[str, list[str]] - Единицы текстов по именам текстов
n_mfw int 100 Число самых частых единиц; None - все
culling float 0.0 Наименьшая доля текстов, в которых встречается единица
ax Axes None Оси для графика

Многомерное шкалирование

Классическое многомерное шкалирование (Torgerson 1952) по любой матрице расстояний: двойное центрирование матрицы квадратов расстояний и два главных собственных вектора; расстояния между точками приближают расстояния матрицы.

Параметр Тип По умолчанию Описание
distances DataFrame - Симметричная матрица расстояний с именами текстов
ax Axes None Оси для графика

Кривые Менденхолла

Доли слов по длине в символах (mendenhall_curve) для каждого текста на одном графике - сравнение профилей авторов.

Параметр Тип По умолчанию Описание
corpus dict[str, list[str]] - Слова текстов по именам текстов
ax Axes None Оси для графика

Пример использования

Рассмотрим работу визуализаторов на примере 8 текстов из набора данных StalinWorks.

Пример

Код:

# Загрузка библиотек
import matplotlib.pyplot as plt
from ruts import WordsExtractor
from ruts.corpus import delta
from ruts.datasets import StalinWorks
from ruts.visualizers import dendrogram_plot, mds_plot, mendenhall_plot, pca_plot

# Подготовка данных
sw = StalinWorks()
we = WordsExtractor(use_lexemes=True, lowercase=True, filter_nums=True)
corpus = {f"текст {i + 1}": we.extract(text) for i, text in enumerate(sw.get_texts(limit=8))}
distances = delta(corpus, n_mfw=100, variant="cosine")

# Дендрограмма и главные компоненты на одной фигуре
fig, (left, right) = plt.subplots(1, 2, figsize=(13, 5))
dendrogram_plot(distances, ax=left)
pca_plot(corpus, n_mfw=100, ax=right)

# Многомерное шкалирование и кривые Менденхолла
fig, (left, right) = plt.subplots(1, 2, figsize=(13, 5))
mds_plot(distances, ax=left)
mendenhall_plot({name: corpus[name] for name in list(corpus)[:3]}, ax=right)

Результат:

ruts

ruts