无法将IOB转换为SPACY二进制格式

问题描述

我尝试将IOB(每行令牌NER)文件(训练/测试)转换为Spacy 3二进制格式。

输入格式示例(带分隔符";";,无空格,编码utf-8):

Département B-LOCATION
des I-LOCATION
Bouches-du-Rhône    I-LOCATION
.   O
Port    B-INSTALLATION
de  I-INSTALLATION
la  I-INSTALLATION
Ciotat  I-INSTALLATION
.   O
Avant-projet    O
du  O
môle    B-INSTALLATION
Bérouard    I-INSTALLATION
au  O
port    B-INSTALLATION
de  I-INSTALLATION
La  I-INSTALLATION
Ciotat  I-INSTALLATION
.   O

当我运行时:

!python -m spacy convert -c iob -s -n 10 -b fr_core_news_sm /content/ner4archives_v0_train.iob .

!python -m spacy convert -c iob -s -n 10 -b fr_core_news_sm /content/ner4archives_v0_test.iob .

我有此错误:

ValueError: [E903] The token-per-line NER file is not formatted correctly. Try checking whitespace and delimiters. See https://spacy.io/api/cli#convert

我看到了包含示例数据的git目录:https://github.com/explosion/spaCy/tree/master/extra/example_data/ner_example_data;但我找不到我的数据和示例之间的区别。

我尝试使用不同类型的分隔符(";";、";";、";|";)重新格式化我的文件,但总是出现相同的错误。此外,我还测试了是否有空的令牌或标签。

有线索的人吗?提前谢谢。


解决方案

我认为您使用的是3.X以外的版本,我可以使用您的输入创建.spacy二进制文件,下载后没有任何问题。fr_core_news_sm

命令:

python -m spacy convert -c iob -s -n 10 -b fr_core_news_sm C:/git/sof/test.iob .

输出:

[i] Auto-detected token-per-line NER format
[i] Grouping every 10 sentences into a document.
[i] Segmenting sentences with parser from model 'fr_core_news_sm'.
[+] Generated output file (1 documents): test.spacy

拼写版本:3.1.3

相关文章