Перспективы частеречной разметки корпуса рукописных текстов с помощью нейронной сети

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="ТРЕ&amp;БОВАВШИ(Х)" 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="ВЗЫСЬ&amp;КАА" 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. Возможна дополнительная предобработка подаваемых на обучение данных (в частности, удаление начальных «и» у части предложений из обучающей выборки). Кроме того, планируется разметка грамматических показателей, которые не использовались в первой серии экспериментов.

Appendix A

Литература
  1. Alekseev, Vasilii. A. / Alekseeva, Elena. L. / Kasyanenko Sofia. E. (2011): “Grammatical markup in the SСAT corpus”, in: Trudy mezhdunarodnoy konferentsii “Korpusnaya lingvistika – 2011” [Proceedings of the international conference “Corpus linguistics - 2011”]. Saint-Petersburg: Saint-Petersburg State University, Faculty of Philology 69-73.
  2. Azarova, Irina. V. / Alekseeva, Elena. L.(2012): “Morpho-syntactic markup of SСAT corpus texts”, in: Informatsionnyye tekhnologii i pis'mennoye naslediye: materialy IV mezhdunarodnoy nauchnoy konferentsii. Petrozavodsk, 3-8 sentyabrya 2012 g. [Information technologies and textual heritage: materials of the IV international conference, Petrozavodsk, September 3-8, 2012]. Petrozavodsk; Izhevsk 6-7.
  3. Buduma, Nikhil / Lokasho, Nicholas (2017): Osnovy glubokogo obucheniya. Sozdaniye algoritmov dlya iskusstvennogo intellekta sleduyushchego pokoleniya [Fundamentals of deep learning. Creation of algorithms for next generation artificial intelligence]. Moscow: Mann, Ivanov and Ferber.
  4. Chollet, François (2017): Deep Learning with Python. New York: Manning Publications.
  5. Deitel, Paul (2021): Python for AI and Data Science with IPython, Jupyter Notebooks < https://learning.oreilly.com/playlists/38a0889f-abbc-499a-b940-fed46ff7614d/> [14.06.2021].
  6. Ivanov, George-Bogdan (2018): Natural Language Processing for Hackers: Learn to build awesome apps that can understand people. New York: Manning Publications.