Морфологический разбор предложения

C/C++:

HGREN_RESPACK sol_MorphologyAnalysis( HGREN hEngine, const wchar_t * Sentence, int Flags, int UnusedFlags, int LanguageID )

HGREN_RESPACK sol_MorphologyAnalysis8( HGREN hEngine, const char * SentenceUtf8, int Flags, int UnusedFlags, int LanguageID )

HGREN_RESPACK sol_MorphologyAnalysisA( HGREN hEngine, const char * Sentence, int Flags, int UnusedFlags, int LanguageID )

C#:

IntPtr sol_MorphologyAnalysis( IntPtr hEngine, string Sentence, int Flags, int UnusedFlags, int LanguageID )

Delphi:

function sol_MorphologyAnalysis( hEngine: PInteger; Sentence: PWideChar; Flags: Integer; UnusedFlags: Integer; LanguageID: Integer ): PInteger;

Аргументы:

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

Sentence - указатель на строку из широких символов, из которой будет извлечен список лексем. Для функций с суффиксом 8 и A строка должна быть в кодировке utf-8 или текущей системной однобайтовой соответственно.

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

SOL_GREN_ALLOW_FUZZY - разрешено использовать алгоритмы нечеткого морфологического анализа слов в случаях, когда анализатор встречает неизвестное ему слово. Также этот флаг разрешает применять разнообразные правила определения морфологических признаков слова по его аффиксу. Может несколько понизить производительность.

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

SOL_GREN_PRETOKENIZED - вместо использования внутреннего токенизатора использовать символ с кодом 0x1F как указатель границ слов. Это позволяет разбить предложений по своим правилам, если имеющиеся в словаре не устраивают.

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

Возвращает:

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

Примечания

Функция выполняет несколько этапов обработки исходного предложения. Прежде всего, выполняется разбивка на отдельные слова с учетом правил и исключений для выбранного языка, то есть токенизация. Затем происходит объединение устойчивых сочетаний слов, представляющих обособленные лексические единицы, то есть chunking. Затем для каждого слова определяется его часть речи и грамматические признаки, в том числе падеж, род, число, время, степень и так далее. Этот этап обычно называется part-of-speech tagging. В случае неоднозначного определения этих признаков у слова анализатор примеряет правила, учитывающие контекст, то есть соседние слова и законы согласования в языке. Таким образом, выполняется disambiguation. Если неоднозначность таким способом не удается устранить, например из-за свободного порядка слов в русском языке, то используются разнообразные эвристики. Например, часто существительное-подлежащее в именительном падеже идет перед сказуемым-глаголом, а прямое дополнение в винительном падеже - после.

Для работы с результатами морфоанализа следует использовать функции sol_CountGrafs, sol_CountRoots, sol_GetRoot, sol_GetNodeIEntry, sol_GetNodeVerIEntry, sol_GetNodePosition, sol_GetNodeContents, sol_GetNodeCoordState, sol_GetNodeVersionCount, sol_GetNodeCoordPair, sol_GetNodeVerCoordPair, sol_GetNodePairsCount, sol_GetNodeVerPairsCount, sol_GetNodePairCoord, sol_GetNodeVerPairCoord, sol_GetNodePairState, sol_GetNodeVerPairState.

Если нужно определить связи слов в предложении, то следует использовать функцию sol_SyntaxAnalysis.

Примеры выполнения морфологического анализа из прикладного кода

C++:

int Flags = SOL_GREN_ALLOW_FUZZY;

HGREN_RESPACK hs = sol_MorphologyAnalysisW( hEngine, L"Девчонки и мальчишки валяли дурака весь день", Flags, 0, 300000, id_language );

const int nroot = sol_CountRoots(hs,0);

for( int i=1; i<nroot-1; ++i )
 {
  HGREN_TREENODE hNode = sol_GetRoot( hs, 0, i );
  // ...
 }

sol_DeleteResPack(hs);

C#:

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

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

API layer C++ source code: grammar_engine_api.cpp

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

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


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



изменено 13-Mar-12