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" );
Приобретение SDK грамматического словаря
Перечисление словарных и фразовых статей в лексиконе
Класс WordEntry - представление словарной статьи в ORM библиотеке
API layer C++ source code: grammar_engine_api.cpp
Вернуться к списку функций API
© Elijah Koziev 2010
Поисковая система
SDK Поисковой системы
Экранный переводчик
|
|
изменено 23-Aug-11 | ||||||||||||||||||||||||||||||||||||||