Введение
С каждым годом появляется все большее количество подходов к синтаксическому анализу или способов его осуществления, однако проблема неоднозначности синтаксиса и, в частности, неопределенности границ синтагматических единиц, остается не в полной мере решенной.
Для множества задач обработки естественного языка (таких как извлечение именованных сущностей, вопросно-ответные системы и т.д.) используется частичный синтаксический анализ (shallow parsing) [1], так как он не предполагает обработки предложения целиком, выявления отношения между всеми частями предложения. Текстовый чанкинг, один из методов частичного парсинга, заключается в разбиении текста на краткие фрагменты, так, чтобы синтаксически связанные слова становились членами одной группы. [2] Эти фрагменты не пересекаются, т.е. одно слово может быть членом только одного чанка, группы не могут быть вложены друг в друга.
Целью данного исследования является разработка нового метода для выделения синтагм/чанков из текста, также основанного на принципе текстового чанкинга. В современной трактовке, принятой и в данной работе, синтагмы понимаются как части предложения или словосочетания, связанные грамматически, интонационно и по смыслу. В зависимости от передаваемого содержания синтагма как минимальный исходный структурно-смысловой компонент речи представляет отдельный компонент содержания и некоторое синтаксическое единство.
Предлагается создать прецедентную совокупность триграмм грамматических тегов на основе корпуса со снятой морфологической неоднозначностью и реализовать с ее помощью на языке Python алгоритм распознавания границ синтагм.
Построение списка частотных триграмм
Исследование было проведено с помощью сбалансированного фрагмента Национального корпуса русского языка [1] объемом 5 млн. словоупотреблений с морфологической разметкой со снятой неоднозначностью. Тестовые тексты подвергались морфологическому анализу с помощью Pymorphy2 [2].
Размер грамматического тега в Pymorphy2 не является фиксированным для всех частей речи: существительным приписываются теги 5 морфологических характеристик (часть речи, одушевленность или неодушевленность, род, число, падеж), для глаголов – 6 (часть речи, вид, транзитивность, число, время, наклонение) и т.д. Помимо разной длины тегов, каждая характеристика обозначается четырьмя символами, что существенно увеличивает объем памяти при обработке или хранении большого количества данных. Значения некоторых морфологических категорий способны были также ухудшить результаты работы программы, например, значения морфологической категории одушевленности у имен, а потому не являлись необходимыми для данного исследования. По перечисленным причинам, а более всего для сведения морфологической разметки к единому формату, выдача морфоанализатора была скорректирована с помощью программы на языке Python, описанной и созданной А.А. Щербининой и К.В.Сипуниным [3].
В данной работе использовались именно скорректированные данные о морфологической разметке, так как они представляют собой унифицированный позиционный тег для каждой части речи, состоящий из 7 элементов, кодирующих следующие морфологические категории: 1) часть речи, 2) одушевленность, 3) падеж, 4) число, 5) род, 6) лицо, 7) вид. В случае, если у какого-либо слова отсутствует значение определенной морфологической категории, ее позиция в теге заполняется прочерком.
На основе текстов из НКРЯ, подвергнутых подобной «перекодировке», был составлен список всех встретившихся в них триграмм («золотой стандарт»), который содержит 126419 уникальных триграмм с частотами, среди которых есть как очень частотные (например, триграммы вида «в сосновом лесу»: [Pp,_,Lc,_,_,_,_; Aj,_,Lc,Sg,Ms,_,_; Nn,_,Lc,Sg,Ms,_,_], 2858 вхождений, или такие триграммы, как «больших карих глаз»: [Aj,_,Gn,Pl,_,_,_; Aj,_,Gn,Pl,_,_,_; Nn,_,Gn,Pl,_,_,_], 1214 вхождений), так и очень редкие – в списке содержится более 68 тысяч триграмм, имеющих только одно вхождение в корпус. Так как предполагается, что считать их распространенным синтаксическим явлением при такой низкой частотности и имеющейся вероятности ошибочной разметки или перекодировки было бы неразумно, максимальное количество триграмм из частотного списка, которое использовалось в эксперименте, описанном далее в данной работе, было решено взять равным 1443, поскольку ровно такое количество триграмм в списке имеют частоту, большую 0,01% от суммы всех частот триграмм, т.е. относительно существенную.
Предварительная обработка тестовых данных
В качестве тестовых данных использовались 10 текстов статей из газет на политическую тематику, по объему не превышающих 300 словоупотреблений. Предварительно каждый текст был подвержен процедуре токенизации с помощью модуля nltk [3]. Работа описываемой в эксперименте программы происходила в специально созданном «окне», куда включался текущий токен, а также по одному токену из его правого и левого контекста. Каждая триграмма, имела морфологическую разметку, однако, ее неоднозначность не снималась, учитывались все варианты грамматического разбора слова, в соответствии с их условной вероятностью. Учитывая, что Pymorphy2 может выдавать несколько вариантов разбора одного слова, триграммы составлялись с помощью комбинаторики из всех возможных вариантов. Соответственно, количество триграмм тегов для трех стоящих рядом токенов вычислялось как прямое произведение количества вариантов разбора для каждого из данных трех токенов.
Выделение синтагм
Л.В. Щерба, первым заговоривший о «синтагме», считал недопустимым наличие паузы внутри синтагмы, поскольку целостность синтаксической конструкции в таком случае разрушалась бы. Что касается структуры самих синтагм, Лев Владимирович допускал, что они могут состоять как из нескольких слов, так и только из одного. [4] Таким образом, триграммы, центральным элементом которых являлся знак препинания, не сравнивались с «золотым» списком, а триграммы из одного слова считались допустимыми.
Изначальной гипотезой для эксперимента послужила идея о том, что частотная синтаксическая конструкция должна иметь сильные внутренние синтаксические связи. Так как на границе синтаксических единиц обычно наблюдается большое разнообразие конструкций и элементов, чем чаще встречается в текстах определенная триграмма, тем больше вероятность, что она не содержит в себе границу синтагмы. Таким образом, каждая триграмма проверялась на наличие и частотность в списке «золотых» триграмм, и, в случае вхождения в него, признавалась одним из центров синтагмы или ее опорной точкой. В случае же, если триграммы в списке не находилось (для всех возможных ее морфологических разборов), в текст за центральным токеном синтагмы вставлялся знак синтагматической границы.
Тестирование алгоритма выделения синтагм в текстах
С помощью данной программы были обработаны 10 публицистических тестовых текстов объемом каждый не более 300 слов. Для каждого текста были получены границы синтагм. Для того, чтобы оценить работу алгоритма, те же самые тексты, на которых запускалась программа, были подвергнуты экспертному синтаксическому анализу. В качестве оценки результата работы программы использовались такие показатели, как точность, полнота и F-мера.
Для членения текста на синтагмы не существует общепринятого стандарта, деление варьируется от очень мелкого и формального, до очень крупного, объединяющего большое количество связанных в предложении элементов. Чтобы протестировать программу с разных сторон, тестовые тексты были размечены вручную в соответствии с указанными двумя принципами деления. Для обоих способов разбиения текста на синтагмы были посчитаны указанные метрики. В таблицах приведены значения названных выше показателей для разных объемов «золотого» частотного списка триграмм. Начальное количество «золотых» триграмм в каждой таблице равняется 1443, пороговому значению.
Таблица 1
Показатели на основе мелкого разбиения текста на синтагмы
Объем «золотого списка» |
Точность |
Полнота |
F-мера |
1443 |
53,29% |
86,44% |
65,93% |
2000 |
53,86% |
84,25% |
65,71% |
3000 |
52,65% |
78,88% |
63,15% |
4000 |
51,74% |
75,51% |
61,41% |
Таблица 2
Показатели на основе крупного разбиения текста на синтагмы
Объем «золотого списка» |
Точность |
Полнота |
F-мера |
1443 |
41,89% |
85,83% |
56,30% |
2000 |
42,28% |
84,01% |
56,25% |
3000 |
42,69% |
82,24% |
56,20% |
4000 |
40,70% |
72,24% |
52,07% |
Алгоритм разбивает текст скорее на мелкие единицы, чем на крупные. Это заметно и невооруженным глазом, при наблюдении за результатами работы программы, например, при опоре на 1443 триграммы:
Теперь[9] главу[10] города[11] будут избирать[12] не[13] жители[14], а[15] избранные депутаты[16] городской думы [17], сообщает[18] Е1[19].
С увеличением количества триграмм разбиение ухудшается, поскольку в качестве «образцовых» триграмм могут рассматриваться неподходящие. Тенденция к ухудшению прослеживается при сравнении с обоими типами ручной разметки. Трудности для программы чаще всего возникают на границах предложений и в непосредственной близости к знакам препинания.
Алгоритм отличается очень высоким уровнем показателя полноты (максимальное значение = 86,44%, минимальное = 72,24%) и не таким высоким уровнем показателя точности (максимальное значение = 53,29%, минимальное = 40,70%). Значение F-меры достигает максимально 65,93%, что можно считать довольно хорошим результатом.
Выводы
В работе был предложен способ автоматического распознавания синтагматических границ в предложении, основанный на обучении «с учителем», с помощью прецедентной совокупности, представленной ранжированным списком частотных триграмм, полученных из подкорпуса НКРЯ объемом 5 млн словоупотреблений. Наиболее оптимальное количество «образцовых», «золотых» триграмм для наилучшего выделения синтагм оказалось равным пороговому значению (1443), при увеличении их количества производительность ухудшалась. Тем не менее, значение F-меры достигло 65,93%, что можно считать довольно хорошим результатом для первого эксперимента.
В дальнейшем планируется всячески улучшать и дополнять код программы, чтобы добиться большего показателя точности и полноты. На текущем этапе также есть идея выделить дифференциальные грамматические признаки в тегах, сократить таблицу «золотого стандарта» благодаря объединению триграмм, различающихся недифференциальными тегами, и создать правила выделения синтагм, сменив таким образом подход к задаче со статистического на гибридный.
Список литературы:
- Stefano Federici et al. Shallow parsing and text chunking: a view on underspecification in syntax, 1996
- Кагиров И.А., Леонтьева А.Б. Автоматический синтаксический анализ русских текстов на основе грамматики составляющих // Приборостроение. 2008. № 11.
- Щербинина А.А. Вычисление сходства русских текстов на основе синтаксических структур, СПбГУ, 2018
- Щерба Л. В. Фонетика французского языка, М., 1963