关于人工智能:1基于Label-studio的训练数据标注指南信息抽取实体关系抽取文本分类等

58次阅读

共计 3406 个字符,预计需要花费 9 分钟才能阅读完成。

文本抽取工作 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 标注

正文完
 0