Части речи в грамматическом словаре

Работа с частями речи в словаре

По историческим причинам части речи в словаре называются грамматическими классами. В названиях функций API и в структуре реляционной схемы словаря используется английский термин 'class'.

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

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

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

Ограничение, вводимое обязательной категориальной классификацией слов

Разделение словарных статей по грамматическим классам - это одно из неявных ограничений, вводимых грамматическим движком при описании любой грамматики. Для некоторых естественных языков это не вызывает никаких сложностей, так как полностью совпадает с обычным анализом языка. Таков, к примеру, русский язык.

Для других языков категориальная классификация слов может вызвать некоторые трудности. Главным образом это происходит из-за таких языковых явлений, как конверсия и транспозиция. Например, в английском языке бывает невозможно сказать, к какой части речи нужно отнести слово, если оно рассматривается вне контекста и не стоит в распознаваемой производной форме, например back или run. Аналогичные явления могут наблюдаться и в других языках с ограниченным словоизменением, например в китайском. В русском языке принадлежность слова к определенной части речи обычно определяется однозначно, за исключением некоторого количества внешних омонимов и немногочисленной группы предикативов. Например, краткая форма прилагательных в среднем роде очень часто совпадает с наречием, за исключением положения ударения.

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

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

Иерархия частей речи и "тонкая" внутренняя структура классов

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

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

Во многих случаях внутри грамматического класса выделяются более мелкие подмножества. Для их описания грамматический движок предоставляет разнообразные выразительные средства. Из них можно отметить грамматические признаки, рассматриваемые подробно в отдельном разделе. Например, подмножество модальных глаголов выделяется с помощью специального атрибута у сооветствующих словарных статей. Другая возможность заключается в использовании именованных множеств словарных статей. Например, английские прилагательные, которые не могут употребляться в качестве препозитивного атрибута существительного, то есть выступают только в предикативной роли, немногочисленны и могут быть перечислены в специальном подмножестве. Правило, которое разбирает связь прилагательного и существительного, может проверить вхождение слова в такое подмножество и закончить свою работу с соответствующим статусом.

Части речи как теоретико-множественный оператор в правилах

Итак, все словарные статьи разбиты на непересекающиеся подмножества - грамматические классы. В правилах разбора текста имя грамматического класса явным образом задает проверку на вхождение проверяемого слова в заданный класс. Таким образом, имена грамматических классов с определенными особенностями играют ту же роль, что и имена других подмножеств, вводимых при описании синтаксиса, включая подмножества словарных статей wordentry_set, словоформ wordform_set, слов word_set.

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

Словарные статьи и части речи

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

Спецификации объявления части речи

Возможны два формата объявления частей речи - полный и сокращенный.

1. Полный формат.

class имя_класса
{

 language имя_языка
 attributes
 {
  имя_коорд
  имя_коорд
 
       :
 }

 dimentions
 {
 
имя_коорд
  имя_коорд
       
:
 
}

 tags
 {
 
имя_коорд
  имя_коорд
       
:
 
}
}

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

Строка задания языка language имя_языка может быть пропущена, но для поддержания целостности словаря лучше её всегда указывать.

Секции attributes и dimensions могут произвольно чередоваться. Недопустимо только повторное указание координаты, даже если смысловой ошибки нет. Например, фрагмент

class Предикат
{
 attributes
 {
  падеж
  падеж
      :

при трансляции вызовет появление сообщения об ошибке, хотя повторное объявление координаты падеж не является ошибкой по сути, но может быть следствием опечатки.

2. Сокращенный формат.

class имя_класса

Такой формат приспособлен для классов слов с нулевой парадигмой. Типичный пример - большинство предлогов для обычных языков, английские артикли или японские наречия.

Именем грамматического класса может быть любая последовательность букв (в том числе и национальных) и цифр, начинающаяся с буквы. Символ подчеркивания ‘_’ также считается буквой. Примеры правильных имен классов:

Verb

_Adverb

ГЛАГОЛ

Причаст_1_действ

Очевидно, что два грамматических класса не могут иметь одинаковое имя. Такая ситуация приведет к генерации сообщения об ошибке и аварийному прерыванию работы компилятора словаря.

В некоторых случаях может быть удобно зарезервировать имя грамматического класса, не описывая его немедленно, а перенеся описание в другое место. С помощью ключевого слова extern можно добиться “объявления будущего объявления” части речи:

extern class A_Class_Name

Транслятор обязательно проверит по окончании чтения всего текста словаря, что для каждого зарезервированного объявления класса было прочитано полное определение класса, генерируя в случае чего сообщение об ошибке.

Примером ситуации, когда резервирование имени части речи весьма уместно - объявление словарной статьи без детализации ее наполнения, например для использования в правиле синтаксического анализа:

extern class A_Class_Name

extern entry An_Entry_Name : A_Class_Name

Атрибуты и измерения в частях речи

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

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

Для русского существительного падеж является словоизменительной морфологической категорией, образование грамматических форм слова называется склонением. Таким образом падеж для русского существительного объявлен как измерение:

существительное как часть речи

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

склонение русского существительного

выдаст все грамматические формы слова кошка с указанием падежа:

падежные формы существительного

Теперь рассмотрим предлоги в русском языке. Для них характерно сочетание с существительными по определенным правилам - для каждого предлога есть перечень допустимых падежных форм существительных, выход за рамки этого списка недопустим с точки зрения норм языка:

Для кошки. Для кота. (дат.п.)

Под столом. Под землей. (твор.п.)

Таким образом, для предлогов падеж является атрибутом:

предлог как часть речи

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

падежная валентность предлога

можно увидеть, что предлог с допускает три падежных формы существительного

падежная валентность предлога

Соответствующие примеры словосочетаний для этих вариантов:

с паршивой овцы хоть шерсти клок (род.п.)

с песней по жизни (твор.п.)

размером с овцу (вин.п.)

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

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

для кофе

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

Теги в словарных статьях

Теги практически полностью эквивалентны атрибутам, в частности они характеризуют словарную статью в целом. Единственное отличие - они необязательны. Причина такого отличия кроется в практическом удобстве. Теги используются для задания таких характеристик слов, которые встречаются достаточно редко, поэтому задание их для всех словарных статей доставило бы слишком много неудобств.

Пример тега - признак модальности для русских глаголов.

С помощью SQL запроса к словарю в БД

модальные слова

можно вывести весь список модальных словарных статей, начало которого может выглядеть так:

список модальных слов

Аналогичный запрос в LINQ может выглядеть так:

LINQ модальные слова

Атрибуты, теги и измерения в SQL словаре

Отличие между атрибутами (и тегами) с одной стороны, и измерениями с другой четко видно на схеме словаря в реляционной базе данных.

Атрибуты и теги хранятся как записи в таблице SG_ENTRY_COORD, которая ссылается на шапки словарных статей - записи в таблице SG_ENTRY.

Измерения хранятся в таблице SG_FORM_COORD, которая ссылается на грамматические формы слов - записи в таблице SG_FORM.

Части речи в SQL словаре

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

части речи в sql

выведет весь список объявленных частей речи с привязкой к языку, примерно такого вида:

список частей речи

Части речи в Persistent Dictionary Library

В рамках этой ORM библиотеки каждой части речи соответствует объект класса PartOfSpeech, который можно получить, обратившись к свойству Dictionary.partsofspeech по числовому индексу или по имени. В следующем примере перебираются все объявленные в словаре части речи:

список частей речи

Примеры описаний частей речи

Исходные тексты словаря, в которых объявления частей речи присутствуют в виде текстовых файлов, доступны в полной версии SDK.

В частности, для русского языка объявления частей речи можно посмотреть в файле sg_rus_main.sol.

Объявления для английской морфологии - в sg_eng_main.sol.

Объявления для французской морфологии - в sg_fr_main.sol.

Части речи в многоязычных словарях

Грамматика многих языков выделяет функционально похожие части речи. Таковы, к примеру, существительные. Тем не менее, каждый поддерживаемый в проекте язык описывает свой грамматический класс существительного с уникальным именем, например ENG_NOUN, FR_NOUN и СУЩЕСТВИТЕЛЬНОЕ.

Внутренняя реализация частей речи

В исходных текстах грамматического словаря части речи описываются C++ классом Solarix::SG_Class (объявлен в sg_autom.h), который является потомком Solarix::GramClass (объявлен в gram_class.h). Сохраненный на диске словарь также содержит весь список объявлений частей речи, благодаря чему обеспечивается работа таких функций API, как sol_GetClassName, а также возможность экспорта в SQL форму - таблицы SG_CLASS и SG_CLASS_COORD почти полностью дублируют описания.

Части речи в русском языке

В русском разделе словаря описываются следующие главные части речи:

Имя существительное

Имя прилагательное

Глагол

Причастие

Деепричастие

Наречие

Местоимение

Числительное

А также ряд служебных частей речи:

Предлог

Союз

Частица

Части речи в одноязычных и многоязычных словарях

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

Со значениями этих идентификаторов связан следующий важный момент. При сборке словаря из исходных текстов каждое объявление новой части речи генерирует новое значение id. Если изменить порядок объявления частей речи или исключить часть из них из процесса сборки, то целочисленные значения id поменяются. Чтобы не усложнять работу с API словаря для вариантов одноязычных и многоязычных словарей, было принято такое решение. Вне зависимости от набора языков, представленных в лексиконе, словарь собирается с полным списком русских и английских частей речи. Поэтому даже одноязычный английский словарь хранит в базе данных описания всех русских частей речи. С точки зрения накладных расходов на диске это совершенно незаметная добавка. В оперативную память ненужные описания частей речи не грузятся, поэтому с этой точки зрения накладные расходы вообще нулевые. А благодаря постоянству id частей речи в рамках одной версии словаря появляется возможность подключать одноязычные и многоязычные словари без пересборки прикладных программ.

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

Грамматические координаты

Языки

Словарные статьи

Лексикон

Наречия

Словарь

Внутренний язык грамматической машины

Компилятор словаря

Грамматический Словарь Русского Языка

Parts of speech

  © Elijah Koziev 2010
прикладные проекты на основе грамматического словаря API грамматической машины компоненты для доступа к грамматическому словарю условия получения SDK токенизатор и сегментатор морфологический анализ и синтез лемматизатор база N-грамм синтаксический анализатор словоформы морфология и синтаксис русского языка падеж число род совершенный и несовершенный вид экспорт в SQL формат экспорт в XML формат скрипт SQL словаря структура SQL словаря структура XML словаря компоненты для доступа к грамматическому словарю ORM Persistent Dictionary Library лемматизация стемминг примеры использования грамматического словаря склонение существительных в русском языке склонение русских прилагательных спряжение глаголов в русском языке поиск текста с учетом морфологии OCR подсистема расширенные регулярные выражения генератор текста генератор случайного текста и имитатор рандомизатор синонимизатор перефразировщик Статистика буквенных паттернов

Грамматический словарь русского языка



Грамматический словарь
склонение и спряжение глаголов, существительных, прилагательных

В состав входит русский и английский словарь.

платформа:  Windows 2000 ... Windows 7
требования: 512 Mb свободной памяти, 300 Мб на диске
размер:         34 Мб

  скачать грамматический словарь купить грамматический словарь SDK грамматического словаря
грамматический словарь русского языка



SDK Грамматического словаря



SDK Грамматического Словаря
склонение и спряжение глаголов, существительных, прилагательных

В состав входит русский и английский словарь.

платформа:  Windows 2000 ... Windows 7
размер:         13 Мб

SQL словарь (демо):
sqlite mysql oracle firebird mssql

скачать демо-версию SDK купить SDK API грамматического словаря



Поисковая система



Integra
настольная и сетевая поисковая система 

платформа:  Windows XP ... Windows 7
требования: 512 Mb свободной памяти
размер:         21 Мб

Дополнительные компоненты:
MySQL поисковый сервер 13.5 Мб
Integra.Premium MySQL 3.9 Мб

скачать поисковую систему SDK поисковой системыописание поисковой системы



SDK Поисковой системы



SDK Поискового движка
API для настольной и сетевой поисковая система 

платформа:  Windows XP ... Windows 7
размер:         17 Мб

Дополнительные компоненты:

MySQL поисковый сервер 13.5 Мб
Integra.Premium MySQL 3.9 Мб

скачать SDK SDK поисковой системы



Экранный переводчик



Translator
экранный переводчик

платформа:  Windows XP ... Windows 7
требования: 256 Mb свободной памяти
размер:         4.4 Мб

Дополнительные компоненты:
расширенный англо-русский словарь 6.4 Мб


скачать экранный переводчикописание экранного переводчика



изменено 18-Jun-12