% !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.1cm, yshift=-0.1cm] at (current page.north east) {\colorbox{cream}{\scriptsize\color{inkbrown}% \insertframenumber\slash\inserttotalframenumber \quad}}; \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{} заменены нейтральными словами. \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}