Синтаксис объявления частей речи
Атрибуты и измерения в частях речи
Теги в частях речи
Части речи в SQL словаре
Части речи в Persistent Dictionary Library
Части речи в русском языке
Примеры объявления в исходных текстах словаря
По историческим причинам части речи в словаре называются грамматическими классами. В названиях функций API и в структуре реляционной схемы словаря используется английский термин 'class'.
Объявление грамматических классов в Грамматическом Словаре имеет декларативные функции, в частности, позволяет контролировать полноту и корректность описания словарных статей. Описание грамматического класса содержит перечень координат, которые имеют значение для слов, принадлежащих данному классу.
Введение возможности описывать произвольные грамматические классы вместо работы с "жестко зашитыми" в систему классами обусловлено тем, что проект разрабатывался как максимально "языконезависимый". Разные естественные языки в силу тех или иных причин имеют вариации, например понятие артикля многих европейских языков совершенно неизвестно русскому (и многим родственным), поэтому пришлось бы вводить в систему некий максимально широкий список классов, гарантированно включающий в себя всевозможные нюансы отдельных языков. Более того, в некоторых языках артикль имеет разные формы для согласования с существительным по роду, числу (например, в французском языке), иногда по падежу (немецкий), а в некоторых - есть только одна форма (английский язык). Если же учесть, что класс - это не просто название категории слов, но и специфичные для него грамматические признаки (то есть указанные грамматические свойства, которыми обладают слова данной части речи - падеж, число и т.д.), то введение заранее предусмотренного списка классов с предопределенными описаниями становится просто бессмысленной задачей.
В некоторых случаях из практических соображений вводились специальные грамматические классы, которые не всегда соответствуют общепринятой классификации в грамматике. Например, для японского словаря введены постфиксы - особые частицы, отражающие морфологические признаки слов. Используемый в японском словаре сегментатор текста поддерживает такую модель токенизации, что вместо дюжины падежных форм японского существительного мы имеем дело с единственной базовой формой и набором постфиксов как отдельных частиц.
Как будет показано в спецификациях описания словарных статей, для каждой статьи обязательно указывается имя части речи, к которой она относится.
Возможны два формата объявления частей речи - полный и сокращенный.
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 может выглядеть так:

Отличие между атрибутами (и тегами) с одной стороны, и измерениями с другой четко видно на схеме словаря в реляционной базе данных.
Атрибуты и теги хранятся как записи в таблице SG_ENTRY_COORD, которая ссылается на шапки словарных статей - записи в таблице SG_ENTRY.
Измерения хранятся в таблице SG_FORM_COORD, которая ссылается на грамматические формы слов - записи в таблице SG_FORM.
Как уже было упомянуто, объявления грамматических классов для словаря, загруженного в SQL базу данных, можно увидеть в таблице SG_CLASS. Запрос

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

В рамках этой 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 почти полностью дублируют описания.
В русском разделе словаря описываются следующие главные части речи:
Местоимение
Числительное
А также ряд служебных частей речи:
Предлог
Союз
Частица
Внутренний язык грамматической машины
Грамматический Словарь Русского Языка
© Elijah Koziev 2010
Поисковая система
SDK Поисковой системы
Экранный переводчик
|
|
изменено 25-Aug-11 | ||||||||||||||||||||||||||||||||||||||