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

C/C++:

int sol_CountRoots( HGREN_RESPACK hResults, int GrafSetNo )

C#:

int sol_CountRoots( IntPtr hResults, int GrafSetNo )

Delphi:

function sol_CountRoots( hResults: PInteger; GrafSetNo: Integer ): Integer;

Аргументы:

hResults - дескриптор для результатов морфологического разбора предложения, возвращаемый функцией sol_MorphologyAnalysis.

GrafSetNo - номер альтернативного набора графов, отсчитываемый от 0.

Возвращает:

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

Примечания

Обычно морфологический анализ предложения возвращает один набор графов. Соответственно, аргумент GrafSetNo принимает значение 0. Но иногда из-за особенностей токенизации текста анализатор не может однозначно определить, являются ли несколько слов фактически единым словом или нет. К примеру, союз ТАК КАК может и нтерпретироваться и как два отдельных слова, что в некоторых случаях незавершенного анализа даст как минимум 2 варианта набора графов. Количество альтернативных наборов графов возвращает функция sol_CountGrafs.

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

Определив количество корней в наборе, можно пройтись по каждому графу, начиная с его корня. Для этого можно использовать функции API sol_GetRoot, sol_CountLeafs, sol_GetLeaf.

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

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

API layer C++ source code: grammar_engine_api.cpp

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

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