Имя существительное в морфологическом словаре

Имя существительное в морфологическом словаре

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

возвращение, кручение

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

кормить - кормление

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

скукоживание

Связь между порождающим глаголом и порожденным существительным можно найти в тезаурусе. Как и все отношения, описываемые в тезаурусе, они имеют определенный тип связи. В справочнике SG_STATE типы связей тезауруса имеют в поле id_coord значение 0, поэтому запрос:

выведет список типов связей, и среди них нужный нам тип в_сущ:

idname . 37в_сов 38в_несов 39в_сущ 40в_прил 41в_наречие .

Чтобы наконец увидеть, от каких глаголов порождаются существительные, воспользуемся таблицами SG_LINK - связи между словарными статьями, SG_ENTRY - шапки словарных статей. Такой запрос:

выдаст примерно такой список:

прирезатьприрезание повиноватьсяповиновение врезатьврезка перерезатьперерезание вырезатьвырезание отрезатьотрезание подрезатьподрезание срезатьсрезание срезатьсясрезание нарезатьсянарезка

Получение информации о существительном из SQL словаря

Род - постоянный грамматический признак имени существительного в русском языке. Все грамматические формы существительного имеют один и тот же род. Как и другие постоянные грамматические признаки словарных статей, информация о роде хранится в таблице SG_ENTRY_COORD . Привязка к словарной статье осуществляется через внешний ключ - поле SG_ENTRY_COORD.id_entry=SG_ENTRY.id. Для одной записи в SG_ENTRY может быть множество записей в SG_ENTRY_COORD, хранящих информацию, к примеру, о роде, одушевленности, перечислимости, глагольном виде и так далее.

Чтобы отфильтровать запись в SG_ENTRY_COORD , соответствующую именно грамматическому роду, надо знать ID признака 'род'. Для его определения можно посмотреть содержимое справочника SG_COORD :

Среди записей найдется и грамматический род:

idname . 9ЛИЦО 10ЧИСЛО 11РОД 12ПЕРЕХОДНОСТЬ 13ПРИЧАСТИЕ .

Обратите внимание, что текстовое наименование хранится в верхнем регистре, это справедливо для многих справочников SQL словаря.

Таким образом, ID для признака грамматического рода имеет значение 11. Следует, впрочем, иметь в виду, что разные версии SQL словаря могут иметь различия в ID справочников. Поэтому следует избегать внесения числовых констант ID в программный код, используя вместо этого либо поставляющие для процедургого API файлы с объявлениями констант, либо искать перед началом работы текущие актуальные значения ID.

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

idname . 6ADJ 7VERB 8СУЩЕСТВИТЕЛЬНОЕ 9МЕСТОИМ_СУЩ 10МЕСТОИМЕНИЕ .

Вернемся к определению рода существительных. В целом задача решается цепочкой таблиц SG_ENTRY , SG_ENTRY_COORD , SG_STATE . В дополнение к ним в запросе будут участвовать таблицы SG_CLASS - справочник частей речи, SG_COORD - справочник грамматических признаков, так что мы вообще избежим задания числовых значений ID в запросе ценой некоторой потери эффективности. Впрочем, оптимизаторы запросов современных СУБД вполне достойно справляются со своими задачами, и в рамках интерактивных настольных приложений дополнительные затраты времени совершенно неощутимы.

Сведя все таблицы, получаем такой демонстрационный запрос:

В нём выполняется поиск трёх словарных статей, соответствующих существительным кот, кошка и животное, а затем для каждого из них выдается информация о грамматическом роде:

существительноеРОД животноеСР котМУЖ кошкаЖЕН

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

В небольшом количестве случаев в лексиконе присутствуют два существительных с совпадающими грамматическими формами и разным родом. Например, запрос для имени Женя:

вернет две словарных статьи:

существительноеРОД ЖеняМУЖ ЖеняЖЕН

Кроме грамматического рода, каждое существительное в своей словарной статье хранит также признак одушевленности. В целом хранение информации об обушевленности аналогично грамматическому роду. В справочнике SG_COORD есть запись 'ОДУШ', в таблице SG_ENTRY_COORD для словарной статьи по id_entry можно найти значение признака одушевленности. В качестве иллюстрации расширим запрос на вывод грамматического рода, добавив туда вывод одушевленности:

Обратите внимание на нюанс - среди искомых существительных в операторе IN присутствует слово 'оператор', которое соответствует двум словарным статьям. Одно из них одушевленное: оператор станка с ЧПУ. Другое - неодушевленное: оператор дифференцирования. Результаты выполнения запроса будут такие:

СуществительноеРодОдушевлённость операторМУЖОДУШ операторМУЖНЕОДУШ мясоСРНЕОДУШ животноеСРОДУШ котМУЖОДУШ шерстьЖЕННЕОДУШ кошкаЖЕНОДУШ

Склонение существительных

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

Обычно существительное имеет 12 форм - шесть основных падежей в единственном и множественном числе. В некоторых случаях добавляется поэтическая форма творительного падежа рукой-рукою. Для неперечислимых существительных словарные статьи включают шесть грамматических форм.

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

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

namestr_pairs кресло ЧИСЛО:ЕД ПАДЕЖ:ИМ кресла ЧИСЛО:МН ПАДЕЖ:ИМ кресла ЧИСЛО:ЕД ПАДЕЖ:РОД кресел ЧИСЛО:МН ПАДЕЖ:РОД креслом ЧИСЛО:ЕД ПАДЕЖ:ТВОР креслами ЧИСЛО:МН ПАДЕЖ:ТВОР кресло ЧИСЛО:ЕД ПАДЕЖ:ВИН кресла ЧИСЛО:МН ПАДЕЖ:ВИН креслу ЧИСЛО:ЕД ПАДЕЖ:ДАТ креслам ЧИСЛО:МН ПАДЕЖ:ДАТ кресле ЧИСЛО:ЕД ПАДЕЖ:ПРЕДЛ креслах ЧИСЛО:МН ПАДЕЖ:ПРЕДЛ

В поле COORD_PAIRS.str_pairs хранится список признаков в читабельном виде, как одна строка. Каждый признак в ней отделяется пробелами слева и справа. Это позволяет использовать оператор LIKE для фильтрации форм, если скорость запроса не очень важна и использование таблицы SG_FORM_COORD доставляет неудобства. Например, предыдущий запрос можно модифицировать, добавив фильтр единственного числа:

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

📎📎📎📎📎📎📎📎📎📎