当前位置: 首页 > news >正文

doccano 文本标注工具使用

最近在做面向大模型的文本标注工作,涉及到多人协同的问题,因此用到了doccano工具。

这个工具可以使用docker进行安装,安装之后的启动也都比较简单。

关于基础使用(例如管理员登录、新建任务、上传数据集等),可以参照这篇博客进行操作。

本文主要介绍多人协作场景下(包括新建用户、标注与质检、标注结果导出),如何针对多篇文档进行问答。

假设现在有4篇文档,有两位同学进行标注,一人进行质检,一人负责验收,还有一个admin,只有admin可以进行标注数据的导出。

1.Docker安装和启动

参照doccano官网的示例,可以下载并运行相关的镜像:

docker pull doccano/doccanodocker container create --name doccano \-e "ADMIN_USERNAME=admin" \-e "ADMIN_EMAIL=admin@example.com" \-e "ADMIN_PASSWORD=password" \-v doccano-db:/data \-p 8000:8000 doccano/doccanodocker container start doccano

然后执行docker ps 命令,确认已经开启doccano服务,对应的显示如下:

(base) xxx@xxx:~$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
756ac64acf56        doccano/doccano     "/doccano/tools/run.…"   6 hours ago         Up 4 seconds        0.0.0.0:8090->8000/tcp   doccano

之后可以访问http://0.0.0.0:8090/并看到对应的界面。

2.基础使用

接下来介绍管理员登录、新建任务、上传数据集等基础操作。

2.1管理员登陆

使用上面docker container create中的账户和密码即可。

2.2新建任务

只需要点击登录之后左上角的“create”按钮即可。不同版本的“create”按钮可能会略有不同。我选择了新建“Sequence to sequence”任务。
在这里插入图片描述创建完成后,可以自行填写项目名称和说明信息,然后参照如下进行设置,最下面两个设置代表打乱图片顺序、在标注小组内共享标注成果。当勾选共享时,就可以进行多人标注,每个人都可以看到其他人的标注结果,并且可以将任务量平均的分到每个人身上。在这里插入图片描述

2.3上传数据集

由于我的任务是在一些文档上进行提问,因此我把数据转化为了json格式,其中的text是文本内容,label可以换为其他内容,例如标注人员的编号或姓名。其中一条数据示例如下:

[{"label": "1", "text": "去年 ChatGPT 一声枪响,在全球范围内点燃了深度学习的热潮......}] 

人工标注的内容也会被放到label字段中,你可以通过添加字符串来方便区分(我用了4个#)。假设你增加了一个问题“gpt是什么时候发布的####去年”,那么上面的这条数据,在最终输出时,就会变为下面的样子:

[{"label": ["1","gpt是什么时候发布的####去年"], "text": "去年 ChatGPT 一声枪响,在全球范围内点燃了深度学习的热潮......}] 

原始数据就是我从csdn上随便找的四篇文章,我把他们复制到了txt_folder下的4个txt中,生成的json文件存放于all_data.json中。json有两个字段,text是原始内容,label可以用来区分该条数据具体由哪位标注人员负责。由txt生成json的代码如下:

import os
import jsonif __name__=="__main__":paths = os.walk(r'./txt_folder/')data=[]index=1for path, dir_lst, file_lst in paths:for file_name in file_lst:article={}tmp_str = ""with open(os.path.join(path, file_name)) as f:for line in f.readlines():tmp_str+=linearticle["text"]=tmp_str.replace("\n\n","\n")article["lable"]=str(index)index+=1data.append(article)json_str=json.dumps(data,ensure_ascii=False)with open("all_data.json", "w") as file:file.write(json_str)

制作好数据集之后,点击下图的import dataset选项,导入刚才制作好的数据集。我选择的是json类型。图片中已经有了我制作好的数据集,正常情况下图中的绿色标签是看不到的。
在这里插入图片描述

3多人标注

3.1 新建用户

多人标注首先需要新建用户。可以访问 http://0.0.0.0:8090/admin/auth/user/add/并创建用户。,
然后切换回新建的工程,点击左侧的members,然后再弹出的页面中点击add按钮,添加人员并指定角色。其中的annotator可以进行数据标注,annotation approver可以进行审核与修改,project admin可以进行标注结果的下载。

在这里插入图片描述

3.2 标注与质检

标注时,切换到相应annotator的账户,点击图片右侧的“annotate”即可进行标注。
在这里插入图片描述
点击之后,上方是数据集中的“text”中的内容,可以在下方的输入框中进行提问。我用####隔开了问题和答案,后续可以用代码分开。你也可以尝试加入更多的内容,以满足不同的标注需求。注意标注人员不要点击页面中左上角的对勾和叉子,这需要留给质检人员处理。
在这里插入图片描述
假设现在有两个标注人员,共有四个标注文档要处理,可以通过在上传数据时设置label来区分不同的任务的负责人。他们按照label的指引,完成自己负责部分的标注后就可以质检了。

现在切换到质检人员的帐号,确认无误后点击左上角的叉子,并使其变为对勾。每改掉一个叉子,右侧的绿色进度条就会有变化。达到100%即代表任务完成质检。
在这里插入图片描述

3.3标注结果导出

切换到admin账户,点击action下的export dataset,即可导出数据。

我选择了导出为json数据,可以看到,文件中多了一些标注人员提出的问答对,在下图中用黄色标出:
在这里插入图片描述

相关文章:

doccano 文本标注工具使用

最近在做面向大模型的文本标注工作,涉及到多人协同的问题,因此用到了doccano工具。 这个工具可以使用docker进行安装,安装之后的启动也都比较简单。 关于基础使用(例如管理员登录、新建任务、上传数据集等)&#xff…...

快速排序算法的递归和非递归

基本思路 选择一个基准值,将数组划分三个区域,小于基准值的区域位于左侧,等于基准值的区域位于中间,大于基准值的区域位于右侧。将大于和小于区域继续进行分区,周而复始,不断进行分区和交换,直…...

Maven无法拉取SNAPSHOT依赖的解决办法

背景 自己所在的部门主要是为其他项目组提供基础组件,如果需要使用新特性,其他项目组还会经常引用SNAPSHOT版本的组件进行开发测试。平时自己做测试的时候,因为手里有源码,所以每次都是先执行 mvn install 在本地安装后&#xff…...

day16-面向对象综合练习(上)

1. 设计游戏的目的 锻炼逻辑思维能力利用Java的图形化界面,写一个项目,知道前面学习的知识点在实际开发中的应用场景 2. 游戏的最终效果呈现 Hello,各位同学大家好。今天,我们要写一个非常有意思的小游戏 —《拼图小游戏》 我们…...

在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发环境

目录 在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发环境一 Fyne 和 MSYS2简介1.1 Fyne1.2 MSYS2 二 安装 MSYS22.1 下载MSYS22.2 安装2.3 环境变量设置2.4 检测安装环境 三 参考文档 在Windos 10专业版搭建Fyne(Go 跨平台GUI)开发…...

漫谈:C、C++字符串的困局

由于历史的原因,C、C字符串是个很让程序员头疼的东西。 字符串被解读为字符数组,但是又不等价于字符数组,而是带有附加的结束符的字符数组。 结束符‘\0’也是一个字符,但是又不计算在字符串长度里面(strlen&#xff0…...

基于python+selenium的自动批量添加

场景 点击添加”新增“按钮,弹出”新增对话框“,输入各种数据,然后点击”确定“按钮,如此循环。数量多,这样操作累人。 selenium Selenium 是一个用于自动化 Web 浏览器操作的库,可以实现模拟点击、输入…...

gdb监视

怀疑踩内存了,如何利用gdb监视一段内存的值 在实际情况中,如果怀疑一个进程中的变量被踩内存了,但是不知道什么时候会被踩,就可以用下面的方法进行debug。GDB(GNU Debugger)是一个功能强大的调试工具&…...

STM32基础知识点总结

一、基础知识点 1、课程体系介绍 单片机概述arm体系结构STM32开发环境搭建 STM32-GPIO编程-点亮世界的那盏灯 STM32-USART串口应用SPI液晶屏 STM32-中断系统 STM32-时钟系统 STM32-ADC DMA 温湿度传感器-DHT11 2.如何学习单片机课程 多听理论、多理解、有问题及时提问 自己多…...

Python vs C#:首先学习哪种编程语言最好?

进入编码可能很困难。 最艰难的部分? 决定先学什么语言。 当谈到 Python 与 C# 时,可能很难知道在您的决定中要考虑哪些因素。 我们为您提供了有关这些全明星编程语言的所有信息。 什么是 C#? 自 2000 年作为 Microsoft Visual Studio 的一部分开发 C# 以来,它一直是开发人…...

代理IP和Socks5代理:跨界电商与全球爬虫的关键技术

跨界电商在全球化市场中崭露头角,而代理IP和Socks5代理则成为实现全球市场洞察和数据采集的不可或缺的工具。本文将深入探讨这两种代理技术在跨界电商、爬虫技术和出海战略中的关键作用。 引言: 介绍跨界电商的崛起和全球市场的机遇与挑战。引出代理IP…...

CentOS 7 调优之周期性的访问中断

文章目录 背景问题描述原因分析解决方案相关版本 背景 操作系统版本:CentOS Linux release 7.6.1810 (Core) 操作系统镜像安装后,未进行任何调整。正常部署应用,应用在 CentOS 7.9 未出现过此类现象。 问题描述 问题描述:负载教…...

SpringBoot表现层数据一致性

1.定义Restful类 说明:使用Data注解是Lombok库提供的一个注解,用于自动生成类的getter、setter、equals、hashcode和toString方法。 package com.forever.controller.utils;import lombok.Data;Data public class Restful {private Boolean flag;//dat…...

vue路由-两个树形结构数据-递归处理方法

1.vue静态路由 const dynamicRoutes [{path: /,name: /,component: () > import(//layout/index.vue),redirect: /home,meta: {isKeepAlive: true,},children: [{path: /home,name: home,component: () > import(//views/home/index.vue),meta: {title: 首页,isLink: ,…...

JSP SSM 成果展示系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSP SSM 冬奥建设成果展示系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的 源代码和数据库,系统主…...

脚本:python绘制七夕爱心

文章目录 效果脚本Reference 效果 脚本 import random from math import sin, cos, pi, log from tkinter import *CANVAS_WIDTH 640 # 画布的宽 CANVAS_HEIGHT 640 # 画布的高 CANVAS_CENTER_X CANVAS_WIDTH / 2 # 画布中心的X轴坐标 CANVAS_CENTER_Y CANVAS_HEIGHT /…...

L1 项目概述与Hadoop部署

1.技术栈:HadoopHiveSqoopFlumeAzkaban Flume采集Nginx web服务器上的日志,采集完成后存储到Hadoop的平台,最终存储到HDFS上,处理和分析采用Hive的方式,处理完之后利用Sqoop导出到Mysql中,最终利用一个Java…...

关键词文章生成器-标题文章生成器

那就是如何在根据标题生成文章和根据关键词生成文章之间找到平衡之道。在这个信息时代,内容创作已经成为了一项重要的工作,无论是博客作者、社交媒体达人还是企业宣传,都需要不断地输出优质的内容。但是,我们常常陷入一个两难的困…...

深入了解MySQL中的JSON_ARRAYAGG和JSON_OBJECT函数

在MySQL数据库中,JSON格式的数据处理已经变得越来越常见。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它可以用来存储和表示结构化的数据。MySQL提供了一些功能强大的JSON函数,其中两个关键的函数是…...

Ubuntu22.04开启后屏幕黄屏

1. 故障现象 系统:Ubuntu22.04 现象:电脑从开机到进入桌面一直屏幕黄屏 2. 故障分析 可能为屏幕色彩调节出现故障 3. 解决方案 系统设置——》色彩——》删除原来的配置(remove profile)——》添加配置Colorspace:Compatibl…...

TileBoard 使用教程

TileBoard 使用教程 【免费下载链接】TileBoard A simple yet highly configurable Dashboard for HomeAssistant 项目地址: https://gitcode.com/gh_mirrors/ti/TileBoard 项目介绍 TileBoard 是一个简单且高度可定制的 Home Assistant 仪表板。该项目的主要目标是创建…...

Figma界面汉化插件:3分钟让你的设计工具说中文

Figma界面汉化插件:3分钟让你的设计工具说中文 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 你是否曾因Figma的全英文界面而头疼不已?菜单看不懂、属性面板一头…...

优化FBG重叠光谱寻峰解调的轻量化卷积神经网络算法

为了优化FBG重叠光谱寻峰解调的轻量化卷积神经网络算法,将RMSE降低到10pm以下且准确度达到99%以上,下面为你介绍三个类似的轻量化算法,并提供使用Python实现的示例代码。 1. MobileNetV2 MobileNetV2 是一种轻量级的卷积神经网络,它使用了倒置残差结构和线性瓶颈层,能够…...

PLC梯形图转C语言核心算法解析(IEC 61131-3标准深度适配版)

第一章:PLC梯形图转C语言核心算法解析(IEC 61131-3标准深度适配版)梯形图(LAD)作为IEC 61131-3标准中定义的图形化编程语言,其语义本质是基于扫描周期、触点逻辑与线圈驱动的状态流模型。将LAD转换为可移植…...

qmc-decoder:释放被锁住的音乐宝藏,让QQ音乐文件重获自由

qmc-decoder:释放被锁住的音乐宝藏,让QQ音乐文件重获自由 【免费下载链接】qmc-decoder Fastest & best convert qmc 2 mp3 | flac tools 项目地址: https://gitcode.com/gh_mirrors/qm/qmc-decoder 你是否曾有过这样的体验?在QQ音…...

2025年工业控制系统安全新趋势:Modbus协议AI防御与量子加密实战(含PLC防护策略与工具包)

1. 2025年工控安全新挑战:当Modbus遇上AI攻击 最近两年我参与了几十个工业控制系统的安全评估项目,发现一个明显的趋势:攻击者开始大规模使用AI技术针对Modbus协议进行自动化攻击。去年某汽车制造厂的案例让我印象深刻——攻击者用强化学习算…...

高端家用净水器结构设计

高端家用净水器的结构设计,核心在于通过多级过滤系统的协同作用,实现水质的深度净化。其核心组件包括前置过滤单元、活性炭吸附层、反渗透膜模块及后置改善装置。前置过滤单元通常采用高精度滤网,可拦截水中大颗粒杂质,如泥沙、铁…...

Unity资源包提取与编辑全指南:UABEAvalonia跨平台工具技术解析与实战应用

Unity资源包提取与编辑全指南:UABEAvalonia跨平台工具技术解析与实战应用 【免费下载链接】UABEA UABEA: 这是一个用于新版本Unity的C# Asset Bundle Extractor(资源包提取器),用于提取游戏中的资源。 项目地址: https://gitcod…...

Nunchaku-flux-1-dev技术解析:深入其卷积神经网络与注意力机制

Nunchaku-flux-1-dev技术解析:深入其卷积神经网络与注意力机制 每次看到AI生成的精美图片,你是不是也会好奇,它到底是怎么从一堆看似随机的“噪声”里,一步步变出那些细节丰富、构图合理的画面的?今天,我们…...

DeepChat跨平台部署指南:从环境诊断到生产构建的全流程实践

DeepChat跨平台部署指南:从环境诊断到生产构建的全流程实践 【免费下载链接】deepchat DeepChat - 连接强大AI与个人世界的智能助手 | DeepChat - A smart assistant that connects powerful AI to your personal world 项目地址: https://gitcode.com/GitHub_Tre…...