как получить отношения между словами с парсером НЛП Стэнфорда - PullRequest
5 голосов
/ 23 января 2011

Я пытаюсь получить связь между строкой и другими словами, такими как:

Экран очень хороший

так что я хочу получить

экран хороший

Я просто не знаю, как получить, что субъект screen и описание очень хорошо

Мой код

public synchronized String test(String s, LexicalizedParser lp){

    if (s.isEmpty()) return "";
    if (s.length()>80) return "";
    System.out.println(s);

    Tree parse = (Tree) lp.apply(s);

    TreebankLanguagePack tlp = new PennTreebankLanguagePack();

    System.out.println(parse.dependencies(tlp.headFinder()));
}

Может ли кто-нибудь дать мне пример того, как это сделать правильно?

Строка s является предложением найти связь между словами.

1 Ответ

5 голосов
/ 26 января 2011

Чтобы получить типизированные зависимости Стэнфорда (например, nsubj, dobj), вам нужно использовать классы GrammaticStructure.Простое дерево имеет только нетипизированные зависимости.Используйте что-то вроде этого:

GrammaticalStructureFactory gsf = tlp.grammaticalStructureFactory();
GrammaticalStructure gs = gsf.newGrammaticalStructure(parse);
Collection tdl = gs.typedDependenciesCollapsed();
System.out.println(tdl);
...