推荐使用 Label Studio

准备待标注数据

创建 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)

数据标注

下载标注软件

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

创建项目

标注数据



将后面的数据全部标注

导出数据





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 形式

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

标注BIO-精灵标注助手的更多相关文章

  1. 使用 GMap.NET 实现添加标注、移动标注功能。(WPF版)

    前言 在WPF嵌入地图,有两种方式: 浏览器方式:控件方式. 1)浏览器方式就是使用浏览器控件WebBrowser,设置好网址就行了.这种方式与地图的交互不太直接,需要懂html.javascript ...

  2. 百度地图api,点击标注,改变标注marker图标的链接地址

    改变选中的图标样式 // 选中高亮标注图片 let mapIcon = ‘./icon.png’; //标注点 let markerArrs = [{},{},....]; // 点击标注点 mark ...

  3. 百度地图Api进阶教程-创建标注和自定义标注3.html

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="ini ...

  4. 深度学习标注工具 LabelMe 的使用教程(Windows 版本)

    深度学习标注工具 LabelMe 的使用教程(Windows 版本) 2018-11-21 20:12:53 精灵标注助手:http://www.jinglingbiaozhu.com/ LabelM ...

  5. AI-数据标注类型

        随着数据的暴增和计算机硬件技术的发展,也催生了AI技术在各行各业的应用渗透.而想将AI技术应用到各行各业,数据是必需品.因为数据直接影响到AI最终训练出来的模型好坏.AI建模没有太大门槛,但数 ...

  6. 序列标注(HMM/CRF)

    目录 简介 隐马尔可夫模型(HMM) 条件随机场(CRF) 马尔可夫随机场 条件随机场 条件随机场的特征函数 CRF与HMM的对比 维特比算法(Viterbi) 简介 序列标注(Sequence Ta ...

  7. ArcMap 标注、注记、图形文本

    标注.注记.图形文本 2016年8月10日10:29 ArcMap中怎样向地图添加文本,其中标注与注记是重点内容,此处对此进行总结. 参考链接: ①地图文本基本词汇: 什么是文本? ArcGIS 提供 ...

  8. 百度地图Api详解之地图标注

    标注概述 标注(Marker)是用来表示一个点位置的可见元素,每个标注自身都包含地理信息.比如你在西单商场位置添加了一个标注,不论地图移动.缩放,标注都会跟随一起移动,保证其始终指向正确的地理位置. ...

  9. 【 D3.js 高级系列 — 7.0 】 标注地点

    有时需要告诉用户地图上的一些目标,如果该目标是只需要一个坐标就能表示的,称其为"标注". 1. 标注是什么 标注,是指地图上只需要一个坐标即可表示的元素.例如,在经纬度(116, ...

  10. 【百度地图API】建立全国银行位置查询系统(三)——如何在地图上添加银行标注

    原文:[百度地图API]建立全国银行位置查询系统(三)--如何在地图上添加银行标注 <摘要>你将在第三章中学会以下知识: 如何在地图上添加带银行logo的标注?(你也可以换成商场logo, ...

随机推荐

  1. easyxor

    怎么都写不出脚本,看了题解还是蒙蒙的,不过以后遇到这种题也可以根据提示了解他到底怎么出题的,题目明面说了xor 那就主要关注xor以后的结果和xor的对象.方法就好了,其他的就不要去管了 然后对于汇编 ...

  2. goto关键词

    1.前言 goto,一个蒟蒻一用就废,大佬一用就吊炸天的神奇关键字. 今天,我要来盘它!!! 2.goto只能在函数内实现跳转,不能跨函数跳转 因为标号label是局部有效的. #include &l ...

  3. CVE-2017-7921 海康威视(Hikvision)摄像头漏洞复现

    今天看到了海康威视又出了新漏洞--CVE-2021-36260,突然心血来潮想要复现一下,结果搜到了一个旧的漏洞--CVE-2017-7921,而且发现仍然有不少海康威视摄像头后台没有修补这个漏洞,于 ...

  4. 一个.Net开源的协作办公套件,包括文档、表格、演示文稿和表单

    推荐一个开源的文档协作办公套件,可以很好的满足团队对方便.高效.安全的方式来处理文档工作,促进团队协作和信息共享. 项目简介 ONLYOFFICE 是一个开源的办公套件,包括文档.表格.演示文稿和表单 ...

  5. Windows之——pid为4的system进程占用80端口的解决办法

    因为Apache无法启动的原因,用netstat命令查看了一下80端口是否被占用了,如下 C:\Users\Maple>netstat -ano | findstr 0.0.0.0:80 TCP ...

  6. 数据集成平台关于【源平台调度&任务生命周期】

    任务调度者 调度事件 生产任务 调度任务池-异步
AsynDispatcher --source 实例化适配器执行 消费任务 实例化集成应用 DataHub Instance
handleSource ...

  7. 企业数据分析免费试用的BI工具,有什么推荐?

    当涉及到企业数据分析的免费试用BI工具时,有几个受欢迎且功能强大的选项可供选择.以下是对每个工具的详细介绍,帮助您了解其特点和优势. Datainside BI(https://datainside. ...

  8. mysql的用户管理和权限控制

    1.创建用户用 create user '用户名' @ 'localhost' identified by '密码'; 这串代码是创建当地用,是这台电脑的用户,因为有个localhost: creat ...

  9. 2 与HTTP相关的各种概念

    目录 1 与HTTP相关的各种应用 1 网络世界 2 浏览器 3 Web服务器 4 CDN 5 爬虫 2 与HTTP相关的各种协议 1 HTML 2 编程语言 3 WebService 4 WAF 1 ...

  10. Chrome扩展开发实战:快速填充表单

    大家好,我是 dom 哥.我正在写关于 Chrome 扩展开发的系列文章,感兴趣的可以 点个小星星 . 填表单是打工人经常面对的场景,作为一个前端,我经常开发一些PC端的页面,它们主要由表单和表格构成 ...