2012-06-22 2 views
0

Я пытаюсь получить все существительные фразы, используя пакет edu.stanford.nlp.*. Я получил все поддеревья с меткой «NP», но я не могу получить нормальный оригинальный формат String (не формат Penn Tree).Как напечатать дерево синтаксиса Stanford JavaNLP

E.g. для subtree.toString() дает (NP (ND all)(NSS times))), но я хочу строку «все времена». Кто-нибудь может мне помочь, пожалуйста. Заранее спасибо.

+0

stanford tregex полезен для такого рода предложений. Его показывает древовидную структуру для проанализированных строк. вот ссылка для stanford tregex http://nlp.stanford.edu/software/tregex.shtml – unknown

ответ

2

Я считаю, что вы хотите что-то вроде:

final StringBuilder sb = new StringBuilder(); 

for (final Tree t : tree.getLeaves()) { 
    sb.append(t.toString()).append(" "); 
} 

Хотя я не уверен на 100%, я припоминаю, что является решением, используемым для некоторых программ я работал несколько лет назад.

+0

спасибо большое @sam – learner

0

Это может быть выполнено с использованием метода yield() для поддерева вместо создания отдельного объекта objext StringBuilder.

if (subtree.label().value().equals("NP")) { 
    out.println(subtree);  //print subtree 
    out.println(Sentence.listToString(subtree.yield())); //print phrase 
    break; 
} 
Смежные вопросы