Files
NLP/lab1/presentation/latex/stardew_stylometry.tex

986 lines
55 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

% !TeX program = xelatex
% Стилометрическая классификация реплик Stardew Valley — академическая Beamer-презентация.
% Сборка: xelatex stardew_stylometry.tex (два прохода) в каталоге latex/.
\documentclass[aspectratio=169,10pt]{beamer}
\usepackage{fontspec}
\usepackage[russian]{babel}
\babelfont{rm}{Liberation Sans}
\babelfont{sf}{Liberation Sans}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage[most]{tcolorbox}
\usepackage{graphicx}
\usepackage{etoolbox}
\graphicspath{{../images/}{../generated/}}
% ---------- Цвета: сдержанная академическая гамма ----------
\definecolor{cream}{RGB}{253,246,231}
\definecolor{inkbrown}{RGB}{62,42,26}
\definecolor{accent}{RGB}{140,95,45}
% ---------- Общий вид ----------
\usefonttheme{professionalfonts}
\setbeamertemplate{navigation symbols}{}
\setbeamertemplate{caption}{\raggedright\insertcaption\par}
\setbeamercolor{normal text}{fg=inkbrown}
\setbeamercolor{frametitle}{fg=inkbrown}
\setbeamercolor{structure}{fg=accent}
\setbeamercolor{itemize item}{fg=accent}
\setbeamercolor{itemize subitem}{fg=accent}
\setbeamercolor{itemize/enumerate body}{fg=inkbrown}
\setbeamercolor{enumerate item}{fg=accent}
\setbeamersize{text margin left=0.55cm, text margin right=0.55cm}
\setbeamertemplate{itemize item}{\textbullet}
\setbeamertemplate{itemize subitem}{--}
% ---------- Нижний колонтитул: номер слайда и сколько осталось ----------
% Рисуется в конце каждой рамки поверх содержимого и не меняет вёрстку.
\newcommand{\slidefooter}{%
\begin{tikzpicture}[remember picture, overlay]
\node[anchor=north east, xshift=-0.55cm, yshift=-0.22cm]
at (current page.north east)
{\colorbox{cream}{\scriptsize\color{inkbrown}%
Слайд \insertframenumber\ из \inserttotalframenumber
\quad·\quad осталось: \the\numexpr\inserttotalframenumber-\insertframenumber\relax}};
\end{tikzpicture}%
}
% ---------- Фон: изображение + маленькая курица на каждом слайде ----------
\usebackgroundtemplate{%
\begin{tikzpicture}[remember picture, overlay]
\node at (current page.center)
{\includegraphics[width=\paperwidth,height=\paperheight]{background.jpg}};
\node[anchor=south east, xshift=-2.5mm, yshift=1.5mm]
at (current page.south east)
{\includegraphics[height=0.65cm]{chicken.png}};
\end{tikzpicture}}
% ---------- Заголовок слайда: кремовая полоса во всю ширину ----------
\newlength{\sidemargin}
\setlength{\sidemargin}{0.55cm}
\setbeamertemplate{frametitle}{%
\nointerlineskip
\vspace*{-0.2mm}%
\hspace*{-\sidemargin}%
\begin{tcolorbox}[enhanced, width=\paperwidth, colback=cream, colframe=cream,
opacityback=0.90, arc=0mm, boxrule=0pt,
left=\sidemargin, right=\sidemargin, top=1.2mm, bottom=1.2mm,
before skip=0pt, after skip=2mm]
{\usebeamerfont{frametitle}\usebeamercolor[fg]{frametitle}\large\bfseries\insertframetitle}
\end{tcolorbox}}
% ---------- Кремовые панели для содержимого ----------
\tcbset{panelstyle/.style={enhanced, colback=cream, opacityback=0.90,
colframe=accent, opacityframe=0.65, boxrule=0.6pt, arc=1.4mm,
boxsep=1.2mm, top=1.4mm, bottom=1.4mm, left=2.4mm, right=2.4mm,
before skip=1.6mm, after skip=1.6mm}}
\newtcolorbox{panel}[1][]{panelstyle, #1}
% ---------- Кремовый бокс с изо­бражением ----------
\newtcolorbox{imgbox}[1][]{enhanced, colback=cream, opacityback=0.90,
colframe=accent, opacityframe=0.65, boxrule=0.6pt, arc=1.4mm,
boxsep=0.8mm, top=0.8mm, bottom=0.8mm, left=0.8mm, right=0.8mm,
before skip=1.6mm, after skip=1.6mm, halign=center, #1}
% ---------- Титульный шаблон ----------
\title[Стилометрия реплик Stardew Valley]{Стилометрическая классификация реплик персонажей Stardew Valley}
\author{А.~А.~Аладьина \and В.~Н.~Копнин \and М.~В.~Савостиков}
\institute{ПИЭ-13МО}
\setbeamerfont{note page}{size=\footnotesize}
\begin{document}
% ==================== СЛАЙД: ТИТУЛ ====================
\begin{frame}[plain]
\begin{tikzpicture}[remember picture, overlay]
\node at (current page.center)
{\includegraphics[width=\paperwidth,height=\paperheight]{title.jpg}};
\node[anchor=south east, xshift=-2.5mm, yshift=1.5mm]
at (current page.south east)
{\includegraphics[height=0.65cm]{chicken.png}};
\end{tikzpicture}
\vspace*{-2.2cm}
\begin{center}
\begin{tcolorbox}[enhanced, width=0.92\paperwidth, colback=cream, opacityback=0.92,
colframe=cream, boxrule=0pt, arc=2mm, halign=center, boxsep=2mm]
{\large\bfseries Стилометрическая классификация реплик персонажей Stardew Valley}\\[2mm]
{\normalsize Можно ли различить голоса персонажей, \\ если все реплики написаны одним автором?}\\[2.4mm]
А.~А.~Аладьина \quad·\quad В.~Н.~Копнин \quad·\quad М.~В.~Савостиков\\[0.8mm]
\footnotesize ПИЭ-13МО
\end{tcolorbox}
\end{center}
\slidefooter
\end{frame}
% ==================== БЛОК 1 ====================
\begin{frame}{Часть 1\ \ ·\ \ Задача и корпус}
\begin{center}
\begin{tcolorbox}[enhanced, width=0.86\paperwidth, colback=cream, opacityback=0.9,
colframe=cream, boxrule=0pt, arc=2mm, halign=center, boxsep=3mm]
{\large Часть 1}\\[1.5mm]
{\Large\bfseries Решаемая задача и корпус}\\[2mm]
Постановка задачи · сбор и очистка данных · характеристики корпуса\\[2.5mm]
{\bfseries Докладчик: А.~А.~Аладьина}
\end{tcolorbox}
\end{center}
\note{Часть\,1. Говорит А. А. Аладьина. План части: что за задача мы решаем,
её формальная постановка, как собирали и чистили корпус, и какими
характеристиками он обладает.}
\slidefooter
\end{frame}
\begin{frame}{Задача и постановка}
\begin{columns}[T]
\begin{column}{0.57\textwidth}
\begin{panel}
\textbf{Решаемая задача}
\begin{itemize}
\item Дано: 2005 коротких реплик, 34 персонажа, один автор.
\item Требуется: по одной реплике определить персонажа.
\item Каждый объект относится ровно к одному из 34 классов.
\item Это не авторская атрибуция: мы различаем \emph{речевые маски персонажей}, а не авторов.
\item Проверяется, статистически различимы ли эти маски.
\end{itemize}
\end{panel}
\end{column}
\begin{column}{0.41\textwidth}
\begin{panel}
\textbf{Обозначения}\\[1mm]
$D=\{(x_i,\,y_i)\}_{i=1}^{n}$,\quad $n=2005$;\\
$x_i$ — реплика;\\
$y_i\in Y$, \ $|Y|=34$ — персонаж;\\
$f$ — классификатор.\\[1.5mm]
Критерий качества — макро-F1: средняя F-мера по 34 классам.
\end{panel}
\end{column}
\end{columns}
\note{Говорит А. А. Аладьина. Задача — многоклассовая классификация коротких
текстов. Формула одна: D — корпус, x — реплика, y — персонаж, f —
классификатор. Дальше все определения даются словами. Подчеркнуть: это не
авторская атрибуция, автор один; мы различаем речевые маски.}
\slidefooter
\end{frame}
\begin{frame}{Корпус: сбор, разметка, очистка}
\begin{columns}[T]
\begin{column}{0.33\textwidth}
\begin{panel}
\footnotesize\textbf{1. Сбор}
\begin{itemize}
\item Реплики из диалогов игры.
\item Единица анализа — одна реплика.
\item 34 персонажа, тексты на английском.
\end{itemize}
\end{panel}
\end{column}
\begin{column}{0.33\textwidth}
\begin{panel}
\footnotesize\textbf{2. Разметка}
\begin{itemize}
\item Метка — имя говорящего персонажа.
\item Ручная проверка реплики и метки.
\item Метаданные (пол, возраст, вид) хранятся отдельно и не подаются модели.
\end{itemize}
\end{panel}
\end{column}
\begin{column}{0.33\textwidth}
\begin{panel}
\footnotesize\textbf{3. Очистка}
\begin{itemize}
\item \textbf{Unicode-очистка}: разные варианты кавычек, тире,
многоточий и пробелов приводятся к единому виду.
\item Плейсхолдеры вида \texttt{<PLAYER>} заменены нейтральными словами.
\item Пунктуация и регистр сохранены: это стилометрический сигнал.
\end{itemize}
\end{panel}
\end{column}
\end{columns}
\begin{panel}
\footnotesize \textbf{Ограничения данных:} ручная фильтрация; нет идентификаторов сцен.
\end{panel}
\slidefooter
\end{frame}
\begin{frame}{Игровые персонажи}
\begin{center}
\begin{imgbox}
\includegraphics[height=0.65\textheight]{characters.png}
\end{imgbox}
\end{center}
\slidefooter
\end{frame}
\begin{frame}{Характеристики корпуса: классы}
\begin{columns}[T]
\begin{column}{0.42\textwidth}
\begin{center}
\begin{imgbox}
\includegraphics[width=\linewidth]{replics-count.png}
\end{imgbox}
\end{center}
\end{column}
\begin{column}{0.57\textwidth}
\begin{panel}
\begin{tabular}{@{}p{3.2cm}p{3.6cm}@{}}
\textbf{Реплик} & 2005\\[0.8mm]
\textbf{Персонажей} & 34\\[0.8mm]
\textbf{Максимум класса} & Abigail, 139\\[0.8mm]
\textbf{Минимум класса} & Mister Qi, 15\\[0.8mm]
\textbf{Точные дубли} & 0\\[0.8mm]
\textbf{Почти-дубли} & 13 пар, но только внутри класса\\
\end{tabular}
\end{panel}
\begin{panel}
Дисбаланс почти десятикратный: от 15 до 139 реплик. Поэтому
доля правильных ответов обманчива; основная метрика — макро усреднённая
F-мера по классам.
\end{panel}
\end{column}
\end{columns}
\slidefooter
\end{frame}
\begin{frame}{Характеристики корпуса: длина реплик}
\begin{columns}[T]
\begin{column}{0.42\textwidth}
\begin{imgbox}
\includegraphics[width=\linewidth]{median.png}
\end{imgbox}
\end{column}
\begin{column}{0.57\textwidth}
\begin{panel}
\begin{tabular}{@{}p{4.2cm}p{2.9cm}@{}}
\textbf{Средняя длина} & 19,1 слова\\[0.8mm]
\textbf{Медиана} & 17 слов\\[0.8mm]
\textbf{Диапазон} & 3–78 слов\\
\end{tabular}
\end{panel}
\begin{panel}
\begin{itemize}
\item Короткие реплики дают мало информации для стилометрических характеристик.
\item Длина сама по себе — сильный, но опасный признак: она может
подменять «стиль» просто узнаванием персонажа.
\item Поэтому её вклад проверялся отдельно: с исключением
признаков длины и по группам длины.
\end{itemize}
\end{panel}
\end{column}
\end{columns}
\note{Говорит А. А. Аладьина. Средняя реплика — всего 19 слов, медиана 17,
диапазон 3–78. На таких коротких текстах признаки словарного богатства и
читаемости нестабильны — это одна из причин низких абсолютных значений
качества, о которых расскажет третий докладчик.}
\slidefooter
\end{frame}
% ==================== БЛОК 2 ====================
\begin{frame}{Часть 2\ \ ·\ \ Методология}
\begin{center}
\begin{tcolorbox}[enhanced, width=0.86\paperwidth, colback=cream, opacityback=0.9,
colframe=cream, boxrule=0pt, arc=2mm, halign=center, boxsep=3mm]
{\large Часть 2}\\[1.5mm]
{\Large\bfseries Методология: как измеряем стиль}\\[2mm]
Признаки · LSA · классификаторы · схема проверки · метрики\\[2.5mm]
{\bfseries Докладчик: В.~Н.~Копнин}
\end{tcolorbox}
\end{center}
\note{Часть\,2. Говорит В. Н. Копнин. План части: общая схема конвейера,
какие признаки строим, как работает LSA, какие модели сравнивали и как устроена
проверка, чтобы не обмануть себя.}
\slidefooter
\end{frame}
\begin{frame}{Термины, которые встретятся дальше}
\begin{columns}[T]
\begin{column}{0.49\textwidth}
\begin{panel}
\footnotesize
\textbf{Фолд} — одна из частей разбиения выборки при перекрёстной
проверке. При 5 фолдах модель обучается на 4 и проверяется на 1,
затем разбиение меняется.\\[0.8mm]
\textbf{POS (part of speech)} — часть речи; POS-тег — её
обозначение; POS-грамма — последовательность тегов.\\[0.8mm]
\textbf{Universal POS} — универсальный набор тегов: NOUN, VERB,
ADJ, ADV, PRON, DET, ADP, CONJ, NUM, PRT, INTJ, PUNCT, X.
Единый набор для разных языков.\\[0.8mm]
\textbf{Клауза} — синтаксическая единица с подлежащим и
сказуемым; в репликах оценивается приблизительно.\\[0.8mm]
\textbf{Синтаксис-прокси} — приблизительная оценка синтаксиса
без полного разбора: число союзов, длина предложения, порядок слов.
\end{panel}
\end{column}
\begin{column}{0.49\textwidth}
\begin{panel}
\footnotesize
\textbf{n-грамм} — последовательность $n$ соседних единиц:
символов, слов или POS-тегов.\\[0.8mm]
\textbf{LSA} — сжатие таблицы «документ $\times$ признак» в
несколько скрытых компонент.\\[0.8mm]
\textbf{Макро-F1} — средняя F-мера по классам; каждый персонаж
весит одинаково.\\[0.8mm]
\textbf{Unicode-очистка} — приведение разных вариантов записи
символов к единому виду: кавычки, тире, многоточия, пробелы.\\[0.8mm]
\textbf{Класс-аттрактор} — класс, к которому модель ошибочно
относит чужие реплики.\\[0.8mm]
\textbf{Фолд и группа признаков} — разные вещи: фолд — часть
проверки, группа — набор признаков.
\end{panel}
\end{column}
\end{columns}
\note{Говорит В. Н. Копнин. Этот слайд — словарь терминов. Важно различать
фолд (часть кросс-валидации) и группу признаков (набор характеристик текста).
Universal POS — не «ещё одна модель», а универсальный набор частеречных
тегов; POS-граммы — последовательности этих тегов. Клауза и
синтаксис-прокси — приблизительные, но интерпретируемые оценки синтаксиса.}
\slidefooter
\end{frame}
\begin{frame}{Общая схема}
\begin{panel}
Реплика (текст персонажа) $\to$ очистка (Unicode, плейсхолдеры)
$\to$ токены и частеречная разметка (NLTK, Universal POS)
$\to$ признаки (ручные, n-граммы, LSA)
$\to$ модель (вероятности по 34 классам)
$\to$ проверка (5 фолдов, повторы, метрики).
\end{panel}
\begin{columns}[T]
\begin{column}{0.49\textwidth}
\begin{panel}
\textbf{Что важно про схему}
\begin{itemize}
\item Все обучаемые преобразования настраиваются только внутри
обучающих фолдах.
\item Тестовые фолды не участвуют ни в настройке признаков, ни в
выборе параметров модели.
\end{itemize}
\end{panel}
\end{column}
\begin{column}{0.49\textwidth}
\begin{panel}
\textbf{Что такое «вектор признаков»}
\begin{itemize}
\item Это не «понимание» текста, а числовое описание его
статистических свойств: длины, частоты, пунктуация, темы.
\end{itemize}
\end{panel}
\end{column}
\end{columns}
\note{Говорит В. Н. Копнин. Общий конвейер: текст превращается в цепочку
преобразований и в конце — в вектор чисел, по которому модель выбирает
класс. Ключевое правило: всё, что «учится» на данных, учится только на
обучающей части каждой проверки.}
\slidefooter
\end{frame}
\begin{frame}{454 ручных признака: 11 групп}
\begin{panel}
\begin{tabular}{@{}p{4cm}p{9.7cm}@{}}
\textbf{Группа} & \textbf{Примеры признаков} \\ \hline
Длина & число слов, символов, предложений; длина предложения \\
Лексика & длины слов, апострофы, заглавные буквы, цифры \\
Словарное богатство & TTR, Guiraud, Yule's K, hapax; на коротких текстах нестабильно \\
Символы & частоты букв, регистр, пунктуация \\
Пунктуация & запятые, многоточия, вопросы, восклицания, повторы \\
Функциональные слова & артикли, предлоги, союзы, местоимения \\
Местоимения & 1-е, 2-е, 3-е лицо; отношение «я/ты» \\
Части речи & Universal POS, Penn Treebank, время, модальность \\
Синтаксис & клаузы, подчинительные союзы, пассивные конструкции \\
Читаемость & Flesch, FK, SMOG; на коротких репликах приблизительна \\
Разговорные маркеры & междометия, смех, хеджи, вежливость, сокращения \\
\end{tabular}
\end{panel}
\note{Говорит В. Н. Копнин. Это расшифровка одиннадцати групп. Не нужно
запоминать все 454 признака: важнее логика — длина, лексика, пунктуация,
служебные слова, части речи, синтаксис, читаемость и разговорные маркеры.
Словарное богатство и читаемость на коротких репликах нестабильны.}
\slidefooter
\end{frame}
\begin{frame}{Автоматические признаки: n-граммы и LSA}
\begin{columns}[T]
\begin{column}{0.49\textwidth}
\begin{panel}
\textbf{n-граммы}
\begin{itemize}
\item \textbf{n-грамм} — последовательность $n$ соседних
единиц: символов, слов или POS-тегов.
\item Символьные n-граммы 2–5: морфология, пунктуация,
орфография.
\item n-граммы POS-тегов 1–3: последовательности частей речи,
синтаксические шаблоны.
\item TF-IDF: вес признака с учётом частоты в реплике и
редкости в корпусе.
\end{itemize}
\end{panel}
\end{column}
\begin{column}{0.49\textwidth}
\begin{panel}
\textbf{LSA}
\begin{itemize}
\item Сжатие таблицы «реплика $\times$ признак» в $k$ скрытых
компонент.
\item Варианты: \texttt{word}, \texttt{content}, \texttt{fw},
\texttt{char}, \texttt{pos}.
\item $k=50$–400; для \texttt{content}-LSA качество росло до 400.
\item LSA — сжатое представление, а не «понимание» текста.
\end{itemize}
\end{panel}
\end{column}
\end{columns}
\begin{panel}
Символьные n-граммы чувствительны к морфологии и пунктуации;
n-граммы POS-тегов — к порядку частей речи; LSA сжимает разреженные
признаки в несколько чисел. Это три разных взгляда на стиль.
\end{panel}
\note{Говорит В. Н. Копнин. n-грамма — это просто «окно» из n соседних
единиц. Символьные n-граммы ловят морфологию и пунктуацию, n-граммы POS-тегов —
синтаксические шаблоны. LSA не «понимает» текст: он сжимает таблицу
признаков в несколько скрытых компонент.}
\slidefooter
\end{frame}
\begin{frame}{LSA простыми словами}
\begin{columns}[T]
\begin{column}{0.49\textwidth}
\begin{panel}
\textbf{Идея}
\begin{itemize}
\item Строим таблицу «реплика $\times$ слово», взвешиваем
частоты через TF-IDF.
\item Сжимаем таблицу до $k$ скрытых осей: каждая реплика
превращается в короткий вектор.
\item Оси не обязаны быть «темами»: их порядок и знак произвольны.
\end{itemize}
\end{panel}
\end{column}
\begin{column}{0.49\textwidth}
\begin{panel}
\textbf{Варианты LSA}
\begin{itemize}
\item \texttt{word} — лексика и тема.
\item \texttt{content} — содержание без служебных слов.
\item \texttt{fw} — функциональные слова и синтаксис.
\item \texttt{char} — морфология и пунктуация.
\item \texttt{pos} — частеречные последовательности.
\end{itemize}
\end{panel}
\end{column}
\end{columns}
\begin{panel}
$k$ подбирался в диапазоне 50–400; для \texttt{content}-LSA качество
устойчиво росло до 400.
Ключевой вопрос: ловит ли LSA по содержательным словам \emph{тему}, а не
только стиль?
\end{panel}
\note{Говорит В. Н. Копнин. LSA объясняем без формул: таблица частот —
взвешивание — сжатие до k осей — короткий вектор для каждой реплики.
Важно ограничение метода: оси формально не интерпретируются, а LSA по
содержательным словам может кодировать тему. Для этого мы и делали
несколько вариантов LSA, чтобы сравнить тематический и стилистический
вклад.}
\slidefooter
\end{frame}
\begin{frame}{Классификаторы}
\begin{columns}[T]
\begin{column}{0.49\textwidth}
\begin{panel}
\textbf{Линейные модели}
\begin{itemize}
\item Логистическая регрессия: «признак $\times$ вес», затем
вероятности; редкие классы получают повышенные веса.
\item Линейный SVM: граница с максимальным зазором; часто силён
на тексте, но вероятностей не выдаёт.
\end{itemize}
\end{panel}
\end{column}
\begin{column}{0.49\textwidth}
\begin{panel}
\textbf{Деревья и ансамбли}
\begin{itemize}
\item Случайный лес и ExtraTrees: сотни деревьев; у ExtraTrees
пороги выбираются случайно — меньше разброс.
\item Мягкое голосование: усредняем вероятности моделей.
\item Объединение через мета-классификатор (стекинг) у нас переобучилось и оказалось хуже.
\end{itemize}
\end{panel}
\end{column}
\end{columns}
\begin{panel}
Сравнивали несколько семейств, чтобы вывод не зависел от одного
алгоритма: близкие результаты у разных моделей делают вывод надёжнее.
\end{panel}
\note{Говорит В. Н. Копнин. Логистическая регрессия — интерпретируемая
линейная база; SVM — сила на текстовых признаках, но без вероятностей;
деревья ловят нелинейные комбинации («многоточие + короткая реплика»), но
легко переобучаются на 2005 объектах. Лучший результат дало мягкое
голосование трёх моделей; объединение через мета-классификатор было хуже — переобучилось.}
\slidefooter
\end{frame}
\begin{frame}{Как проверяем}
\begin{columns}[T]
\begin{column}{0.49\textwidth}
\begin{panel}
\textbf{Схема оценки}
\begin{itemize}
\item Стратифицированная перекрёстная проверка: 5 фолдов
(частей разбиения); на 4 фолдах обучаемся, на 1 проверяем.
Доли классов внутри фолдов сохраняются.
\item Повторяем 3–5 раз с разными разбиениями — оцениваем разброс.
\item Вложенная схема: внешние фолды — оценка, внутренние —
настройка параметров модели.
\item Отдельная отложенная выборка 80/20 для финальных кандидатов.
\end{itemize}
\end{panel}
\end{column}
\begin{column}{0.49\textwidth}
\begin{panel}
\textbf{Контроль ошибок исследователя}
\begin{itemize}
\item TF-IDF, сжатие и масштабирование обучаются только на
обучающих фолдах — борьба с утечкой данных.
\item Контроль перестановкой меток дал 0,027–0,028 — воспроизведён
случайный уровень.
\item Почти-дубликаты находятся только внутри одного класса и
не пересекают обучение и тест.
\end{itemize}
\end{panel}
\end{column}
\end{columns}
\vspace{-1mm}
\note{Говорит В. Н. Копнин. Схема: 5-фолдовая стратифицированная
перекрёстная проверка с повторами; вложенная — для честной настройки
параметров; отложенная выборка — дополнительная проверка. Отдельно
переставляли метки: качество упало до случайного уровня, значит сигнал
не в «утечке».}
\slidefooter
\end{frame}
\begin{frame}{Метрики: что и зачем}
\begin{panel}
\begin{tabular}{@{}p{3.9cm}p{9.6cm}@{}}
\textbf{Метрика} & \textbf{Что показывает}\\[1mm]
\textbf{Macro-F1} & Средняя F-мера по 34 классам: каждый персонаж важен одинаково, включая редких. Основная метрика.\\[1mm]
\textbf{Доля правильных ответов} & Доля совпавших предсказаний; при дисбалансе обманчива: модель, всегда выбирающая частый класс, выглядит неплохо.\\[1mm]
\textbf{Сбалансированная доля} & Средняя полнота по классам: находит ли модель редких персонажей.\\[1mm]
\textbf{Тройка лучших (top-3)} & Истинный персонаж оказался в тройке наиболее вероятных ответов.\\[1mm]
\textbf{MCC / каппа} & Согласие с поправкой на случайное угадывание.\\[1mm]
\end{tabular}
\end{panel}
\begin{panel}
Ориентиры при 34 классах: случайный уровень macro-F1 $\approx$ 0,029,
top-3 $\approx$ 0,088.
\end{panel}
\note{Говорит В. Н. Копнин. Главная метрика — macro-F1: она равно
взвешивает все 34 класса, включая редких. Доля правильных ответов
обманчива при дисбалансе. Смысл всех остальных метрик — словесный, без
формул. Ориентиры случайного уровня уже озвучены — они пригодятся в
части 3.}
\slidefooter
\end{frame}
\begin{frame}{Гипотезы исследования}
\begin{columns}[T]
\begin{column}{0.57\textwidth}
\begin{panel}
\textbf{H1.} Функциональные слова, части речи и символьные
n-граммы (последовательности соседних символов) различают
персонажей выше случайного уровня.\\[0.7mm]
\textbf{H2.} На коротких репликах части речи и символьные
n-граммы устойчивее словарного богатства и читаемости.\\[0.7mm]
\textbf{H3.} LSA по всем словам отражает тему, а LSA по частям
речи и функциональным словам — стиль.\\[0.7mm]
\textbf{H4.} Качество зависит от длины реплики.\\[0.7mm]
\textbf{H5.} Ошибки группируются вокруг персонажей со сходным
возрастом, полом, ролью или видом.
\end{panel}
\end{column}
\begin{column}{0.41\textwidth}
\begin{panel}
\textbf{Как проверяем}
\begin{itemize}
\item H1 — сравнение моделей и поочерёдное исключение групп.
\item H2 — исключение групп и анализ по длине.
\item H3 — варианты LSA и контроль содержания.
\item H4 — метрики по группам длины.
\item H5 — анализ ошибок по метаданным.
\end{itemize}
\end{panel}
\end{column}
\end{columns}
\note{Говорит А. А. Аладьина. Гипотезы сформулированы до экспериментов.
H1 и H2 проверяют, есть ли стилометрический сигнал; H3 — стиль или тему;
H4 — влияние длины; H5 — социальные подгруппы. Термин «фолд» появится в
методологической части: это часть разбиения при перекрёстной проверке.}
\slidefooter
\end{frame}
% ==================== БЛОК 3 ====================
\begin{frame}{Часть 3\ \ ·\ \ Результаты}
\begin{center}
\begin{tcolorbox}[enhanced, width=0.86\paperwidth, colback=cream, opacityback=0.9,
colframe=cream, boxrule=0pt, arc=2mm, halign=center, boxsep=3mm]
{\large Часть 3}\\[1.5mm]
{\Large\bfseries Результаты и интерпретация}\\[2mm]
Оценки качества · вклад признаков · матрицы ошибок · ограничения · выводы\\[2.5mm]
{\bfseries Докладчик: М.~В.~Савостиков}
\end{tcolorbox}
\end{center}
\note{Часть\,3. Говорит М. В. Савостиков. План части: главные числа, что даёт
качество, стиль или содержание, кого модель путает, как корректно читать
оценки, ограничения и выводы.}
\slidefooter
\end{frame}
\begin{frame}{Главный результат}
\begin{columns}[T]
\begin{column}{0.47\textwidth}
\begin{panel}
\begin{tabular}{@{}p{5cm}r@{}}
\textbf{Мягкое голосование (5 фолдов)} & 0,304\\
\textbf{ExtraTrees, char = 10\,000} & 0,276\\
\textbf{Вложенный выбор} & 0,275\\
\textbf{Отложенная выборка} & 0,333\\
\textbf{Перестановка меток} & 0,029\\
\end{tabular}
\end{panel}
\begin{panel}
Числа — macro-F1. Случайный уровень для 34 классов — 0,029;
контроль перестановкой меток вышел на этот уровень, значит в извлеченных характеристиках есть информация.
\end{panel}
\end{column}
\begin{column}{0.52\textwidth}
\begin{imgbox}
\includegraphics[width=\linewidth]{model_comparison.png}
\end{imgbox}
\end{column}
\end{columns}
\note{Говорит М. В. Савостиков. Главная цифра — macro-F1 0,304 для мягкого
голосования при 5-фолдовой проверке. Более консервативная оценка — 0,275:
там конфигурация выбиралась честно, внутри обучающей части каждого фолда.
На отложенной выборке 0,333, но это одно разбиение. Суть: персонажи
действительно различимы.}
\slidefooter
\end{frame}
\begin{frame}{Что добавляет качество}
\begin{columns}[T]
\begin{column}{0.52\textwidth}
\begin{imgbox}
\includegraphics[width=\linewidth, height=0.55\textheight, keepaspectratio]{feature_progression.png}
\end{imgbox}
\end{column}
\begin{column}{0.47\textwidth}
\begin{panel}
\begin{itemize}
\item Только длина: 0,035.
\item Ручные стилометрические признаки: 0,105.
\item $+$ символьные и частеречные n-граммы: 0,182.
\item $+$ content-LSA: 0,249.
\item ExtraTrees, char = 10\,000: 0,276.
\item Мягкое голосование: 0,304.
\end{itemize}
Итого: основной прирост — лексика, n-граммы и content-LSA;
«чистый синтаксис» (функциональные слова и POS-LSA) сам по себе
слаб — важный отрицательный результат.
\end{panel}
\end{column}
\end{columns}
\note{Говорит М. В. Савостиков. Прогрессия: вручную посчитанные признаки
дают 0,105, добавляются символьные n-граммы — 0,182, LSA по содержанию —
0,249, лучшая одиночная модель — 0,276, ансамбль — 0,304. Обратный вывод
важен тоже: признаки «чистого синтаксиса» сами по себе почти ничего не
дают.}
\slidefooter
\end{frame}
\begin{frame}{Стиль или содержание?}
\begin{columns}[T]
\begin{column}{0.5\textwidth}
\begin{imgbox}
\includegraphics[width=\linewidth, height=0.55\textheight, keepaspectratio]{topic_control.png}
\end{imgbox}
\end{column}
\begin{column}{0.49\textwidth}
\begin{panel}
\begin{itemize}
\item Проверка: содержательные слова (существительные, глаголы,
прилагательные, наречия) заменены нейтральным маркером.
\item Исходный текст: 0,248; после маскирования: 0,113.
\item Падение более чем вдвое, но остаток 0,113 — в 3,9 раза
выше случайного уровня.
\end{itemize}
\textbf{Вывод контроля:} более половины качества даёт лексическое
\emph{содержание}; стилевой сигнал сохраняется, но слабее
тематического.
\end{panel}
\end{column}
\end{columns}
\note{Говорит М. В. Савостиков. Ключевой эксперимент: заменяем все
содержательные слова нейтральным маркером. Качество резко падает (0,248
становится 0,113). Тем не менее остаток — почти в четыре раза выше
случайного: какой-то стилевой компонент есть. Из этого следует главная
оговорка работы: мы не можем утверждать, что модель выучила «чистый
стиль» персонажей — основной вклад даёт тематический профиль.}
\slidefooter
\end{frame}
\begin{frame}{Матрица ошибок: как читать}
\begin{columns}[T]
\begin{column}{0.55\textwidth}
\begin{imgbox}
\includegraphics[width=\linewidth, height=0.66\textheight, keepaspectratio]{confusion_top12.png}
\end{imgbox}
\end{column}
\begin{column}{0.44\textwidth}
\begin{panel}
\begin{itemize}
\item \textbf{Строки} — истинный персонаж, \textbf{столбцы} —
предсказание; \textbf{диагональ} — верные ответы,
вне диагонали — ошибки.
\item Полная матрица 34$\times$34 нечитаема: показываем top-12.
\end{itemize}
\end{panel}
\begin{panel}
\textbf{Что видно:} крупная доля вне диагонали у многих строк —
редкие классы «утекают» в популярные.
\end{panel}
\end{column}
\end{columns}
\note{Говорит М. В. Савостиков. Обязательно проговорить, как читать матрицу:
строка — кто говорил на самом деле, столбец — кого предсказала модель,
диагональ — верные ответы, всё вне диагонали — ошибки. Полные 34 строки не
читаются на проекторе, поэтому top-12 + пары + полная матрица в приложении.}
\slidefooter
\end{frame}
\begin{frame}{Кого модель путает чаще всего}
\begin{columns}[T]
\begin{column}{0.52\textwidth}
\begin{imgbox}
\includegraphics[width=\linewidth, height=0.45\textheight, keepaspectratio]{confusion_pairs.png}
\end{imgbox}
\end{column}
\begin{column}{0.47\textwidth}
\begin{panel}
\textbf{Частые пары ошибок (число перепутанных реплик)}
\begin{itemize}
\item Sebastian $\to$ Abigail: 65
\item Sebastian $\to$ Alex: 61
\item Abigail $\to$ Sebastian: 59
\item Abigail $\to$ Alex: 56
\end{itemize}
Основной клубок — молодые персонажи: Abigail, Alex, Sebastian,
Haley, Sam. Один автор и общие сюжетные контексты делают сходство
голосов ожидаемым. Это коллапс редких классов
в классы-аттракторы.
\end{panel}
\vspace{-1mm}
\end{column}
\end{columns}
\note{Говорит М. В. Савостиков. Самые частые пары: Sebastian и Abigail
путаются в обе стороны (65 и 59), Sebastian и Alex (61), Abigail и Alex
(56). Ошибки сконцентрированы вокруг группы молодых персонажей. Важно: это
стягивание предсказаний к популярным классам, а не доказательство, что эти
персонажи «говорят одинаково» — хотя перекрёстные путаницы Sebastian —
Abigail — Alex согласуются с их сходными масками.}
\slidefooter
\end{frame}
\begin{frame}{Классы-аттракторы}
\begin{columns}[T]
\begin{column}{0.47\textwidth}
\begin{panel}
\textbf{Классы-аттракторы}
\begin{itemize}
\item Alex и Abigail собирают заметную долю \emph{чужих}
предсказаний: на разных повторах Abigail получает
порядка 10–18\,\% всех ответов при истинной доле
класса $\approx$ 6,9\,\%.
\item Коррекция априорных вероятностей классов
macro-F1 не улучшила и проблему не сняла.
\end{itemize}
\end{panel}
\end{column}
\begin{column}{0.52\textwidth}
\begin{imgbox}
\includegraphics[width=\linewidth, height=0.55\textheight, keepaspectratio]{hub_shares.png}
\end{imgbox}
\end{column}
\end{columns}
\note{Говорит М. В. Савостиков. Проблема редких классов: модель
предсказывает популярные классы слишком часто — Abigail получает десятки
процентов всех ответов при истинной доле около 7\,\%. Простая коррекция
приоров не помогла.}
\slidefooter
\end{frame}
\begin{frame}{Персонажи: кто различается}
\begin{columns}[T]
\begin{column}{0.47\textwidth}
\begin{panel}
\textbf{Лучшие и худшие по F-мере}
\begin{itemize}
\item Лучшие: Evelyn, Willy, Pam, Pierre, Leo.
\item Худшие: Kent, Wizard, Penny, Mister Qi, Leah, Abigail.
\item У редких классов — широкие интервалы оценок.
\item Мягкое голосование улучшает часть редких классов
(Wizard, Dwarf, Vincent), но Kent остаётся F1 = 0.
\end{itemize}
\end{panel}
\end{column}
\begin{column}{0.52\textwidth}
\begin{imgbox}
\includegraphics[width=\linewidth, height=0.6\textheight, keepaspectratio]{per_class_f1.png}
\end{imgbox}
\end{column}
\end{columns}
\note{Говорит М. В. Савостиков. Диаграмма: F-мера по каждому персонажу.
Лучшие — Evelyn, Willy, Pam, Pierre, Leo; худшие — Kent, Wizard, Penny,
Mister Qi, Leah, Abigail. Редкие классы имеют широкие доверительные
интервалы: для 15 реплик разброс оценок велик. Ансамбль прибавляет
отдельным редким классам, но Kent не находит никто.}
\slidefooter
\end{frame}
\begin{frame}{Что означают полученные оценки}
\begin{panel}
\begin{itemize}
\item 0,30 macro-F1 при 34 классах — примерно \textbf{в 10 раз выше
случайного уровня} 0,029: устойчивый сигнал различимости.
\item Значение умеренное и это ожидаемо: реплики по $\sim$19 слов,
дисбаланс классов и общие темы не позволяют «узнать» персонажа
по одной фразе.
\item Умеренность объясняется \emph{условиями задачи}, а не тем, что
автор «не старался»: превышение случайного уровня как раз
говорит о намеренно созданных речевых масках.
\end{itemize}
\end{panel}
\begin{panel}
\begin{itemize}
\item Мы решаем задачу «\emph{какой персонаж} говорит», а не
«\emph{он или не он} писал»: автор один.
\item И о «чистых» идиолектах говорить нельзя: основной вклад дают
лексико-тематический профиль и символьные n-граммы, а после
маскирования содержательных слов качество падает.
\end{itemize}
\end{panel}
\note{Говорит М. В. Савостиков — ключевой слайд по интерпретации. Проговорить
три пункта. (1) 0,304 при случайном 0,029 — это примерно десятикратное
превышение, то есть сигнал реальный. (2) Абсолютная величина умеренная из-за
коротких реплик, дисбаланса и общих тем — это свойства задачи, а не
«автор не пытался»; напротив, различимость масок подтверждает, что автор
сознательно делал разные голоса. (3) Мы определяем персонажа, а не
авторскую принадлежность: автор один. И мы не утверждаем, что выучили
«чистый стиль»: при маскировании содержания качество сильно падает.}
\slidefooter
\end{frame}
\begin{frame}{Ограничения}
\begin{columns}[T]
\begin{column}{0.49\textwidth}
\begin{panel}
\textbf{Данные}
\begin{itemize}
\item Один корпус, одна игра, один автор; внешняя валидация
не проводилась.
\item Короткие реплики и сильный дисбаланс классов.
\item Ручная фильтрация корпуса невоспроизводима.
\item Нет идентификаторов сцен и диалогов.
\end{itemize}
\end{panel}
\end{column}
\begin{column}{0.49\textwidth}
\begin{panel}
\textbf{Методология}
\begin{itemize}
\item Выбор признаков и ансамбля опирался на прошлые серии;
вложенная проверка снижает этот риск, но не устраняет.
\item Основной вклад — содержательные слова и тема.
\item Простая коррекция приоров не помогла редким классам.
\item Объединение через мета-классификатор переобучается на малой выборке.
\end{itemize}
\end{panel}
\end{column}
\end{columns}
\note{Говорит М. В. Савостиков. Ограничения делим на две группы: свойства
данных (один корпус и один автор, дисбаланс, короткие реплики,
невоспроизводимая ручная фильтрация, нет сцен) и свойства метода
(частичный выбор конфигураций по прошлым сериям, тематический сигнал в
признаках, неудачи простых калибровок). Честное перечисление — часть
верификации, а не признание провала.}
\slidefooter
\end{frame}
\begin{frame}{Выводы}
\begin{panel}
\begin{itemize}
\item \textbf{Персонажи статистически различимы:} лучшая модель — 0,304
macro-F1, консервативная оценка — 0,275; случайный уровень — 0,029.
\item \textbf{Основной сигнал — лексико-тематический:} символьные
n-граммы и content-LSA дают основной прирост; функциональные слова
и частеречная LSA сами по себе слабы.
\item \textbf{После замены содержательных слов} качество падает с 0,248
до 0,113: содержание доминирует, но стилевой сигнал сохраняется.
\item \textbf{Главная проблема — редкие классы и классы-аттракторы;}
мягкое голосование помогает, но не решает её полностью.
\item \textbf{Корректная формулировка результата:} различимы речевые
маски по лексико-тематическому профилю; утверждение о «чистом
стиле» требует внешней валидации и тематического контроля.
\end{itemize}
\end{panel}
\note{Говорит М. В. Савостиков. Пять итоговых тезисов. Финальную формулировку
оставить точной: мы показали статистическую различимость речевых масок по
лексико-тематическому профилю; для более сильных утверждений — разные идиолекты,
применимость как инструмент — нужны внешний корпус, тематический контроль
и разметка сцен.}
\slidefooter
\end{frame}
% ==================== ПРИЛОЖЕНИЕ ====================
\begin{frame}{Приложение: полная матрица ошибок 34$\times$34}
\begin{imgbox}
\includegraphics[width=\linewidth, height=0.8\textheight, keepaspectratio]{confusion_full34.png}
\end{imgbox}
\note{Приложение для вопросов и раздаточного материала. Если спросят про
конкретную пару персонажей — искать её в полной матрице: строки сортированы
по размеру класса, цвет кодирует долю строки. Кто говорит: отвечает
М. В. Савостиков (можно подключить В. Н. Копнина по вопросам валидации).}
\slidefooter
\end{frame}
\begin{frame}{Спасибо за внимание}
\begin{imgbox}
\includegraphics[width=\linewidth, height=0.8\textheight, keepaspectratio]{meme.png}
\end{imgbox}
\begin{tikzpicture}[remember picture, overlay]
\node[anchor=south east, xshift=-2.5mm, yshift=1.5mm]
at (current page.south east)
{\includegraphics[height=0.65cm]{chicken.png}};
\end{tikzpicture}
\note{Финальный слайд; мем как пасхалка. Говорят по очереди все:
А. А. Аладьина благодарит и передаёт слово для вопросов; по вопросам
корпуса отвечает Аладьина, по методологии — Копнин, по результатам —
Савостиков.}
\slidefooter
\end{frame}
\end{document}