【问题标题】:How to deserialize a CoNLL format dependency tree with ClearNLP?如何使用 ClearNLP 反序列化 CoNLL 格式的依赖树?
【发布时间】:2015-05-21 06:47:58
【问题描述】:
使用 ClearNLP 进行依赖解析会创建一个 DEPTree 对象。我已经解析了一个大型语料库并将所有数据序列化为 CoNLL 格式(例如,this ClearNLP page on Google code)。
但我不知道如何反序列化它们。 ClearNLP 提供了一个DEPTree#toStringCoNLL() 方法(向下滚动this page 以查看它)。我正在寻找一些东西来读取 CoNLL 格式的解析树并创建一个 DEPTree 对象。我试图对其进行逆向工程,但并没有真正理解代码的内部工作原理。
相反,我创建了自己的依赖树类来处理我需要的基本功能,但我真的很想知道如何获取DEPTree 对象。到目前为止,我还没有在他们的 API 中找到任何这样做的方法。
【问题讨论】:
标签:
java
nlp
deserialization
parse-tree
clearnlp
【解决方案1】:
找到了答案,所以分享关于 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));
}
这是ClearNLP的作者Jinho Choi提供的here。
在旧版本 (com.clearnlp.reader.DEPReader 类而不是 TSVReader。