Alekseeva, Elena
St Petersburg State University, Russian Federation
el.alexeeva@gmail.com
Alexeev, Anatoly
St Petersburg State University, Russian Federation
alexeev.anatoly@gmail.com
Mitrenina, Olga
St Petersburg State University, Russian Federation
mitrenina@gmail.com
Nikolaev, Ilya
St Petersburg State University, Russian Federation
ilya.nikolaev@gmail.com
Резюме. В рамках Санкт-Петербургского корпуса агиографических текстов (СКАТ) в качестве обучающей выборки выполнена вручную морфологическая разметка 5 житийных текстов XVI-XVII в. На базе этой выборки проводится эксперимент по частеречной разметке церковнославянских текстов с помощью нейронных сетей. На первом этапе удалось добиться точности в 81,5%.
Ключевые слова: artificial neural networks, manuscripts, corpora, Old Russian hagiography
Санкт-Петербургский корпус агиографических текстов (СКАТ) включает 22 житийных текста общим объемом примерно 187 тыс. словоупотреблений, в подавляющем большинстве, это жизнеописания вологодских святых – основателей монастырей по рукописям XVI в. Тексты представлены в формате pdf и xml в соответствии с рекомендациями TEI (Text Encoding Initiative). Пять житий корпуса (50 тыс. словоупотреблений) вручную снабжены полной морфологической разметкой, на основании которой была осуществлена автоматическая лемматизация словоформ. Размеченные жития используются в качестве обучающей выборки для ряда экспериментов по автоматизации процесса морфологического аннотирования.
Эксперименты по морфологической разметке корпуса СКАТ с помощью нейронных сетей проводятся с помощью библиотеки глубокого обучения Keras для языка Python. Первая серия экспериментов была проведена в феврале-марте 2020 года, вторая серия намечена на июнь-июль 2020 года. В докладе планируется рассказать как о первой, так и о второй серии экспериментов, но в тезисах будет описана только первая серия.
Первый этап работы был связан с подготовкой данных для обучения. Для этого были использованы три рукописи, размеченных в формате XML Житие Димитрия Прилуцкого (Российская национальная библиотека, Софийское собрание 1361; XVI в.), Житие Кирилла Новоезерского (Российская национальная библиотека, Кирилло-Белозерское собрание 66/1305; кон. XVII в.) и Житие Дионисия Глушицкого (Российская национальная библиотека, Софийское собрание 438; 20-е гг. XVI в.)
Приведем пример размеченного фрагмента жития Димитрия Прилуцкого, состоящего из десяти токенов: ни ѿ слѹгъ почести требовавши ⷯ . ни великаго сана взыськаа .
<w lemma="ни" pos="част" reg="ни" src="НИ" xml:id="DmPrlc.698"> ни </w>
<w lemma="отъ" pos="пред" reg="о(т)" src="W(Т)" xml:id="DmPrlc.699"> ѿ </w>
<w lemma="слуга" msd="a;род;мн;м" pos="сущ" reg="слугъ" src="СЛUГЪ" xml:id="DmPrlc.700"> слѹгъ </w>
<w lemma="почесть" msd="i;род;ед;ж" pos="сущ" reg="почести" src="ПОЧЕСТИ" xml:id="DmPrlc.701"> почести </w>
<w lemma="требовати" msd="м;прош;род;мн;м" pos="прич" reg="требовавши(х)" src="ТРЕ&БОВАВШИ(Х)" xml:id="DmPrlc.702">
тре
<lb n="6"/>
бовавшиⷯ
</w>
<pc force="weak" xml:id="DmPrlc.703"> . </pc>
<w lemma="ни" pos="част" reg="ни" src="НИ" xml:id="DmPrlc.704"> ни </w>
<w lemma="великии" msd="тв;род;ед;м" pos="прил" reg=" великаго " src="ВЕЛИКАГО" xml:id="DmPrlc.705">великаго</w>
<w lemma="санъ" msd="o;род;ед;м" pos="сущ" reg="сана" src="САНА" xml:id="DmPrlc.706"> сана </w>
<w msd="jo;наст;им;ед;м" pos="прич" reg="взыськая" src="ВЗЫСЬ&КАА" xml:id="DmPrlc.707">
взысь
<lb n="7"/>
каа
</w>
<pc force="weak" xml:id="DmPrlc.708"> . </pc>
Подготовка данных для обучения потребовала очистки текста от тегов, соответствующих номерам строк и страниц. После этого с помощью библиотеки BeautifufSoup для Python был создан первый исходный набор данных.
Первая серия экспериментов подразумевала базовую частеречную разметку: определение только базовых частей речи (параметр pos), чтобы уменьшить число классов, по которым ведется классификация. Одновременная расстановка грамматических показателей (параметр msd) сильно увеличила бы количество конечных классов и усложнила бы обучение. Таким образом, задача свелась к классификации по 26 классам, соответствующим расширенному набору частей речи (учитываются отдельно неличные формы глагола, возвратные формы, формы сравнительной степени и т.д.):
Было испытано несколько различных архитектур нейронной сети, но большая часть из них показала плохие результаты. В частности, неудачной оказалась модель, работающая для машинного перевода, когда в качестве исходного текста рассматривались предложения корпуса, а в качестве «перевода» — последовательности соответствующих им частей речи.
Ниже приводится архитектура нейронной сети, показавшей самые высокие результаты разметки:
Model: "sequential_2"
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
embedding_2 (Embedding) (None, 26, 128) 1152512
_________________________________________________________________
bidirectional_2 (Bidirection (None, 26, 512) 788480
_________________________________________________________________
time_distributed_2 (TimeDist (None, 26, 25) 12825
_________________________________________________________________
activation_2 (Activation) (None, 26, 25) 0
=================================================================
Total params: 1,953,817
Trainable params: 1,953,817
Non-trainable params: 0
В качестве набора данных она использовала фрагменты жития, разбитые по тэгам <pc force="weak"> и <pc force="strong"> — в тексте они соответствуют знакам точки в конце синтагм или законченных предложений соответственно. Разделение текстов на «настоящие» предложения по тэгу <pc force="strong"> привело бы к очень длинным предложениям в сочетании с очень короткими, но во второй серии экспериментов планируется провести обучение и таким способом.
В итоге был сформирован корпус объемом 5208 предложений (клауз), длиной от 1 до 26 слов. Наиболее частая длина клауз в корпусе соответствовала 5 словам (1841 предложение).
После этого все предложения были преобразованы в векторы длиной 26 (максимальная длина предложения). Для этого все слова корпуса были ранжированы по частоте, после чего слова в предложениях были заменены числами, а справа дополнены нулями для унификации длины. Точно так же были преобразованы в числовые векторы и последовательности тэгов. Затем набор данных был разделен: 80% были выбраны как обучающая выборка, а 20% — как тестовая.
После этого сеть была запущена на обучение с размером партии 128 и числом эпох 40 (были использованы и некоторые другие вариации запуска). Модель показала точность 0.8150, что для столь небольшого обучающего корпуса является неплохим начальным результатом.
Дополнительно модель была проверена на тексте жития Александра Свирского (Российская национальная библиотека, собрание Погодина 874; XVI в.), был проведен анализ ошибок, предполагающий дальнейшую настройку сети. В частности, одна их ошибок связана с тем, что незнакомые слова в начале клаузы распознаются как союзы:
[' авгꙋста ' ' въ ' 'тридесѧтыꙶ ' 'дн҃ь ' ' на ' ' паметь '….
['союз', 'пред', 'прилср', 'сущ', 'пред', 'сущ',…
Вероятно, это связано с тем, что и синтагмы часто начинаются с союзов.
В следующих сериях экспериментов планируется испытать другие архитектуры нейронных сетей, в частности, попытаться обучить эмбеддинги на большой неразмеченной части корпуса и подавать их на вход LSTM. Возможна дополнительная предобработка подаваемых на обучение данных (в частности, удаление начальных «и» у части предложений из обучающей выборки). Кроме того, планируется разметка грамматических показателей, которые не использовались в первой серии экспериментов.