0

使用 ClearNLP 进行依赖解析会创建一个DEPTree对象。我已经解析了一个大型语料库并以 CoNLL 格式序列化了所有数据(例如,Google 代码上的这个 ClearNLP 页面)。

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

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

4

1 回答 1

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));
}

这是由ClearNLP的作者Jinho Choi 提供的。

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

于 2015-05-21T16:08:49.620 回答