Позиция слова в исходном предложении

C/C++:

int sol_GetNodePosition( HGREN_TREENODE hNode )

C#:

int sol_GetNodePosition( IntPtr hNode )

Delphi:

function sol_GetNodePosition( hNode: PInteger ): integer;

Аргументы:

hNode - дескриптор узла синтаксического дерева.

Возвращает:

Позицию слова, 0 для первого слова, 1 для второго и так далее. В случае ошибки и для специальных узлов возвращает -1.

Примечания

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

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

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

Синтаксический анализатор построит такой граф:

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

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

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

API layer C++ source code: grammar_engine_api.cpp

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

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