Почему я не могу прочитать файл .conll с помощью Python (запутанная ошибка синтаксического анализа)?

from pyconll import load_from_file

data = load_from_file("filename.conll")
data

Я слежу за документацией pyconll, чтобы прочитать в .conllфайл, но возникает следующая ошибка, и я не понимаю, что это значит. Набор данных должен быть удобочитаемым, так как это своего рода эталонный набор данных. И я не вижу других параметров pyconll.load_from_file()что можно указать в документации. Кто-нибудь может мне здесь помочь?

Плюс, есть ли способ прочитать .conll файл от nltk пакет?

ParseError                                Traceback (most recent call last)
<ipython-input-14-06859f7ce8b2> in <module>()
----> 1 data = load_from_file("filename.conll")
      2 data

5 frames
/usr/local/lib/python3.6/dist-packages/pyconll/unit/token.py in __init__(self, source, empty)
    661             error_msg = 'The number of columns per token line must be 10. Invalid token: {}'.format(
    662                 source)
--> 663             raise ParseError(error_msg)
    664 
    665         # Assign all the field values from the line to internal equivalents.

ParseError: The number of columns per token line must be 10. Invalid token: @paulwalk   O

3 ответа

Проблема в том, что форматы CoNLL различаются количеством, порядком и содержанием столбцов. Согласно ошибке, ваш парсер, похоже, ожидает CoNLL-U (https://universaldependencies.org/format.html) или CoNLL-X (исходный веб-сайт не работает). Независимо от вашего ввода, ошибка утверждает, что не найдено ожидаемое количество столбцов (10), см. Что такое формат данных CoNLL?.

Однако, если у вас есть 10 столбцов, попробуйте избежать ожидаемого токена, возможно, некоторая внутренняя замена регулярного выражения не удалась.

Что касается подвопроса о разборе CoNLL с помощью NLTK, см. Подробности в вопросе (!) Разбор файлов CoNLL-U с помощью NLTK . Возможен синтаксический анализ некоторых форматов CoNLL, но NLTK, похоже, не поддерживает более современные форматы CoNLL, в частности, CoNLL-X и CoNLL-U. Это может сработать с вашими данными (поскольку это не CoNLL-X и не CoNLL-U).

Я создатель pyconll. Очевидно, что этот ответ далеко от исходного вопроса, но в целом библиотека работает только с файлами формата conllu. Имя — pyconll, так как желательно, чтобы в будущем он поддерживал больше версий conll, но в настоящее время поддерживается только формат conllu.

Это также немного строго с точки зрения того, что принято. Все файлы из проекта UD работают и тестируются, но возможно, что файл, созданный вручную или из другого источника, не соответствует спецификации, установленной UD.

Я столкнулся с той же проблемой. Я исправил это, переключив библиотеку pyhton на conllu https://pypi.org/project/conllu/ . Теперь я могу без проблем читать и анализировать все мои файлы CoNLL-U. Я думаю, что /questions/55651530/pochemu-ya-ne-mogu-prochitat-fajl-conll-s-pomoschyu-python-zaputannaya-oshibka-s/56870172#56870172 объяснил причину.

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