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

How to deserialize a CoNLL format dependency tree with ClearNLP?

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

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

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

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

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

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 by the author of ClearNLP, Jinho Choi

提供的

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