1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等

news/2024/12/4 23:56:06/

文本抽取任务Label Studio使用指南

在这里插入图片描述
1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等
2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等
3.基于Label studio的训练数据标注指南:文本分类任务
4.基于Label studio的训练数据标注指南:情感分析任务观点词抽取、属性抽取

目录

  • 1. 安装
  • 2. 文本抽取任务标注
    • 2.1 项目创建
    • 2.2 数据上传
    • 2.3 标签构建
    • 2.4 任务标注
    • 2.5 数据导出
    • 2.6 数据转换
    • 2.7 更多配置

1. 安装

以下标注示例用到的环境配置:

  • Python 3.8+
  • label-studio == 1.7.1
  • paddleocr >= 2.6.0.1

在终端(terminal)使用pip安装label-studio:

pip install label-studio==1.7.1
pip install label-studio
#安装过程报错ERROR: Could not install packages due to an OSError: [WinError 5] 拒绝访问
#添加管理员权限
pip install --user label-studio
#如果途中出现警告:WARNING: Ignoring invalid distribution -sonschema (d:\anaconda\envs\paddlenlp\lib\site-packages)
1.原因可能是之前下载库的时候没有成功或者中途退出,当包出现问题(例如缺少依赖项或与其他包冲突)时,可能会出现此警告消息。如果包与正在使用的 Python 版本不兼容,也可能发生这种情况。
2.到提示的目录site-packages下删除~ip开头的目录。
3.然后pip重新安装库即可。
#如果怕环境冲突就新建虚拟环境,单独安装
conda create -n test  python=3.8 #test为创建的虚拟环境名称

安装完成后,运行以下命令行:

label-studio start

在浏览器打开http://localhost:8080/,输入用户名和密码登录,开始使用label-studio进行标注。

在这里插入图片描述

2. 文本抽取任务标注

2.1 项目创建

点击创建(Create)开始创建一个新的项目,填写项目名称、描述,然后选择Object Detection with Bounding Boxes

  • 填写项目名称、描述

在这里插入图片描述

  • 命名实体识别、关系抽取、事件抽取、实体/评价维度分类任务选择``Relation Extraction`。

在这里插入图片描述

  • 文本分类、句子级情感倾向分类任务选择Text Classification

  • 添加标签(也可跳过后续在Setting/Labeling Interface中配置)

在这里插入图片描述

图中展示了实体类型标签的构建,其他类型标签的构建可参考2.3标签构建

2.2 数据上传

先从本地上传txt格式文件,选择List of tasks,然后选择导入本项目。

2.3 标签构建

  • Span类型标签
  • Relation类型标签

Relation XML模板:

  <Relations><Relation value="歌手"/><Relation value="发行时间"/><Relation value="所属专辑"/></Relations>
  • 分类类别标签

2.4 任务标注

  • 实体抽取

标注示例:

在这里插入图片描述

该标注示例对应的schema为:

schema = ['时间','选手','赛事名称','得分'
]
  • 关系抽取

在这里插入图片描述

对于关系抽取,其P的类型设置十分重要,需要遵循以下原则

“{S}的{P}为{O}”需要能够构成语义合理的短语。比如对于三元组(S, 父子, O),关系类别为父子是没有问题的。但按照UIE当前关系类型prompt的构造方式,“S的父子为O”这个表达不是很通顺,因此P改成孩子更好,即“S的孩子为O”。合理的P类型设置,将显著提升零样本效果

该标注示例对应的schema为:

schema = {'作品名': ['歌手','发行时间','所属专辑']
}
  • 事件抽取

该标注示例对应的schema为:

schema = {'地震触发词': ['时间','震级']
}
  • 句子级分类

该标注示例对应的schema为:

schema = '情感倾向[正向,负向]'
  • 实体/评价维度分类

该标注示例对应的schema为:

schema = {'评价维度': ['观点词','情感倾向[正向,负向]']
}

2.5 数据导出

勾选已标注文本ID,选择导出的文件类型为JSON,导出数据:

在这里插入图片描述

2.6 数据转换

将导出的文件重命名为label_studio.json后,放入./data目录下。通过label_studio.py脚本可转为UIE的数据格式。

  • 抽取式任务
python label_studio.py \--label_studio_file ./data/label_studio.json \--save_dir ./data \--splits 0.8 0.1 0.1 \--task_type ext
  • 句子级分类任务

在数据转换阶段,我们会自动构造用于模型训练的prompt信息。例如句子级情感分类中,prompt为情感倾向[正向,负向],可以通过prompt_prefixoptions参数进行配置。

python label_studio.py \--label_studio_file ./data/label_studio.json \--task_type cls \--save_dir ./data \--splits 0.8 0.1 0.1 \--prompt_prefix "情感倾向" \--options "正向" "负向"
  • 实体/评价维度分类任务

在数据转换阶段,我们会自动构造用于模型训练的prompt信息。例如评价维度情感分类中,prompt为XXX的情感倾向[正向,负向],可以通过prompt_prefixoptions参数进行声明。

python label_studio.py \--label_studio_file ./data/label_studio.json \--task_type ext \--save_dir ./data \--splits 0.8 0.1 0.1 \--prompt_prefix "情感倾向" \--options "正向" "负向" \--separator "##"

2.7 更多配置

  • label_studio_file: 从label studio导出的数据标注文件。
  • save_dir: 训练数据的保存目录,默认存储在data目录下。
  • negative_ratio: 最大负例比例,该参数只对抽取类型任务有效,适当构造负例可提升模型效果。负例数量和实际的标签数量有关,最大负例数量 = negative_ratio * 正例数量。该参数只对训练集有效,默认为5。为了保证评估指标的准确性,验证集和测试集默认构造全负例。
  • splits: 划分数据集时训练集、验证集所占的比例。默认为[0.8, 0.1, 0.1]表示按照8:1:1的比例将数据划分为训练集、验证集和测试集。
  • task_type: 选择任务类型,可选有抽取和分类两种类型的任务。
  • options: 指定分类任务的类别标签,该参数只对分类类型任务有效。默认为[“正向”, “负向”]。
  • prompt_prefix: 声明分类任务的prompt前缀信息,该参数只对分类类型任务有效。默认为"情感倾向"。
  • is_shuffle: 是否对数据集进行随机打散,默认为True。
  • seed: 随机种子,默认为1000.
  • schema_lang:选择schema的语言,将会应该训练数据prompt的构造方式,可选有chen。默认为ch
  • separator: 实体类别/评价维度与分类标签的分隔符,该参数只对实体/评价维度分类任务有效。默认为"##"。

备注:

  • 默认情况下 label_studio.py 脚本会按照比例将数据划分为 train/dev/test 数据集
  • 每次执行 label_studio.py 脚本,将会覆盖已有的同名数据文件
  • 在模型训练阶段我们推荐构造一些负例以提升模型效果,在数据转换阶段我们内置了这一功能。可通过negative_ratio控制自动构造的负样本比例;负样本数量 = negative_ratio * 正样本数量。
  • 对于从label_studio导出的文件,默认文件中的每条数据都是经过人工正确标注的。

References

  • Label Studio
  • label studio标注

http://www.ppmy.cn/news/29264.html

相关文章

Nginx 入门

Nginx 入门源码方式安装安装配置开启 NGINXdocker方式安装寻找Nginx镜像下载Nginx镜像创建Nginx配置文件创建Nginx容器并运行首先 Nginx 是一个网络服务器&#xff0c;使用 非阻塞、事件驱动 架构&#xff08;有点像 Node.js&#xff09;实现高性能。也能用来做负载均衡、HTTP …

Java开发 - 分页查询初体验

前言在上一篇&#xff0c;我们对es进行了深入讲解&#xff0c;相信看过的小伙伴已经能基本掌握es的使用方法&#xff0c;我们知道&#xff0c;es主要针对的是搜索条件&#xff0c;在这方面es具有无可比拟的优势&#xff0c;但我们也会注意到&#xff0c;有时候搜索条件过于宽泛…

有些笑话,外行人根本看不懂,只有程序员看了会狂笑不止

我一直都觉得我们写代码的程序员与众不同&#xff0c;就连笑话都跟别人不一样。 如果让外行人来看我们一些我们觉得好笑的东西&#xff0c;他们根本不知道笑点在哪里。 不信你来瞧瞧&#xff0c;但凡有看不懂的地方&#xff0c;说明你的道行还不够深。 1.大多数人开始学编程时…

【spring】IOC

IOC Inversion of Control&#xff0c;翻译为“控制反转”或“反转控制” 把创建对象过程交给 Spring 进行管理, 强调的是原来在程序中创建Bean的权利反转给第三方 这里使用到了工厂模式&#xff0c;使对象的创建和使用分离&#xff0c;实现解耦 底层原理 原始方式 耦合度太…

windows 下 安裝mysql 5.7.41 (64位) 超简单方式

文章目录1. 安装包下载2.安装步骤3. 服务卸载方式4. 配上 my.ini 常用配置1. 安装包下载 注意&#xff0c;截至2023年2月23日&#xff0c;MySQL所有版本不提供ARM芯片架构的Windows版本(8.0.12开始支持Red Hat系统的ARM版本)&#xff0c;所以ARM架构的Windows无法安装MySQL&am…

一、Sping框架引入

OCP开闭原则 什么是OCP&#xff1f; OCP是软件七大开发原则当中最基本的一个原则&#xff1a;开闭原则 对什么开&#xff1f;对扩展开放。 对什么闭&#xff1f;对修改关闭。OCP原则是最核心的&#xff0c;最基本的&#xff0c;其他的六个原则都是为这个原则服务的。OCP开闭原则…

【2223sW2】LOG1

写在前面 好好学习&#xff0c;走出宿舍&#xff0c;走向毕设&#xff01; 一些心路历程记录&#xff0c;很少有代码出现 因为鬼知道哪条代码到时候变成毕设的一部分了咧&#xff0c;还是不要给自己的查重挖坑罢了 23.2.27 文件批量重命名 为了给学姐先整出来一批训练数据&…

分布式微服务架构下网络通信的底层实现原理

在分布式架构中&#xff0c;网络通信是底层基础&#xff0c;没有网络&#xff0c;也就没有所谓的分布式架构。只有通过网络才能使得一大片机器互相协作&#xff0c;共同完成一件事情。 同样&#xff0c;在大规模的系统架构中&#xff0c;应用吞吐量上不去、网络存在通信延迟、我…