Словоформы и морфологический разбор слов

Словоформы

Словоформы в грамматическом движке - это основной структурный элемент текста, с которым работает морфологический анализатор, правила синтаксического анализа, правила трансформации.

Каждая словоформа является достаточно сложным контейнером, храня разнообразную информацию, полученную в результате морфологического разбора слова.

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

2. Грамматические признаки в виде списка координатных пар. Обычно эти признаки выявляются в ходе морфологического разбора, но могут быть заданы также в правилах синтаксического анализа или трансформации.

3. Связанные словоформы, образующие синтаксический граф (дерево). Деревья появляются либо в ходе синтаксического анализа, либо во время перевода текста. Такие функции в правилах трансформации, как link_count и link_get позволяют работать с ветками такого дерева.

4. Альтернативные варианты словоформ, находящиеся в той же позиции в тексте. Возникновение альтернативных вариантов связано с неоднозначностью морфологического разбора в некоторых случаях. К примеру, предложение Рой здесь. не дает возможности сделать однозначный выбор для первого слова между глаголом рыть и существительным рой.

Морфологический разбор слов

Рассмотрим работу со словоформами в ходе морфологического анализа на примере двух словосочетаний.

вижу орел

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

словоформы при морфологическом разборе

Если контекст позволит, то морфологический анализатор уберет безусловно недопустимые варианты для второй словоформы. Например, такое словосочетание

вижу орла

даст в результате морфологического разбора

морфологический разбор слов

Анализатор учел, что глагол видеть сочетается только с винительным и творительным падежом прямого дополнения. Поэтому варианты родительного падежа для существительных орел и Орел он отбросил. В результате имеем две словоформы без альтернативных вариантов.

Морфологический анализ обоих примеров можно легко проверить с помощью утилиты syntax, запущенной с ключом -morphology. Она выводит в консоль сведения о количестве вариантов в каждой словоформе, если возникают альтернативы:

морфологический разбор словосочетаний

Функции для работы со словоформами

Процедурный API

В процедурном API грамматического словаря есть несколько функций для получения информации о словоформе.

Во-первых, в результате морфологического разбора одиночного слова sol_ProjectWord полчается список альтернативных словоформ. Для работы со список есть функции:

sol_CountProjections - число альтернатив в списке словоформ.

sol_GetIEntry - получение id словарной статьи для указанной словоформы в списке.

sol_GetProjCoordState - определение грамматического признака для указанной словоформы в списке.

Другой набор функций API позволяет работать с результатами морфологического разбора предложения функциями sol_MorphologyAnalysis и sol_SyntaxAnalysis.

В качестве примера можно привести sol_GetNodeIEntry - получение id словарной статьи основного варианта словоформы, sol_GetNodeVersionCount - количество альтернативных вариантов словоформы.

Правила трансформации

Правила трансформации текста также позволяют манипулировать словоформами набором встроенных функций.

К примеру wordform_pack позволяет создать словоформу с несколькими вариантами, например в ходе перевода текста. Для отсева вариантов можно использовать функцию ngrams_filter.

Дополнительные материалы по словоформам

Грамматический словарь

Морфологический анализатор

  © Козиев Илья 2019
изменено 14-Jul-12