原创·作者
Johnson
职业
菱歌科技Datatouch项目算法工程师
研究方向
自然语言处理
本示例是NLP示例,实际也可以用于图像工作。
官方仓库代码:
label-studio:heartexlabs/label-studio
textbrewer:airaria/TextBrewer
我的测试代码:
johnson/label-studio
johnson/TextBrewer
一、简介1.1在NLP日常工作中,我们需要按几个步骤进行数据处理和模型训练。
1.先收集数据:通过爬虫或者其它工具,将数据结构化保存到数据库中。
2.数据预处理:其中大部分都是无标签数据,对于无标签数据的可以用无监督做预训练模型,也可以用经过整理后进行标注变成有标签数据。
3.数据标注:对于NLP的标注,我们常用的标注包括文本分类,命名实体识别,文本摘要等。
4.模型训练:对打好标签的数据进行训练,参数调优等
5.模型评估:对测试数据或开发数据进行评估,判断模型好坏
6.不断重复1-5步,优化模型和数据,提高模型性能。
图1、流程图1.2通常完成这些步骤耗时数周的时间,所以我们需要整合相关功能到自动化的平台。
本文使用的是工具有:
label-studio:数据标注工具
transformers:高度集成的模型训练套件
TextBrewer:哈工大模型蒸馏工具
flask:自定义一些api,把标注和模型训练串联起来
二、label-studio2.1label-studio扮演的角色
如下图,label-studio用于连接各个数据导入,数据标注,调用模型训练标注好的数据的作用。
图2预览图:关键字情感分类的标注示例,可以关联多个模型的预测结果,例如使用bert和electra2个模型作为ML后端
图32.2Features
可配置:使用jsxtags配置,自定义配置标注页面,所以可标注格式很多,样式也可以自定义
协作标注:由两个或更多人label同一任务,然后比较结果,还支持用户名密码简单的认证。支持按预测的模型预测的probability的大小顺序标注,默认按导入数据的索引顺序标注。
多种数据类型:您定义自己的具有不同的label类型,Images,Audios,Texts,HTMLs,已有大量模板,直接使用接口
支持导入格式:JSON,CSV,TSV,RARandZIParchives,支持API导入数据。
NPM嵌入:前端是NPM包,NPMpackage.您可以将其包含在您的项目中.
机器学习:机器学习的集成支持。可视化并比较来自不同模型的预测。pre-labeling功能很好,可以实现用训练的模型预标注数据,那么结果人工标注前就比较方便,而且还知道模型预测的怎么样
支持docker容器部署
方便的API接口
具体支持的标注内容如下:
三、使用方法
3.1调用API
我们要利用label-studio的API实现以下功能:
导入数据--人工打开label-studio标注数据--训练模型--训练好的模型预测未标注数据,辅助人员标注
/api/projectGET返回项目的设置和状态,状态包括任务和完成的数量POST创建一个任务,带desc参数作为项目的标题PATCH更新任务设置
/api/project/configPOST修改配置文件
/api/project/importPOST导入数据
/api/project/exportGET导出数据
/api/tasksGET获取所有数据;DELETE方法删除所有task数据,删除所有task,数据,同时会删除已标注的数据
/api/tasks/task_idGET获取第几条数据;DELETEdeletespecifictask
/api/tasks/task_id/