ДОМАШНЕЕ ЗАДАНИЕ №20

Автор

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

Цель

На основе корпуса A Small Collection of British Fiction, содержащем в себе произведения британской прозы конца XVIII — XIX веков, проанализировать стилистические особенности авторов и классифицировать тексты по ним с помощью tidymodels в R.

Загрузка данных, обработка данных

Загрузить весь корпус в окружение удалось с помощью функции load.corpus.and.parse, которой на вход мы подаем папку “corpus” с текстовыми файлами — произведениями. Функция также способна токенизировать тексты и приводить его к нижнему регистру. Кроме того, можно указать размер n-грамм. Это заинтересовало меня, поэтому с помощью этой же функции я разделила тексты на биграммы в нижнем регистре.

Количественные признаки

Собственно очевидным решением мне показалось подсчитать частоту встречаемости биграмм в текстах. Важно было правильно выбрать топ биграмм — при n > 58 в выборку не попадала Эмили Бронте. Поэтому я оставила топ-58 биграмм для каждого из текстов.

Разведывательный анализ

Сначала я разделила данные на обучающую и тестовую выборки — data_train & data_test. Далее в рамках продолжения препроцессинга создала рецепт base_rec, который затем нужно было обучить на основе data_train. Результат записала в переменную base_trained. После этого для получения обработанных обучающих данных я применила функцию bake() к base_trained. Для представления более простой структуры данных и возможности визуализации я воспользовалась методом снижения размерности PLS (Partial Least Squares, метод частичных наименьших квадратов). Метод хорошо показывает себя в задачах классификации, особенно если дело касается обработки больших данных и выявления скрытых зависимостей между признаками. Нужно признаться, что мне больше всего понравился результат применения именно этого метода на датасете с русской прозой, поэтому и захотелось опробовать его. 

Создала pls_trained на основе base_trained, затем применила juice(), чтобы получить обработанные обучающие данные. Визуализация главных компонент:

Что ж, можно видеть, что во многом классы перекрываются, но всё же есть и яркая тенденция выделения отдельных кластеров, особенно выделяются Энтони Троллоп и Сэмюэл Ричардсон. 

Модели & tidymodels

В рамках данной работы я выбрала линейные модели с регуляризацией — Lasso и Ridge. Применила многоклассовую логистическую регрессию, так как классов у нас достаточно много. 

Итак, имея рецепты base_rec и pls_rec, а еще модели Lasso и Ridge, можно было составить их комбинации, а для работы с ними понадобился объект workflow_set из tidymodels. Таким образом мы перебрали 4 комбинации:

  1. base_rec & Lasso

  2. base_rec & Ridge

  3. pls_rec & Lasso

  4. pls_rec & Ridge

Обучение моделей заняло некоторое время, но в целом на каждую уходило около 1-2 минут, поэтому это все еще было не так долго. Ничего не сломалось (что действительно порадовало), можно было приступать к оценке.

__wflow_id   .config             .metric  mean std_err     n preprocessor model  rank

__<chr>      <chr>               <chr>   <dbl>   <dbl> <int> <chr>        <chr> <int>

1 base_ridge Preprocessor1_Mode… accura… 0.975 0.00137     5 recipe       mult…     1

2 base_ridge Preprocessor1_Mode… f_meas  0.968 0.00301     5 recipe       mult…     1

______________________________________________________________________________________________________

__.metric  .estimator .estimate .config

__<chr>    <chr>          <dbl> <chr>

1 f_meas   macro          0.979 Preprocessor1_Model1

2 accuracy multiclass     0.980 Preprocessor1_Model1

3 roc_auc  hand_till      0.999 Preprocessor1_Model1

Наилучший результат показала комбинация base_rec и Ridge. Ее отличные результаты можно видеть и на тестовой выборке. Также это видно на ROC-кривой

Интерпретация модели

Мы не убирали стоп-слова, поэтому многие биграммы содержат их. Впрочем, даже в них модели удалось увидеть свойственные для определенных авторов словосочетания, что не противоречит идее стилометрии. 

Впрочем, можно заметить и более примечательные n-граммы. Например, у Ричардсона в топ попали имена Mr Lovelace и Miss Howe, а также обращение my dear. В топе Стерна оказался Uncle Toby и видимо другое его упоминание my uncle. Также отличительны словосочетания the world и my father. Еще одно упоминание родственника my mother можно встретить у Энн Бронте. 

У некоторых авторов — Остин, Теккерея и Троллопа — в данной визуализации отсутствуют сочетания “от первого лица”, т.е. не включающие в себя I, а у Джейн Остин единственной есть биграмма с she.