如何打印斯坦福JavaNLP的解析树

时间:2012-06-22 00:52:35

标签: java nlp stanford-nlp

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

E.g。对于subtree.toString()给出(NP (ND all)(NSS times))),但我想要字符串“所有时间”。谁能帮帮我吗。提前谢谢。

2 个答案:

答案 0 :(得分:2)

我相信你想要的是:

final StringBuilder sb = new StringBuilder();

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

虽然我不是百分百肯定,但我似乎记得这是几年前我工作的某些软件的解决方案。

答案 1 :(得分:0)

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

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