Как десериализовать дерево зависимостей формата 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,

Другие вопросы по тегам