Род является постоянным атрибутом русского существительного, то есть все грамматические формы в рамках одной словарной статьи относятся к одному и тому же роду. Данное свойство рода отражается в объявлении существительного как части речи в исходном тексте словаря, он указан в секции атрибутов:
class СУЩЕСТВИТЕЛЬНОЕ
{
language Russian
attributes
{
ПЕРЕЧИСЛИМОСТЬ
ОДУШ
РОД
}
dimentions
{
ЧИСЛО
ПАДЕЖ
}
}
Для русского языка в грамматическом словаре определено три рода - мужской, женский и самый "малочисленный" средний.
Далее приведены гистограммы распределения русских существительных мужского, женского и среднего рода в зависимости от последней буквы базовой формы - именительного падежа единственного числа.
Существительные мужского рода:
Существительные женского рода более четко идентифицируются последним символом базовой формы:
Существительные среднего рода, самое маленькое подмножество лексикона в сравнении с мужским и женским родами, еще более строго определяются последним символом:
Для каждого существительного в русском лексиконе хранится признак рода. Так как грамматический род объявлен в описании класса существительных как обязательный признак - атрибут, то невозможно внести в русский лексикон существительное, не относящееся к одному из родов. Проще всего убедиться в этом с помощью служебной утилиты для работы с лексиконом Lexicon, которая включена в свободно доступную на сайте демо-версию SDK Грамматического Словаря. Запустив ее и выбрав в начальном меню режим морфологического разбора отдельных слов, можно ввести с клавиатуры слово и увидеть все известные для него грамматические признаки:
На картинке показан вариант морфологического разбора слова кошка с помощью версии утилиты под Linux.
В рамках процедурного API Грамматического словаря определение рода существительного может быть выполнено так.
Допустим, мы имеем существительное в базовой форме, то есть в именительном падеже единственном числе (см. статью о лемматизации). Сначала мы найдем словарную статью в лексиконе с помощью процедуры sol_FindEntry (показан код на C++):
int ie1 = sol_FindEntry( hEngine, L"КОШКА", NOUN_ru, RUSSIAN_LANGUAGE );
Возвращанное целочисленное значение - это ключ словарной статьи, однозначно идентифицирующий ее и используемый во множестве процедур морфологического API. Кроме имени статьи, в вызове процедуры мы также указали две константы - часть речи искомого слова и язык. В данном конкретном случае это несколько избыточная информация, так как даже в случае многоязычного словаря маловероятно, что есть второй язык с кириллической письменностью и словом кошка.
Далее надо определить собственно признак рода этого существительного. Для этого в процедурном API есть специальная процедура sol_GetNounGender, которая возвращает целочисленное значение. Три целочисленные константы, определенные для языка C++ в файле _sg_api.h, соответствуют мужскому, женскому и среднему роду - MASCULINE_GENDER_ru, FEMININE_GENDER_ru, NEUTRAL_GENDER_ru. Таким образом, C++ код для работы с существительными женского рода может выглядеть так:
if( sol_GetNounGender( hEngine, ie1 )!=FEMININE_GENDER_ru )
{ /* ... */ }
Код для других языков программирования, интерфейсы к которым поддерживаются в грамматическом словаре, выглядит в целом аналогично.
Значение грамматического рода хранится в реляционной схеме в таблице SG_ENTRY_COORD. Каждой словарной статье, то есть записи в таблице SG_ENTRY, в SG_ENTRY_COORD может корреспондировать несколько записей в SG_ENTRY_COORD, например для рода и одушевленности существительного. Выбрать именно признак рода можно, зная id записи в SG_COORD с полем имени 'РОД'. Так как эти id соответствуют целочисленным константам, упомянутым в предыдущем абзаце, то в демонстрационном запросе мы просто укажем соответствующее магическое число 11.
Итак, запрос, который определит род существительных на кош-
Результат выполнения запроса:
Именно такой подход реализован и в online-интерфейсе к словарю, загруженному в СУБД MySQL.
Если рассматривать самый типичный случай работы с текстовой информацией в модуле трансформации, то определение рода в нем самое простое из всех изложенных на этой странице. Это возможно благодаря тому, что внутри правил мы уже имеем набор словоформ, и таким образом нобычно нет необходимости в морфологическом разборе слова. Все, что нужно - воспользоваться встроенной функцией wordform_get_coord, которая вернет целочисленное значение:
int gender = wordform_get_coord( word1, РОД );
Специальный механизм компилятора правил позволяет вместо указания целочисленных констант для проверки рода использовать формат КООРДИНАТА:СОСТОЯНИЕ, например так:
if( eq( gender, РОД:ЖЕН ) ) then ...
Кроме работы с SQL словарем непосредственно запросами к базе, можно использовать специальную .NET библиотеку, которая позволяет работать с сущностями в реляционной БД как с объектами ООП.
При использовании этой библиотеки поиск словарной статьи и определение рода выполняются двумя строчками, которые в примере дополнены выводом на консоль:
Solarix.WordEntry кошка = dict.entry["кошка"];
Solarix.CoordPair gender = кошка.attrs.FindState( SolarixGrammarEngineNET.GrammarEngineAPI.GENDER_ru );
Console.WriteLine( "{0}", gender );
В данном случае мы сначала ищем словарную статью, и запоминаем ее как переменную типа WordEntry. Разумеется, следует проверять, что поиск слова удался - то есть контролировать, библиотека не вернула null в первой строке, но для ясности кода эта проверка пропущена. Затем мы обращаемся к свойству attr словарной статьи, которое содержит перечень грамматических атрибутов. Среди них есть значение рода - метод FindState возвращает его как объект класса CoordPair.
Особенность спряжения подавляющего большинства русских глаголов, получившаяся в результате долгого исторического процесса объединения и упрощения глагольных форм, - наличие словоизменения по родам в прошедшем времени:
пел - пела - пело
Образование форм прошедшего времени для русских глаголов достаточно регулярно. Можно построить гистограмму для числа глагольных форм в зависимости от последней буквы формы с помощью достаточно громоздких запросов типа этого (приведен вариант для MS SQL):
Они дадут такие результаты.
Формы глаголов прошедшего времени мужского рода:
Формы глаголов прошедшего времени женского рода:
Формы глаголов прошедшего времени среднего рода:
Для полноты картины можно подсчитать еще распределение форм множественного числа в прошедшем времени:
Попавшая в каждую выборку форма на у - это глагол дать деру.
Во всех случаях очень четко прослеживается 2 варианта, соответствующих обычным и возвратным глаголам на -ся.
Приведенный ранее запрос показывает, какие таблицы в реляционной схеме словаря задействуются для описания грамматических форм русских глаголов - это прежде всего SG_FORM_COORD, собственно хранящая сведения о признаках для каждой формы в таблице SG_FORM.
Английские существительные не имеют морфологического признака рода.
О роде существительного, как о не-морфологической характеристике, можно говорить для существительных boy-girl, man-woman и производных от них schoolboy-schoolgirl, chairman-chairwoman, boyfriend-girlfriend, mother-father и так далее.
В некоторых случаях, относящихся к обозначению професии или рода деятельности, имеются отдельные существительные с гендерным разделением:
actor - actress
Во всех вышеупомянутых случаях грамматический род прямо соответствует биологическому.
Так как прилагательные и глаголы в английском языке не имеют морфологических признаков рода, то род существительных проявляет себя только в паттернах, в которых участвует местоимение - единственная часть речи, для которой грамматический род выражен морфологически:
She is a good actor
Call your mother, she needs your help.
Как нетрудно заметить, вышеперечисленные существительные образуют аналог родовых пар русского языка.
Существительные, обозначающие неодушевленные объекты, считаются среднего рода, так что для указания на них используется местоимение it, за исключением случаев типа существительного ship, которое традиционно считается женского рода.
Особенности описания русских существительных
Особенности описания английских существительных
Грамматические категории в морфологическом словаре
Согласование прилагательных и существительных
© Козиев Илья 2019
![]() |
|
изменено 22-Aug-11 |