从GrammaticalStructure转换为Tree

时间:2015-09-14 12:51:28

标签: java nlp stanford-nlp

我正在尝试从斯坦福大学获得新的NN Dependency Parser。根据他们提供的演示,这就是解析的完成方式:

import edu.stanford.nlp.process.DocumentPreprocessor;
import edu.stanford.nlp.trees.GrammaticalStructure;
import edu.stanford.nlp.parser.nndep.DependencyParser;

...

GrammaticalStructure gs = null;

DocumentPreprocessor tokenizer = new DocumentPreprocessor(new StringReader(sentence));
for (List<HasWord> sent : tokenizer) {
    List<TaggedWord> tagged = tagger.tagSentence(sent);
    gs = parser.predict(tagged);

    // Print typed dependencies
    System.out.println(Grammatical structure: " + gs);
} 

现在,我要做的是将此对象gs(类GrammaticalStructure)作为来自Tree的{​​{1}}对象进行投放。

我天真地尝试了简单的演员:

edu.stanford.nlp.trees.Tree

但是,这是不可能的(IDE会出错:无法从Tree t = (Tree) gs; 转换为GrammaticalStructure)。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

您应该能够使用gs.root()获取树。 根据{{​​3}},该方法返回一个树(实际上是TreeGraphNode),表示语法结构。

您可以使用gs.root().pennPrint()以人性化的方式打印该树。