2
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
4

2 回答 2

3

问题是“CoNLL”格式在列的数量、顺序和内容上有所不同。根据错误,您的解析器似乎期望 CoNLL-U ( https://universaldependencies.org/format.html ) 或 CoNLL-X (原始网站关闭)。无论您输入什么,错误声称没有找到预期的列数 (10),请参阅什么是 CoNLL 数据格式?.

但是,如果您确实有 10 列,请尝试转义预期的标记,可能某些内部正则表达式替换失败。

至于使用 NLTK 解析 CoNLL 的子问题,请参阅问题(!)Parsing CoNLL-U files with NLTK中的详细信息。解析一些CoNLL 格式是可能的,但 NLTK 似乎不支持更新的 CoNLL 格式,特别是不支持 CoNLL-X 和 CoNLL-U。它可能适用于您的数据(因为这既不是 CoNLL-X 也不是 CoNLL-U)。

于 2021-03-10T11:00:45.780 回答
0

我遇到了同样的问题。我通过将 pyhton 库切换到 conllu https://pypi.org/project/conllu/来修复它。现在我可以毫无问题地读取和解析我所有的 CoNLL-U 文件。我认为https://stackoverflow.com/a/66563362/7924573解释了原因。

于 2021-05-19T09:19:29.680 回答