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

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

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

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

Спецификация формата

 Разберемся с деталями описания координат в текстовом файле. Основной формат такой:

enum имя_координаты { имя_сост1имя_сост2... }

Здесь 'enum' - ключевое слово, 'имя_координаты' - произвольная комбинация букв и цифр, начинающаяся с буквы (конечно, буквами признаются и элементы национальных алфавитов, а не только латинские символы), 'имя_сост1' и далее - имена состояний данной координаты. Перечень имен состояний обязательно заключается в фигурные скобки '{' и '}'. Если координата имеет только два состояния, например, переходность для глаголов, то можно использовать сокращенный формат:

enum имя_координаты

То есть список имен состояний не приводится. Фактически дело будет обстоять так, что такая бистабильная координата имеет состояния с условными именами 'true' и 'false', хотя в явном виде эти имена состояний не генерируются Транслятором и не должны употребляться в ПРИИСК-программе. Вместо явного использования имен состояний для бистабильных координат формат описания координатной пары изменяется таким образом:

имя_координаты эквивалентно имя_координаты:true

~имя_координаты эквивалентно имя_координаты:false

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

enum имя_координаты = имя_образца

При этом список состояний будет просто скопирован из уже загруженного описания координаты с именем 'имя_образца'. Такие координаты (с одинаковыми состояниями в одних и тех же позициях) позволяют реализовать особые формы сравнения (см. далее).

В некоторых случаях, рассматриваемых в главе #, необходимо кроме основного имени координаты иметь дополнительные имена-синонимы. Формат объявления координаты для этого случая:

enum осн_имя [ , доп_имя1 [ , доп_имя1 ] ] ... { ... }

Например:

enum Падеж, Падеж1 { именительный притяжательный }

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

enum Переходность, Перех1 {}

Осталось ввести формат особой разновидности координат, которые мы назвали многоохватными.

Кроме шести падежей: именительного, родительного, творительного, дательного, винительного и предложного, в русской грамматике можно выделить несколько редких и/или исчезающих падежных форм. К примеру, так называемая звательная форма (вокатив): "Старче!", "Мам!" иногда считается особым звательным падежем; партитивный падеж: "дай чаю!", и некоторые другие (местный, отложительный, счетный) увеличивают падежную парадигму до 9 форм. Важно отметить, что либо эти падежные формы употребляются довольно редко, либо слова в этих формах неотличимы лексически от какой-либо из основных 6 форм: ср. именительный село и звательный село. Чтобы облегчить описание словарных статей (о чем речь пойдет здесь), реализован специальный прием.

Объявляем категорию падеж так:

enum падеж
{
 {
им зват}
 {
род парт счетн }
 
твор
 вин
 дат
 
{
предл отлож мест }
}

Близкие (лексически и синтаксически) состояния объединяются в подгруппы, причем первым идет имя основной падежной формы: { им зват }. Это означает, что вместо словоформы с координатной парой падеж:зват может использоваться словоформа с падеж:им.

Перечисления используются не только как координаты Лексического Пространства, но и как именованные множества имен (состояний), аналогично перечислениям языка C++. Например, связи в тезаурусе помечаются состояниями координаты с именем net.

Отложенное (deferred) объявление перечисления

Бывают ситуации, когда желательно только объявить имя перечисления, не специфицируя имен состояний. Язык ПРИИСК позволяет использовать ключевое слово extern:

extern enum Name

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

extern enum Name

:

extern enum Name

:

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

extern enum Name

:

enum Name { State1 State2 }

:

extern enum Name

:

Есть важное исключение: если определение координаты встречается повторно, и все состояния в новом определении не были объявлены таковыми в старом, то выполняется конкатенация двух определений: новые состояния добавляются в список состояний координаты. Это безусловно создает необходимые предпосылки проникновению труднообнаруживаемых ошибок в ПРИИСК-программу, но повышает гибкость языка: можно добавлять состояния к списку координаты помодульно. Например, два оператора:

                                                    enum Name { State1 State2 }

                                                    enum Name { State3 State4 }

полностью эквивалентны одной строке:

                                                    enum Name { State1 State2 State3 State4 }

По окончании трансляции словаря будет выполнена проверка того, что все предварительно объявленные координаты полностью определены.

Координатные пары

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

Но уникальность имен состояний гарантируется только в рамках одной координаты. Совпадение имен состояний у двух разных координат - вполне нормальное явление, например грамматические лицо в английском и русском языках

enum ЛИЦО { 1 2 3 }

enum PERSON { 1 2 3 }

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

ЛИЦО:1

PERSON:2

Такая конструкция используется очень часто и далее в документации называется координатной парой.

Внутреннее представление

Координаты и их состояния хранятся в виде объектов класса GramCoord (файл coordinate.h) для координаты и GramCoordState (там же) для состояния. Во всех операциях используется индекс координаты во внутреннем списке грамматики (поле coord класса Grammar - см. grammar.h).

На уровне API грамматического словаря работа с координатами выполняется несколькими функциями, например получение количества состояний у координаты - функция sol_CountCoordStates. Кроме того, номера координат и их состояний, используемые в вызовах API и в возвращаемых результатах, объявлены как символические константы для C/C++/C#/Delphi.

Для SQL варианта словаря координаты и их состояния хранятся как записи в таблицах SG_COORD и SG_STATE соответственно.

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

Для реализации русской морфологии в грамматическом словаре объявлены следующие категории:

Падеж - именительный, вокатив, родительный, партитив, творительный, винительный, дательный, предложный, локатив.

Число - единственное, множественное

Род - женский, мужской, средний

Время - прошедшее, настоящее, будущее

Степень сравнения - положительная, сравнительная, превосходная

Лицо - первое, второе, третье

Наклонение - изъявительное, побудительное

Модальность

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

Грамматические классы

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

Лексикон

Словарь

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

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

Грамматический род у существительных без форм единственного числа

  © 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 Мб


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



изменено 05-Feb-12