我想我需要来自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中构造树的建议。
答案 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目前无法根据我的知识这样做。