数据标注工具 Label-Studio

数据,标注,工具,label,studio · 浏览次数 : 695

小编点评

**文档抽取任务 Label Studio 使用指南目录1. 安装** 1. 安装必要的库: ```python pip install label-studio==1.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simplelabel ``` **2. 文档抽取任务标注 2.1 项目创建** 1. 点击创建(Create)开始创建一个新的项目。 2. 输入项目名称、描述。 3. 选择 Object Detection with Bounding Boxes 任务类型。 4. 输入项目名称、描述。 5. 添加标签 (可跳过后续在 Setting/Labeling Interface中添加)。 **3. 标签构建 2.3 关系类型标签** ``` ``` **4. 任务标注实体抽取标注示例** ``` { "名称及规格": [ "金额", "单位", "数量" ] } ``` **5. 数据导出 2.5 数据转换** 1. 选择已标注的图片ID。 2. 选择导出的文件类型为 JSON。 3. 导出数据并放入 ./document/data 目录下。 **6. 更多配置 2.7 更多配置** 1. 设置训练数据的保存目录和分隔比例。 2. 选择任务类型,指定类别标签。 3. 设置负例比例和数量。 4. 指定验证集和测试集的划分比例。 **7. 评估指标设置** 1. 设置评估指标的比例。

正文

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

目录

Label-Studio导出数据后可通过label_studio.py脚本轻松将数据转换为输入模型时需要的形式,实现无缝衔接。

1. 安装

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

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

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

pip install label-studio==1.6.0 -i https://pypi.tuna.tsinghua.edu.cn/simplelabel

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

label-studio start
如报:sqlite3.OperationalError: no such function: JSON_VALID => https://www.cnblogs.com/vipsoft/p/17562196.html

image

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

2. 文档抽取任务标注

2.1 项目创建

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

  • 填写项目名称、描述
  • 命名实体识别、关系抽取、事件抽取、实体/评价维度分类任务选择``Object Detection with Bounding Boxes`
  • 文档分类任务选择``Image Classification`
  • 添加标签(也可跳过后续在Setting/Labeling Interface中添加)

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

2.2 数据上传

先从本地或HTTP链接上传图片,然后选择导入本项目。

2.3 标签构建

  • Span实体类型标签
  • Relation关系类型标签
    Relation XML模板:
  <Relations>
    <Relation value="单位"/>
    <Relation value="数量"/>
    <Relation value="金额"/>
  </Relations>
  • 分类类别标签

2.4 任务标注

  • 实体抽取

    • 标注示例:

    • 该标注示例对应的schema为:

      schema = ['开票日期', '名称', '纳税人识别号', '地址、电话', '开户行及账号', '金额', '税额', '价税合计', 'No', '税率']
      
  • 关系抽取

    • 进入标签

    • Step 1. 标注主体(Subject)及客体(Object)

    • Step 2. 关系连线,箭头方向由主体(Subject)指向客体(Object)

    • Step 3. 添加对应关系类型标签

    • Step 4. 完成标注

    • 该标注示例对应的schema为:

      schema = {
          '名称及规格': [
              '金额',
              '单位',
              '数量'
          ]
      }
      
  • 文档分类

    • 标注示例

    • 该标注示例对应的schema为:

      schema = '文档类别[发票,报关单]'
      

2.5 数据导出

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

2.6 数据转换

image
image
image

将导出的文件重命名为label_studio.json后,放入./document/data目录下,并将对应的标注图片放入./document/data/images目录下(图片的文件名需与上传到label studio时的命名一致)。通过label_studio.py脚本可转为UIE的数据格式。

  • 路径示例
./document/data/
├── images # 图片目录
│   ├── b0.jpg # 原始图片(文件名需与上传到label studio时的命名一致)
│   └── b1.jpg
└── label_studio.json # 从label studio导出的标注文件
  • 抽取式任务
python label_studio.py \
    --label_studio_file ./document/data/label_studio.json \
    --save_dir ./document/data \
    --splits 0.8 0.1 0.1\
    --task_type ext
  • 文档分类任务
python label_studio.py \
    --label_studio_file ./document/data/label_studio.json \
    --save_dir ./document/data \
    --splits 0.8 0.1 0.1 \
    --task_type cls \
    --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.
  • separator: 实体类别/评价维度与分类标签的分隔符,该参数只对实体/评价维度分类任务有效。默认为"##"。
  • schema_lang:选择schema的语言,将会应该训练数据prompt的构造方式,可选有chen。默认为ch
  • ocr_lang:选择OCR的语言,可选有chen。默认为ch
  • layout_analysis:是否使用PPStructure对文档进行布局分析,该参数只对文档类型标注任务有效。默认为False。

备注:

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

References

https://gitee.com/PaddlePaddle/PaddleNLP/blob/develop/applications/information_extraction/label_studio_doc.md

注意

我用的 NLP是 V2.5.0 、 label_studio v1.6.0 ,可能版本问题,运行 label_studio.py 时报
python paddlenlp\utils\tools.py items["text"] = line["data"]["text"]
解决方法:
在 Label_Studio 导出的 json 里,找到 data 块,加上 text ,不知道为啥导出来的没这个 text
image

与数据标注工具 Label-Studio相似的内容:

数据标注工具 Label-Studio

Label-Studio导出数据后可通过label_studio.py脚本轻松将数据转换为输入模型时需要的形式,实现无缝衔接。 items["text"] = line["data"]["text"]

数据标注工具 doccano | 文本分类(Text Classification)

目录安装运行 doccano打开 doccanno创建项目上传数据定义标签添加成员开始标注导出数据查看数据统计 数据标注工具 Label-Studio 安装 打开命令行(cmd、terminal)执行安装命令 # Python 3.8+ pip install doccano -i https://

数据标注工具 doccano | 命名实体识别(Named Entity Recognition,简称NER)

目录安装数据准备创建项目创建抽取式任务上传定义标签构建抽取式任务标签任务标注命名实体识别导出数据查看数据 命名实体识别(Named Entity Recognition,简称NER),是指识别文本中具有特定意义的实体。在开放域信息抽取中,抽取的类别没有限制,用户可以自己定义。 安装 详见:数据标注工

Workflow,要不要了解一下

摘要:Workflow本质是开发者基于实际业务场景开发用于部署模型或应用的流水线工具。 Workflow(也称工作流,下文中均可使用工作流进行描述)本质是开发者基于实际业务场景开发用于部署模型或应用的流水线工具。在机器学习的场景中,流水线可能会覆盖数据标注、数据处理、模型开发/训练、模型评估、应用开

【matplotlib基础】--坐标轴

Matplotlib的坐标轴是用于在绘图中表示数据的位置的工具。 坐标轴是图像中的水平和垂直线,它们通常表示为 x 轴和 y 轴。坐标轴的作用是帮助观察者了解图像中数据的位置和大小,通常标有数字或标签,以指示特定的值在图像中的位置。 1. 坐标轴范围 Matplotlib绘制图形时,会自动根据X,Y

【matplotlib基础】--刻度

Matplotlib中刻度是用于在绘图中表示数据大小的工具。 刻度是坐标轴上的数字或标签,用于指示数据的大小或值,通常以整数或小数表示,具体取决于坐标轴的类型和限制。 1. 主次刻度 默认的绘制时,坐标轴只有默认的主要刻度,如下所示: from matplotlib.ticker import Mu

【matplotlib基础】--图例

Matplotlib 中的图例是帮助观察者理解图像数据的重要工具。图例通常包含在图像中,用于解释不同的颜色、形状、标签和其他元素。 1. 主要参数 当不设置图例的参数时,默认的图例是这样的。 import numpy as np import matplotlib.pyplot as plt x =

揭秘报表新玩法!标配插件不再单调,如何用柱形图插件让你的报表瞬间高大上!

> 摘要:本文由葡萄城技术团队于博客园原创并首发。葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 # 前言 图表作为一款用于可视化数据的工具,可以帮助我们更好的分析和理解数据,并发现数据之间的关系和趋势。下面以柱形图为例介绍如何使用JavaScript在报表中引入图表。 本文使用软件

4.4 C++ Boost 数据集序列化库

Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量、可移植、高效的C应用程序。Boost库可以作为标准C库的后备,通常被称为准标准库,是C标准化进程的重要开发引擎之一。使用Boost库可以加速C应用程序的开发过程,提高代码质量和性能,并且可以适用于多种不同的系统平台和编译器。Boost库已被广泛应用于许多不同领域的C++应用程序

Python——比 Seaborn 更好的相关性热力图:Biokit Corrplot

在 Python 中我们日常分析数据的过程当中经常需要对数据进行相关性分析,相关性热力图(Correlation Heatmap)是我们经常使用的一种工具。通过相关性热力图,我们可以通过为相关性不同的数据使用不同深浅的不同颜色进行标记,从而直观地观察两两数据序列之间的相关性情况——这将有助于我们进一...