3

我想我需要 edu.stanford.nlp 包中的 Semgrex。对于这项任务,我需要从 edu.stanford.nlp.trees.Tree 构造 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 中构造树的建议。

4

1 回答 1

2

你想SemanticGraph从你的 CoNLL 文件中加载一个。

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

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

这将产生一个为您文件中的每个句子Iterator提供一个。SemanticGraph

从依赖解析生成选区树是一个开放的研究问题,因此据我所知,目前斯坦福 CoreNLP 无法做到这一点。

于 2017-04-04T19:37:04.627 回答