Как десериализовать дерево зависимостей формата CoNLL с ClearNLP?
Анализ зависимостей с использованием ClearNLP создает DEPTree
объект. Я проанализировал большой корпус и сериализовал все данные в формате CoNLL (например, эта страница ClearNLP в коде Google).
Но я не могу понять, как их десериализовать. ClearNLP предоставляет DEPTree#toStringCoNLL()
метод (прокрутите эту страницу вниз, чтобы увидеть ее). Я ищу что-то, чтобы прочитать дерево разбора формата CoNLL и создать DEPTree
объект. Я пытался сделать обратный инжиниринг, но на самом деле не понимал внутреннюю работу кода.
Вместо этого я создал свой собственный класс дерева зависимостей для обработки основных функций, которые мне нужны, но мне бы очень хотелось узнать, как получить DEPTree
объект вместо До сих пор я не нашел ни одного метода в их API, который бы делал это.
1 ответ
Нашли ответ, поэтому поделились мудростью на ТАК:-) ...
Десериализация может быть выполнена с использованием 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
,