Как получить нужные узлы от НЛП Стэнфордского Парсера? - PullRequest
2 голосов
/ 07 января 2011

Моя главная проблема в том, что я не знаю, как извлечь узлы из GrammaticStructure.Я использую englishPCFG.ser в Java NetBeans.Моя цель - узнать качество экрана, например:

Экран iphone 4 отличный.

Я хочу извлечь экран и отлично.Как я могу извлечь NN (экран) и VP (отлично)?

код, который я написал:

LexicalizedParser lp = new LexicalizedParser("C:\\englishPCFG.ser");
lp.setOptionFlags(new String[]{"-maxLength", "80", "-retainTmpSubcategories"});

String sent ="the screen is very good.";
Tree parse = (Tree) lp.apply(Arrays.asList(sent));
parse.pennPrint();
System.out.println();

TreebankLanguagePack tlp = new PennTreebankLanguagePack();
GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();
GrammaticalStructure gs = gsf.newGrammaticalStructure(parse);
Collection tdl = gs.typedDependenciesCollapsed();

1 Ответ

2 голосов
/ 09 января 2011

Коллекция tdl представляет собой список типизированных зависимостей.Для этого предложения оно содержит:

det(screen-2, the-1)
nsubj(great-7, screen-2)
amod(4-5, iphone-4)
prep_of(screen-2, 4-5)
cop(great-7, is-6)

(как вы можете увидеть, попробовав его онлайн ).

Итак, нужная вам зависимость, nsubj(great-7, screen-2)прямо в этом списке.nsubj означает, что «screen» является предметом «great».

Коллекция зависимостей - это просто Collection (Список).Для более сложной дальнейшей обработки люди обычно хотят превратить зависимости в структуру графа, которую можно искать и обходить по-разному.Есть разные способы сделать это.Мы часто используем библиотеку (jgrapht) [http://www.jgrapht.org/].Но вот код, который вы пишете сами.

...