首页 > 其他分享 >标注BIO-精灵标注助手

标注BIO-精灵标注助手

时间:2023-06-07 09:23:33浏览次数:55  
标签:BIO ann 精灵 path line txt data 标注

目录

准备待标注数据

创建 raw_data.txt 待标注数据

如何预防高血压?高血压的防治高血压的防治
我是小三阳,有糖尿病,高血脂,我该怎么吃药?糖尿病患者能吃减肥药吗.
糖尿病的的危害,糖尿病怎样治疗呢
医院糖尿病肾病治疗怎么样,糖尿病如何防治?
糖尿病人能吃蜂王浆吗,高血糖可以喝蜂蜜吗
乳腺癌术后淋巴结转移怎么办,乳腺癌脾脏转移怎么办?
糖尿病肾病三期能治愈吗,糖尿病可怕些还是慢性肾炎可怕些?
吃多含糖食物会得糖尿病吗?什么人容易的糖尿病

将待标数据生成文件

generate_ann_data.py

import os

raw_data_path = './data/raw_data.txt'

save_folder = './data/biaozhushuju'
if not os.path.exists(save_folder):
    os.makedirs(save_folder)

with open(raw_data_path,'r',encoding='utf8') as f:
    for i,line in enumerate(f.readlines()):
        line = line.strip()  #strip()表示删除掉数据中的换行符

        # 每行数据,保存成一个文件,
        with open(os.path.join(save_folder,'%s.txt' % str(10000+i)),'w',encoding='utf8') as fo:
            fo.write(line)

image

数据标注

下载标注软件

精灵标注助手:http://www.jinglingbiaozhu.com/

创建项目

image

标注数据

image
将后面的数据全部标注
image

导出数据

image
image
image

ANN 转 BIO

ann2bio.py

import glob


def bratann_to_bio_format(text, ann_str, fstream):
    # 将每一行的元素变为list,strip()删除的字符,按照split()中的符号进行每行元素分割为list的元素
    ann_list = ann_str.strip().split('\n')

    label = ['O' for _ in range(len(text))]  # 对所有的文字赋值为标签"O"
    for i, line in enumerate(ann_list):  # enumerate函数用于遍历序列中的元素以及它们的下标
        try:
            # line:T1    疾病 4 7  高血压
            T, typ, word = line.strip().split('\t')
            t, s, e = typ.split()  # 分别t=疾病 s=起始位置下标 e=结束位置
            s, e = int(s), int(e)
            label[s] = 'B-' + t
            while s < e - 1:
                s += 1
                label[s] = 'I-' + t
        except:
            continue

    for t, l in zip(list(text), label):  # list() 构造函数在 Python 中返回一个列表,将文本以字切分为列表
        # str.join(item1,itemm2),join函数是一个字符串操作函数,使用str符号将item1和item2串联起来
        line = ' '.join([t, l]) # 使用空格连接文字和BIO标注,如果需要 tab形式间隔,可以换成 \t
        print(line)
        fstream.write(line)
        fstream.write('\n')  # 每一个文本(一行)写完,然后进行换行
    fstream.write('\n')  # 使用换行符,将每一个文本用一个空行分开,在train.txt文档中可以很清晰的看到句与句的切分


def gen_ner_training_data():
    # 设置标注文件所在文件夹目录
    root_dir = './data/outputs'
    # 设置训练样本输出文件路径
    stream = open('./data/train.txt', 'a+', encoding='utf8')
    # ann:E:\工作空间\NER-data-process\data\biaozhushuju\outputs\10000.ann
    # txt:E:\工作空间\NER-data-process\data\biaozhushuju\10000.txt
    file_list = glob.glob(root_dir + '/*.ann')  # glob.glob() 函数的作用:在一个文件中,要遍历所有的文件内容

    for ann_path in file_list:
        # 转换路径:转换前:'./data/outputs\\10000.ann'
        # 转换为:'./data/outputs/10000.ann'
        ann_path = ann_path.replace('\\', '/')
        # 获得txt路径
        txt_path = ann_path.replace('/outputs', '').replace('ann', 'txt')  # 然后使用txt替换掉ann

        try:
            ft = open(txt_path, 'r', encoding='utf8')
            text = ft.read().strip()
            ft.close()
            fa = open(ann_path, 'r', encoding='utf8')
            ann = fa.read().strip()
            fa.close()
            if ann == '':
                continue
            bratann_to_bio_format(text, ann, stream)
        except Exception as e:
            print(ann_path, e)

    stream.close()


if __name__ == '__main__':
    gen_ner_training_data()

通过上面代码,将 精灵标注助手 标的 ann 文件转在 NLP 算法需要的 BIO 形式
image

来源:https://www.bilibili.com/video/BV1ft4y1g7s7/?spm_id_from=333.337.search-card.all.click

标签:BIO,ann,精灵,path,line,txt,data,标注
From: https://www.cnblogs.com/vipsoft/p/17460881.html

相关文章

  • PADS尺寸标注选不中怎么解决
    1.点开层,找到尺寸标注对应的显示层,打上勾即可  ......
  • 使用类型标注
    有时PyCharm无法判断变量类型,此时PyCharm自动补全功能失效。使用类型标注来告诉PyCharm变量类型,从而使PyCharm提供自动补全。型标注的格式:变量名:类型=值age:int=24#定义一个变量age,它的类型为int,值为24deftest(name:str,age:int=25,other_info:dict=None):......
  • 手把手实践丨基于STM32+NBIOT+华为云IOT设计智能井盖
    摘要:本文介绍基于STM32微控制器、BC26NBIOT模组和华为云IOT平台,实现了一款智能井盖系统。本文分享自华为云社区《基于STM32+NBIOT+华为云IOT设计的智能井盖》,作者:DS小龙哥。一、概述智能井盖是一种通过物联网技术实现对井盖状态监测和管理的设备。当前介绍基于STM32微控制器,B......
  • 黑屏real time clock error,bios设置系统时间
    打开笔记本,突然出现这样的黑屏信息 按一下F1,出现这样的界面,将选项栏转到第三项Date/Time  转到第三项之后,可以看到系统时间,将系统时间手动修改成现在的时间+ 修改完成后按F10,弹出一个对话框,选择yes,系统会自动关机......
  • VMware ESXi 8.0U1a Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动版)
    VMwareESXi8.0Update1aUnlocker&OEMBIOS集成网卡驱动和NVMe驱动(集成驱动版)发布ESXi8.0U1集成驱动版,在个人电脑上运行企业级工作负载请访问原文链接:https://sysin.org/blog/vmware-esxi-8-u1-sysin/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgES......
  • VMware ESXi 8.0 Update 1a macOS Unlocker & OEM BIOS (标准版和厂商定制版)
    VMwareESXi8.0Update1amacOSUnlocker&OEMBIOS(标准版和厂商定制版)ESXi8.0U1标准版,DellHPE联想浪潮定制版请访问原文链接:https://sysin.org/blog/vmware-esxi-8-u1-oem/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.orgESXi8.0U1a:此补丁修复了以下......
  • submit_bio
    /***submit_bio-submitabiototheblockdevicelayerforI/O*@bio:The&structbiowhichdescribestheI/O**submit_bio()isverysimilarinpurposetogeneric_make_request(),and*usesthatfunctiontodomostofthework.Botharefai......
  • BioinformaticsMeeting以下是一些生物信息学领域的会议和期刊:
    #BioinformaticsMeeting生物信息学学术会议以下是一些生物信息学领域的会议和期刊: 会议:国际基因组学和基因组医学会议(InternationalConferenceonGenomicsandGenomicMedicine,ICGGM)ACMConferenceonBioinformatics,ComputationalBiology,andHealthInformatic......
  • BIO、NIO、AIO区别详解
    BIO:同步阻塞主线程发起io请求后,需要等待当前io操作完成,才能继续执行。NIO:同步非阻塞引入selector、channel、等概念,当主线程发起io请求后,轮询的查看系统是否准备好执行io操作,没有准备好则主线程不会阻塞会继续执行,准备好主线程会阻塞等待io操作完成。AIO:异步非阻塞主线程发起......
  • 中国生物科技公司【Advanced Biomed】申请纳斯达克IPO上市
    猛兽财经获悉,总部位于台湾台南的生物科技公司【AdvancedBiomed】近期已向美国证券交易委员会(SEC)提交招股书,申请在纳斯达克IPO上市,股票代码为(ADVB)。AdvancedBiomed计划通过此次纳斯达克IPO上市募集1.495亿美元的资金。公司业务总部位于台湾台南的AdvancedBiomed旨在开发一种专......