多行读取行会导致错误?

问题描述

目前,我正在处理NRE任务,并使用wnut17train.conllhttps://github.com/leondz/emerging_entities_17)中的数据。它基本上是一条推文的集合,其中每一行都是推文中的一个单词,并带有IOB标签(由\t分隔)。不同的tweet用空白行分隔(实际上,如果您问我,很奇怪,'\t\n'行)。

因此,作为参考,一条推文如下所示:

@paulwalk    IOBtag
...          ...
foo          IOBtag
[\t\n]
@jerrybeam   IOBtag
...          ...
bar          IOBtag

第一步的目标是实现一种将数据集转换为如下所示的训练文件的情况:

train[0] = [(first_word_of_first_tweet,POStag,IOBtag),(second_word_of_first_tweet,...,last_word_of_first_tweet,IOBtag)]

这是我到目前为止提出的:

tmp = []
train = []
nlp = spacy.load("en_core_web_sm")
with open("wnut17train.conll") as f:
    for l in f.readlines():
        if l == '\t\n':
            train.append(tmp)
            tmp = []
        else:
            doc = nlp(l.split()[0])
            for token in doc:
                tmp.append((token.text,token.pos_,token.ent_iob_))

对于一定数量的tweet(或行,尚不确定),一切都可以顺利进行,但是之后我得到了

IndexError: list index out of range

提出
doc = nlp(l.split()[0])

我第一次在20'000行(准确地说是20'533)得到它,然后在检查这不是由于文件引起的之后(也许是分离推文的另一种方式,或者像这样的东西可能被骗了)解析器),我删除了前20000行,然后重试。同样,在大约20'000行之后出现了错误(准确地说是20'260-或原始文件中的40'779)。

我对readlines()进行了一些研究,以了解这是否是已知问题,但看起来并非如此。我想念什么吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)