Doccano的标注结果转换为BIO格式

简介

实现了Doccano导出格式到BIO命名实体识别格式的转换

项目完整可运行的代码:https://github.com/JieShenAI/csdn/tree/main/KnowledgeGraph/data_convert/doccano2BIO

演示

  • Doccano的导出格式:

    {"id":161,"text":"“十四五”时期是我省全面建成小康社会之后,乘势而上开启全面建设社会主义现代化国家新征程的第一个五年,也是谱写新时代湖北高质量发展新篇章的关键五年","entities":[],"relations":[],"Comments":[]}
    {"id":162,"text":"进入新发展阶段,发展不平衡不充分仍然是我省最大的实际,抓发展仍然是第一要务,必须坚持以xxx新时代中国特色社会主义思想为指导,深入贯彻落实xxxxxx考察湖北、参加湖北代表团审议时的重要讲话精神,胸怀“两个大局”,贯彻新发展理念,服务构建新发展格局,加快“建成支点、走在前列、谱写新篇”进程,以疫后重振和高质量发展的实际成效体现湖北担当、展现湖北作为","entities":[{"id":1106,"label":"基本遵循","start_offset":43,"end_offset":59},{"id":1107,"label":"基本遵循","start_offset":100,"end_offset":106},{"id":1108,"label":"主要任务","start_offset":128,"end_offset":142},{"id":1109,"label":"主要任务","start_offset":147,"end_offset":151},{"id":1110,"label":"主要任务","start_offset":152,"end_offset":157}],"relations":[],"Comments":[]}
    
  • 转换后的BIO格式
    (由于换行符很多,下述只展示一部分转换后的格式)

    以 O
    x B-基本遵循
    x I-基本遵循
    x I-基本遵循
    新 I-基本遵循
    时 I-基本遵循
    代 I-基本遵循
    中 I-基本遵循
    国 I-基本遵循
    特 I-基本遵循
    色 I-基本遵循
    社 I-基本遵循
    会 I-基本遵循
    主 I-基本遵循
    义 I-基本遵循
    思 I-基本遵循
    想 I-基本遵循
    为 O
    

代码实现

import json  
  
def load_jsonl(file_path):  
    with open(file_path, 'r', encoding='utf-8') as file:  
        for line in file:  
            yield json.loads(line)
def doccano2BIO(file_name, output_file='out.txt'):
    def _get_pair():
        data = load_jsonl(file_name)
        for line in data:
            text = line['text']
            labels = ['O'] * len(text)
            for ent in line['entities']:
                label, start_offset, end_offset = ent['label'], ent['start_offset'], ent['end_offset']
                labels[start_offset] = 'B-' + label
                labels[start_offset+1: end_offset] = ['I-' + label] * (end_offset - start_offset - 1)
            yield text, labels
            
    with open(output_file, 'w+') as f:
        content = []
        for text, labels in _get_pair():
            s = []
            item = zip(list(text), labels)
            for line in item:
                s.append(' '.join(line) + '\n')
            s = ''.join(s)[:-1]
            content.append(s)
        content = "\n\n".join(content)
        f.write(content)

运行

使用上述代码完成Doccano导出格式到BIO格式的转换;
完整可运行的代码:https://github.com/JieShenAI/csdn/tree/main/KnowledgeGraph/data_convert/doccano2BIO

在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jieshenai

为了遇见更好的文章

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值