API лексикона - поиск словарной статьи

int sol_FindEntry( HGREN hEngine, const wchar_t * EntryName, int PartOfSpeechID, int LanguageID )

int sol_FindEntry8( HGREN hEngine, const char * EntryNameUtf8, int PartOfSpeechID, int LanguageID )

Аргументы:

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

EntryName - наименование словарной статьи.

PartOfSpeechID - ID части речи, можно указать -1, но тогда в случае омонимии будет найдена какая-то одна из словарных статей с заданным именем.

LanguageID - ID языка, можно задать -1.

Возвращает:

-1 - словарная статья не найдена в лексиконе.

число>=0 - первичный ключ (id) словарной статьи.

Примечания

Функции sol_FindEntry и sol_FindEntry8 отличаются текстовой кодировкой, в которой задано название словарной статьи. Функция с суффиксом 8 - получает строку в кодировке utf-8. При прочих равных условиях обе функции возвращают одинаковый первичный ключ для одной и той же словарной статьи.

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

Многие функции API могут выполнять операции со словами с использованием получаемого ID словарной статьи, например sol_GetNounGender вернет грамматический род для существительного. Есть также функции API, выполняющие генерацию нужной грамматической формы слова, то есть склонение или спряжение.

Для получения дескриптора грамматического словаря можно воспользоваться функциями sol_CreateGrammarEngine и sol_LoadDictionary[A,W,8].

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

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

В ORM библиотеке словарные статьи представляются объектами класса WordEntry.

Обратная операция, то есть получение имени словарной статьи по её ID, выполняется функцией sol_GetEntryName. ID части речи для статьи можно определить с помощью функции sol_GetEntryClass.

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

Примеры

Пример на C++ - поиск русского существительного:

#include "solarix_grammar_engine.h"

...

HGREN hEngine = sol_CreateGrammarEngineW(L"..\\..\\bin-windows\\dictionary.xml");

//...

int entry_id = sol_FindEntry( hEngine, L"МАМА", NOUN_ru, RUSSIAN_LANGUAGE );
if( entry_id==-1 )
 {
  printf( "Russian lexicon is missing.\n" );
  // ...
 }

// ...
  

Пример на C#:

IntPtr gren = SolarixGrammarEngineNET.GrammarEngine.sol_CreateGrammarEngineW("..\\..\\bin-windows\\dictionary.xml");

// ...

int entry_id = SolarixGrammarEngineNET.GrammarEngine.sol_FindEntry( hEngine, "МАМА", SolarixGrammarEngineNET.GrammarEngineAPI.NOUN_ru, SolarixGrammarEngineNET.GrammarEngineAPI.RUSSIAN_LANGUAGE );
if( entry_id==-1 )
 throw new ApplicationException( "Russian lexicon is missing" );

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

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

English version of this page

Перечисление словарных и фразовых статей в лексиконе

Лексикон

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

Части речи

Класс WordEntry - представление словарной статьи в ORM библиотеке

API layer C++ source code: grammar_engine_api.cpp

Вернуться к списку функций API

  © Козиев Илья 2019
изменено 23-Aug-11