试用开源标注平台 Label Studio
目录
Photo by Josh Sorenson on Unsplash
数据标注是人工智能背后的女人。—— 我说的
初探
在 reddit 上看到一个人提了一个问题:What is your favourite (free) labelling tool?,你最喜欢的(免费)标注工具是什么。由于我一直关注标注工具,而且没找到好用、漂亮的标注工具(甚至一度计划自己做一个),也认为这块很重要,所以就点进去看了下。收获不少,帖子楼主提到的 Prodigy,我点进去看了看,确实很漂亮,但是收费,来看下价格:
罢了。
贫穷让我看到了 Label Studio、doccano 和 brat,brat 我之前就知道,只是没那么美观。剩下两个都很不错,开源也美观,这次我们来看看前者。
以命名实体识别任务的数据标注为例,先来看下使用 Label Studio 进行标注的效果:
查看任务进度:
后端使用的是 flask,前端使用的是 React。
OK,如果你还满意的话可以继续往下看安装、导入数据等部分了。接下来我会以标注 NER 数据为例,介绍如何使用 Label Studio。标注类别有人名、地名、公司名、产品和时间,标注数据放在 sentences.txt
中,内容如下:
1 | 狼牙山,我站在你面前,显得多么矮小呀! |
安装和启动
主要有三种方式 :
- pip:
pip install label-studio
,建议使用 conda 等虚拟环境 - docker:
docker pull heartexlabs/label-studio
,docker 镜像版本可能会滞后 - 源码:
1
2
3git clone https://github.com/heartexlabs/label-studio.git
cd label-studio
python setup.py develop
建议使用 pip 方式安装。
假设我们计划将标注相关文件放在 ner_labeling
文件夹中,你不用事先创建。安装好后使用如下命令启动:
1 | label-studio start ner_labeling --init |
这会初始化这个项目并默认在 8200 端口启动服务,生成一些默认文件和文件夹:
1 | ner_labeling/ |
然后你就可以在 http://{your-server-ip}:8200
访问了。
设置标签
第一步就是要设置标签,具体包括标签名称、颜色等。可以在网页上直接修改并直观看到效果:
如图修改标签名称和颜色,满意后点击左下角的 Save
按钮,保存设置到 config.xml
中。
注意官方并不建议直接修改项目中的文件,建议使用网页或者命令修改。
导入任务
接着点击左上角图标回到主页面,进行第二步导入任务,可以导入 json、csv、tsv 和 txt 等文件格式。对于本文的例子来说,我们使用 txt 文件最为方便,一行是一个句子,直接将文件拖入上传框中即可,完成后会显示导入任务数和耗费时间:
单个 txt 文件大小不超过 1M,如果超过 1M,可以使用
split
命令分割。
关闭后点击右上方导航栏的 Tasks
,可看到导入的任务数和任务存放地址,就是那个 tasks.json
,任务 ID 默认从 0 开始计数,生成的 tasks.json
如下:
1 | { |
开始标注
导入数据后就可以开始标注了,点击导航栏的 Tasks
→ Start Labeling
或者直接点击导航栏的 Labeling
即可开始标注:
每次点击 Submit
就会保存标注好的数据到 completions
文件夹中,同时也可以在 Tasks
中查看已完成的任务及完成时间:
导出数据
导出数据这块是 Label Studio 的一个缺点,官方目前支持的是 JSON、CSV、TSV、CoNLL 2003、COCO 和 Pascal VOC XML,其中 CoNLL 2003 是 ner 数据格式的一种,但是经过我测试导出这种格式并不成功,导出的文件是空的。
但是我们可以先导出为 JSON 文件,然后编写一个脚本转换成我们需要的格式,例如 BIEOS。
优缺点
经过我粗浅的使用,发现一些优缺点:
优点:
- 界面相对美观
- 部署方便
- 配置方便,有多种内置模板
- 导入数据方便
- 可以明晰了解任务的完成度及每条任务的完成时间
- 支持图像、文本和音频等多种数据格式和多种任务数据的标注
缺点:
- 速度较慢,尤其是保存标注结果并进行下一条标注时
- 没有账号体系,但是有一个 multisession mode,暂未深入研究
Reference
- [D] What is your favourite (free) labelling tool? : MachineLearning
- Label Studio
- doccano/doccano: Open source text annotation tool for machine learning practitioner.
- Prodigy · An annotation tool for AI, Machine Learning & NLP
- brat rapid annotation tool