如何使用ClearNLP反序列化CoNLL格式依赖关系树?

时间:2015-05-21 06:47:59

标签: java nlp deserialization parse-tree clearnlp

使用ClearNLP进行依赖性解析会创建一个DEPTree对象。我已经解析了一个大型语料库并以CoNLL格式序列化了所有数据(例如,this ClearNLP page on Google code)。

但我无法弄清楚如何反序列化它们。 ClearNLP提供DEPTree#toStringCoNLL()方法(向下滚动this page即可查看)。我正在寻找一些东西来读取CoNLL格式的解析树并创建一个DEPTree对象。我试图对它进行逆向工程,但并没有真正理解代码的内部工作原理。

相反,我创建了自己的依赖树类来处理我需要的基本功能,但我真的想知道如何获得DEPTree对象。到目前为止,我还没有在他们的API中找到任何方法。

1 个答案:

答案 0 :(得分:0)

找到答案,所以在SO上分享智慧:-) ......

可以使用TSVReader包中的edu.emory.clir.clearnlp.reader进行反序列化。

public void readCoNLL(String inputFile) throws Exception {
    TSVReader reader = new TSVReader(0, 1, 2, 4, 5, 6, 7);
    reader.open(new FileInputStream(inputFile));
    DEPTree tree;
    while ((tree = reader.next()) != null)
        System.out.println(tree.toString(DEPNode::toStringDEP));
}

here的作者Jinho Choi提供ClearNLP

在旧版本(< 3.x)中,您需要使用com.clearnlp.reader.DEPReader类而不是TSVReader