如何处理我从syntaxnet获得的树?(conll格式)

时间:2017-04-04 14:40:58

标签: nlp stanford-nlp syntaxnet

我想我需要来自edu.stanford.nlp包的Semgrex。对于这个任务,我需要从edu.stanford.nlp.trees.Tree构造树并处理该树像

import edu.stanford.nlp.semgraph.semgrex.SemgrexMatcher;
import edu.stanford.nlp.trees.Tree;
import edu.stanford.nlp.semgraph.SemanticGraphFactory;

public class SemgrexDemo  {
    public static void main(String[] args) {
        Tree someHowBuiltTree;//idnt know how to construct Tree from conll
        SemanticGraph graph = SemanticGraphFactory.generateUncollapsedDependencies(someHowBuiltTree);
        SemgrexPattern semgrex = SemgrexPattern.compile("{}=A <<nsubj {}=B");
        SemgrexMatcher matcher = semgrex.matcher(graph);
    }
}

实际上我需要一些关于如何从conll中构造树的建议。

1 个答案:

答案 0 :(得分:2)

您想从CoNLL文件中加载SemanticGraph

import edu.stanford.nlp.trees.ud.ConLLUDocumentReader;
...

CoNLLUDocumentReader reader = new CoNLLUDocumentReader();
Iterator<SemanticGraph> it = reader.getIterator(IOUtils.readerFromString(conlluFile));

这会生成Iterator,为您的文件中的每个句子提供SemanticGraph

从依赖关系解析生成选区树是一个开放的研究问题,所以斯坦福CoreNLP目前无法根据我的知识这样做。