Doccano 修复 spacy.gold 的bug

引言

最初只是想把Doccano标注的数据集转换成BIO(类似conll2003数据集)的标注格式;

按照PR的修改意见实现了修改,但是本人不建议这么做;

应该随着Doccano的升级,Doccano的导出格式发生了变化,而原来的doccano-transformer还停留在2022年

建议参考这篇文章:Doccano的标注结果转换为BIO格式 若上述文章已经可解决问题,无需继续往下阅读。

摘要

可先阅读一下教程:【已解决】关于如何将Doccano标注的文本转换成NER模型可以直接处理的CoNLL 2003格式

装包:pip install doccano-transformer

报错信息

运行下述程序后,会报错

python 复制代码
from doccano_transformer.datasets import NERDataset
from doccano_transformer.utils import read_jsonl
 
dataset = read_jsonl(filepath='NER.jsonl', dataset=NERDataset, encoding='utf-8')
gen=dataset.to_conll2003(tokenizer=str.split)
 
file_name="CoNLL.txt"
 
with open(file_name, "w", encoding = "utf-8") as file:
    for item in gen:
        file.write(item["data"] + "\n")

报错信息如下:

python 复制代码
l In[18], line 1
----> 1 from doccano_transformer.datasets import NERDataset
      2 from doccano_transformer.utils import read_jsonl

File ~/anaconda3/envs/nlp/lib/python3.9/site-packages/doccano_transformer/datasets.py:5
      2 import json
      3 from typing import Any, Callable, Iterable, Iterator, List, Optional, TextIO
----> 5 from doccano_transformer.examples import Example, NERExample
      8 class Dataset:
      9     def __init__(
     10         self,
     11         filepath: str,
     12         encoding: Optional[str] = 'utf-8',
     13         transformation_func: Optional[Callable[[TextIO], Iterable[Any]]] = None
     14     ) -> None:

File ~/anaconda3/envs/nlp/lib/python3.9/site-packages/doccano_transformer/examples.py:4
      1 from collections import defaultdict
      2 from typing import Callable, Iterator, List, Optional
----> 4 from spacy.gold import biluo_tags_from_offsets
      6 from doccano_transformer import utils
      9 class Example:

ModuleNotFoundError: No module named 'spacy.gold'

修复bug

根据该GitHub doccano_transformer项目的github issuespr 给出的信息修复该bug:

要修改doccano_transformer/examples.py源码文件;

根据报错信息,确定example.py文件所在目录

python 复制代码
File ~/anaconda3/envs/nlp/lib/python3.9/site-packages/doccano_transformer/datasets.py:5

根据报错信息,知道笔者的examples.py路径如下:

(每人的所在文件夹不同,请自行修改)

python 复制代码
 ~/anaconda3/envs/nlp/lib/python3.9/site-packages/doccano_transformer/examples.py

按照图片所示内容进行修改即可:

  • 修改点 1

    原始代码:

    python 复制代码
    from spacy.gold import biluo_tags_from_offsets

    修改成:

    python 复制代码
    from spacy.training import offsets_to_biluo_tags
  • 修改点 2

    原始代码:

    python 复制代码
    tags = biluo_tags_from_offsets(tokens, label)

    修改成:

    python 复制代码
    tags = offsets_to_biluo_tags(tokens, label)

修改完上述代码,重新运行代码若继续报错,请参考【已解决】关于如何将Doccano标注的文本转换成NER模型可以直接处理的CoNLL 2003格式里面关于example.py的修改;

相关阅读

  • BIO序列提取实体(NER命名实体识别)
    该文把BIO标注的数据,转成下述格式:

    python 复制代码
    {'string': '我是李明,我爱中国,我来自呼和浩特', 'entities': [{'word': '中国', 'type': 'loc'}, {'word': '呼和浩特', 'type': 'loc'}]}

参考资料

  • 1\] github issues

相关推荐
hui函数33 分钟前
Python系列Bug修复|如何解决 pip install -r requirements.txt 私有仓库认证失败 401 Unauthorized 问题
python·bug·pip
hui函数33 分钟前
Python系列Bug修复|如何解决 pip install -r requirements.txt 子目录可编辑安装缺少 pyproject.toml 问题
python·bug·pip
啊湘21 小时前
VSCODE英文界面切换为中文(适用CURSOR等使用)
ide·vscode·编辑器·bug·cursor
hui函数21 小时前
Python系列Bug修复|如何解决 pip install -e . 安装报错 “后端不支持可编辑安装(PEP 660)” 问题
python·bug·pip
一条咸鱼_SaltyFish1 天前
[Day16] Bug 排查记录:若依框架二次开发中的经验与教训 contract-security-ruoyi
java·开发语言·经验分享·微服务·架构·bug·开源软件
luming-022 天前
报错解决:IDEA终端输出和CMD终端输出Maven版本不一致
java·缓存·bug·intellij-idea
秃头小饼干2 天前
技术文章大纲:Bug悬案侦破大会
bug
hui函数3 天前
Python系列Bug修复PyCharm控制台pip install报错:如何解决 pip install 网络报错 企业网关拦截 User-Agent 问题
python·pycharm·bug
hui函数3 天前
如何解决 pip install 代理报错 SOCKS5 握手失败 ReadTimeoutError 问题
bug·pip
f***24113 天前
Bug悬案:程序员破案实录
bug