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

Разделы API

Морфологический анализ и синтез

Синтаксический анализ и синтез

OCR

Генератор контента

База N-грамм

Кроме того, многие алгоритмы работы с текстом доступны в API поискового движка, к примеру расширенные регулярные выражения.

Список функций с переходом на страницы детального описания ...

Обратите внимание, что описываемая далее библиотека предоставляет процедурный подход к взаимодействию с базой данных словаря. Это позволяет безболезненно и в полной мере использовать библиотеку в программах на разных языках - от чистого C до Delphi и C# (через обертку gren_fx.dll). Радикально другой подход предлагает библиотека ORM для словаря, загруженного в реляционную БД.

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

Состав дистрибутива и условия получения - здесь.

Грамматический движок - файл solarix_grammar_engine.dll - находится в подкаталоге ...\lib. В этом же подкаталоге находится .NET обертка gren_fx.dll.

Для Linux и Mac OS X движок реализован в solarix_grammar_engine.so.

Для 64-битных платформ скомпилированные библиотеки находятся в подкаталоге ...\lib64.

Заголовочный файл solarix_grammar_engine.h с объявлениями процедур API находится в подкаталоге ...\include\solarix

Константы для id частей речи, грамматических категорий и признаков

Все символические константы, с помощью которых можно удобно указывать часть речи (существительное, прилагательное и т.д.), грамматическую категорию (падеж, число, и т.д.), грамматический признак (единственное/множественное для числа), объявлены в файле _sg_api.h. Этот файл создается из текстового описания словаря компилятором при трансляции словаря, его можно найти в исходных текстах проекта и в SDK.

Для других языков программирования создаются соответствующие файлы. Например, для платформы .NET генерируется файл _sg_api.cs на C#, на основе которого собирается сборка gren_consts.dll. Влючение этой сборки в References проекта на .NET позволяет использовать все символические константы.

Для языков Delphi, Python и PHP генерируются соответственно _sg_api.pas, _sg_api.py и _sg_api.php.

Числовые значения констант могут меняться в новых версиях словаря, поэтому рекомендуется использовать только символические обозначения, либо искать идентификаторы непосредственно при работе программы с помощью функций API sol_FindLanguage, sol_FindClass и так далее. При работы со словарем, загруженным в реляционную СУБД, можно также искать значения первичных ключей в соответствующих таблицах-справочниках.

К примеру, ссылаться на грамматическую категорию падеж можно с помощью константы CASE_ru, а грамматический признак родительный для категории падежа задается константой GENITIVE_CASE_ru.

Подробнее о константах id и первичных ключах в словаре здесь

Общая методика работы с API грамматического словаря

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

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

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

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

1. Функцией sol_FindEntry ищется индекс словарной статьи в лексиконе. Остальные функции будут работать с индексом словарной статьи - так эффективнее.

2. Функция sol_GetNounForm склоняет существительные (в нужный падеж и число)

3. Функция sol_GetVerbForm спрягает глаголы (время-число-род-лицо)

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

Доступно также большое количество других процедур, которые можно разделить на четыре функциональные группы:

1. Служебные - загрузка движка, удаление, получение версии словаря и т.д, например sol_GetVersion, sol_CountForms.

2. Выполнение морфологического анализа и синтеза - поиск слов в лексиконе, склонение/спряжение слов, например sol_ProjectWord, sol_FindStringsEx.

3. Выполнение синтаксического анализа - построение графа для предложения, замена узлов и синтез фразы из графа, например sol_SyntaxAnalysis.

4. Расширенные регулярные выражения, с помощью которых можно сопоставлять строки с учетом грамматики (см. описание).

5. OCR подсистема(см. описание).

При проектировании своего кода, использующего ГМ, следует обращать внимание на следующую особенность. Во многих случаях результат операций над языковыми сущностями может быть неоднозначен. К примеру, если в тезаурусе объявлены связи между парами существительного и глагола "мотивировка-мотивировать" и "мотивация-мотивировать", то процедура приведения слова "мотивированный" к форме существительного sol_TranslateToNoun (через промежуточную связь причастие-инфинитив) даст два результата - мотивировка и мотивация. Оба результата равнозначны для ГМ, и выбор должен делать пользовательский код, но для упрощения API ГМ соответствующая процедура возвращает только первый результат. Аналогичным образом поиск слова в словаре в общем случае дает множество результатов из-за омонимии, но процедура sol_SeekWord возвращает только один результат.

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

Служебные процедуры грамматического словаря

Создание экземпляра грамматического словаря, загрузка лексикона, тезауруса и пр.

HGREN sol_CreateGrammarEngineW( const wchar_t *Filename )

HGREN sol_CreateGrammarEngineA( const char *Filename )

Аргументы:

    Filename - имя файла скомпилированного словаря, точнее - XML файла с описанием загружаемых модулей. Обычно этот файл называется dictionary.xml. Он автоматически создается компилятором словаря. Можно указать пустую строку или NULL, в этом случае движок будет создан, но грамматический словарь не будет загружен. В таком случае загрузка грамматического словаря выполняется позднее с помощью вызова sol_LoadDictionary.

Возвращает:

Дескриптор экземпляра словаря, который далее указывается практически во всех вызовах API.

Загрузка грамматического словаря

int sol_LoadDictionaryW( HGREN hEngine, const wchar_t * Filename )

int sol_LoadDictionaryA( HGREN hEngine, const char * Filename )

int sol_LoadDictionary8( HGREN hEngine, const char * FilenameUtf8 )

Аргументы:

Filename - путь к файлу описания словаря, обычно это dictionary.xml, создаваемый при сборке словаря.

Возвращает:

0 - Cловарь не загружен из-за ошибки.

1 - Словарь успешно загружен.

2 - Словарь уже был загружен, новая загрузка не выполнена.

Подробное описание с примерами ...

Удаление словаря из памяти

int sol_DeleteGrammarEngine( HGREN hEngine )

Аргументы:

    hEngine - дескриптор экземпляра словаря - см. sol_CreateGrammarEngine.

Возвращает:

    0 - словарь нормально удален из памяти

    1 - при освобождении возникла ошибка

Подробнее об этой функции ...

Удаление всех загруженных модулей словаря

int sol_UnloadDictionary( HGREN hEngine )

Аргументы:

    hEngine - дескриптор созданного экземпляра словаря - см. sol_CreateGrammarEngine.

Подробнее об этой функции ...

Загружен ли словарь

int sol_IsDictionaryLoaded( HGREN hEngine )

Аргументы:

    hEngine - дескриптор экземпляра словаря - см. sol_CreateGrammarEngine.

Возвращает1, словарь уже загружен.

Подробнее об этой функции ...

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

int sol_CountEntries( HGREN hEngine )

Аргументы:

    hEngine - дескриптор созданного объекта движка - см. sol_CreateGrammarEngine и sol_CreateSearchEngine.

Возвращает:

    Число отдельных словарных статей в лексиконе, либо -1 - ошибка.

Дополнительная информация

Сколько словоформ определено явно

int sol_CountForms( HGREN hEngine )

Аргументы:

    hEngine - дескриптор созданного объекта движка - см. sol_CreateGrammarEngine и sol_CreateSearchEngine.

Возвращает:

    Либо число явно объявленных словоформ в словарных статьях в лексиконе, либо -1 - ошибка.

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

Максимальная длина одиночной лексемы в словаре

int sol_MaxLexemLen( HGREN hEngine )

Аргументы:

    hEngine - дескриптор созданного объекта движка - см. sol_CreateGrammarEngine и sol_CreateSearchEngine.

Возвращает:

    Сколько символов может быть максимально в одной лексеме. Данное свойство связано с реализацией лексем как объектов класса UCString. Прикладной код будет получать, например, текстовое представление словоформ, указывая при вызове функций API текстовые буферы, длина которых может быть безопасно назначена равной sol_MaxLexemLen()+1.

Дополнительная информация ...

Определение версии движка

int sol_GetVersion( HGREN hEngine, int *Major, int *Minor, int *Build )

Аргументы:

    hEngine - дескриптор созданного объекта движка - см. sol_CreateGrammarEngine и sol_CreateSearchEngine.

Результат:

Через указатели возвращаются три числа - главный и вспомогательный номера версии и номер "билда". Они могут быть переданы как NULL, тогда смысл будет иметь только возвращаемое значение.

Целочисленное возвращаемое значение может быть либо 0 для сборки версии Lite, либо 1 для версии Pro, либо 2 для версии Premium. Зная это значение, можно сразу определить функциональную заряженность используемого движка, так как многие процедуры в версии Lite заменены заглушками.

Сохранение изменений словаря на диск

int sol_SaveDictionary( HGREN hEngine, int Flags, const wchar_t * Folder )

Аргументы:

    hEngine - дескриптор созданного объекта движка - см. sol_CreateGrammarEngine и sol_CreateSearchEngine.

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

    Folder - если не пустая строка, то путь к папке, куда сохранять файл с данными.

Длина строки, необходимая для помещения текста ошибки

int sol_GetErrorLen( HFAIND hEngine )

int sol_GetErrorLen8( HFAIND hEngine )

Возвращается длина буфера без учета терминирующего нуля для сохранения текста сообщения об ошибке функцией sol_GetError или sol_GetError8.

Подробнее об этой функции ...

Последняя ошибка

int sol_GetError( HFAIND hEngine, wchar_t* Buffer, int buffer_len )

int sol_GetError8( HFAIND hEngine, char * BufferUtf8, int buffer_len )

Возвращается описание последней возникшей ошибки. Текстовое описание помещается в передаваемый буфер, а возвращаемое значение может использоваться как обобщенный индикатор ошибки: если ошибок не было, то вернется 0, если же ошибки были, то вернется 1. Указатель на текстовый буфер можно задать как NULL, в этом случае текстовое описание ошибки не копируется.

Подробнее об этой функции ...

Очистка признака последней ошибки

int sol_ClearError( HFAIND hEngine, wchar_t* buffer, int buffer_len )

Подробнее об этой функции ...

API морфологического и синтаксического анализатора

Описание морфологического анализатора вынесено на отдельную страницу.

Описание синтаксического анализатора доступно здесь.

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

API перефразировщика и синонимизатора

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

Дополнительная информация по API грамматического словаря

Алгоритмы русской морфологии

Приобретение SDK грамматического словаря

Список функций API

ORM библиотека для доступа к SQL словарю

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


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



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