1. 基于 Label studio 的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等
文本抽取任务 Label Studio 使用指南
1.基于Label studio的训练数据标注指南:信息抽取(实体关系抽取)、文本分类等2.基于Label studio的训练数据标注指南:(智能文档)文档抽取任务、PDF、表格、图片抽取标注等3.基于Label studio的训练数据标注指南:文本分类任务4.基于Label studio的训练数据标注指南:情感分析任务观点词抽取、属性抽取
目录
1. 安装
以下标注示例用到的环境配置:
Python 3.8+
label-studio == 1.7.1
paddleocr >= 2.6.0.1
在终端(terminal)使用 pip 安装 label-studio:
安装完成后,运行以下命令行:
在浏览器打开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 模板:
分类类别标签
2.4 任务标注
实体抽取
标注示例:
该标注示例对应的 schema 为:
关系抽取
对于关系抽取,其 P 的类型设置十分重要,需要遵循以下原则
“{S}的{P}为{O}”需要能够构成语义合理的短语。比如对于三元组(S, 父子, O),关系类别为父子是没有问题的。但按照 UIE 当前关系类型 prompt 的构造方式,“S 的父子为 O”这个表达不是很通顺,因此 P 改成孩子更好,即“S 的孩子为 O”。合理的 P 类型设置,将显著提升零样本效果。
该标注示例对应的 schema 为:
事件抽取
该标注示例对应的 schema 为:
句子级分类
该标注示例对应的 schema 为:
实体/评价维度分类
该标注示例对应的 schema 为:
2.5 数据导出
勾选已标注文本 ID,选择导出的文件类型为JSON
,导出数据:
2.6 数据转换
将导出的文件重命名为label_studio.json
后,放入./data
目录下。通过label_studio.py脚本可转为 UIE 的数据格式。
抽取式任务
句子级分类任务
在数据转换阶段,我们会自动构造用于模型训练的 prompt 信息。例如句子级情感分类中,prompt 为情感倾向[正向,负向]
,可以通过prompt_prefix
和options
参数进行配置。
实体/评价维度分类任务
在数据转换阶段,我们会自动构造用于模型训练的 prompt 信息。例如评价维度情感分类中,prompt 为XXX的情感倾向[正向,负向]
,可以通过prompt_prefix
和options
参数进行声明。
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 的构造方式,可选有ch
和en
。默认为ch
。separator
: 实体类别/评价维度与分类标签的分隔符,该参数只对实体/评价维度分类任务有效。默认为"##"。
备注:
默认情况下 label_studio.py 脚本会按照比例将数据划分为 train/dev/test 数据集
每次执行 label_studio.py 脚本,将会覆盖已有的同名数据文件
在模型训练阶段我们推荐构造一些负例以提升模型效果,在数据转换阶段我们内置了这一功能。可通过
negative_ratio
控制自动构造的负样本比例;负样本数量 = negative_ratio * 正样本数量。对于从 label_studio 导出的文件,默认文件中的每条数据都是经过人工正确标注的。
References
版权声明: 本文为 InfoQ 作者【汀丶】的原创文章。
原文链接:【http://xie.infoq.cn/article/74887855bd238b63ad79faf5d】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论