Введение
С каждым годом появляется все большее количество подходов к синтаксическому анализу или способов его осуществления, однако проблема неоднозначности синтаксиса и, в частности, неопределенности границ синтагматических единиц, остается не в полной мере решенной.
Для множества задач обработки естественного языка (таких как извлечение именованных сущностей, вопросно-ответные системы и т.д.) используется частичный синтаксический анализ (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]. Работа описываемой в эксперименте программы происходила в специально созданном «окне», куда вк
