如何打印Stanford JavaNLP的解析树

如何打印Stanford JavaNLP的解析树,java,nlp,stanford-nlp,Java,Nlp,Stanford Nlp,我正在尝试使用edu.stanford.nlp.*包获取所有名词短语。我得到了标签值“NP”的所有子树,但我无法得到正常的原始字符串格式(不是Penn树格式) 例如,对于子树,toString()给出(NP(ND all)(NSS times))但我想要字符串“all times”。谁能帮帮我吗。提前谢谢。我相信你想要的是: final StringBuilder sb = new StringBuilder(); for ( final Tree t : tree.getLeaves() )

我正在尝试使用
edu.stanford.nlp.*
包获取所有名词短语。我得到了标签值“NP”的所有子树,但我无法得到正常的原始
字符串
格式(不是Penn树格式)


例如,对于
子树,toString()
给出
(NP(ND all)(NSS times))
但我想要字符串“all times”。谁能帮帮我吗。提前谢谢。

我相信你想要的是:

final StringBuilder sb = new StringBuilder();

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

虽然我不是100%确定,但我似乎记得这是我几年前开发的一些软件所使用的解决方案。

这可以使用子树的yield()方法来完成,而不是创建单独的StringBuilder对象

if (subtree.label().value().equals("NP")) {
    out.println(subtree);       //print subtree
    out.println(Sentence.listToString(subtree.yield()));    //print phrase  
    break;
}

斯坦福tregex对这类句子很有用。它向我们展示了解析行的树结构。这是斯坦福tregex的链接