Как я могу получить ребра, содержащие зависимость корневого модификатора, в синтаксическом анализаторе Stanford NLP?

Я создал граф зависимостей для своего сценария, который принимает текстовый ввод.

SemanticGraph dependencies = sentence.get(CollapsedCCProcessedDependenciesAnnotation.class);

Мне удалось получить зависимость модификатора «num», используя следующий код:

List<SemanticGraphEdge> edgesContainingNumModifierDependency = dependencies.findAllRelns(GrammaticalRelation.valueOf("num"));

Однако я хочу найти ребра, относящиеся к «корню», и, следовательно, следующие

List<SemanticGraphEdge> edgesContainingRootModifierDependency = dependencies.findAllRelns(GrammaticalRelation.valueOf("root"));

не работает.

Кто-нибудь может объяснить, почему? И как я могу получить край для рута?


person Kripa Jayakumar    schedule 05.02.2015    source источник


Ответы (1)


На самом деле мы не храним SemanticGraphEdge между корневым словом и фиктивным узлом ROOT. (Вы можете видеть, что зависимость вручную подключается в общедоступных методах как toList).

Из SemanticGraph документации:

Корень в настоящее время не представлен в виде вершины графа. В данный момент вам нужно получить корень/корни из отдельной переменной root и знать об этом. Возможно, это следует изменить, потому что в противном случае выполнение таких действий, как простое получение набора узлов или ребер из графа, не даст вам корневых узлов или ребер.

Однако вы можете получить то, что хотите, с помощью SemanticGraph#getFirstRoot.

person Jon Gauthier    schedule 07.02.2015