标注工作流
标注工作流
相关源文件
本章引用的主要源码文件:
README.mdargilla-server/src/argilla_server/api/schemas/v1/suggestions.pyargilla/README.mdargilla/docs/assets/images/getting_started/dataset_configurator.pngargilla/docs/assets/images/how_to_guides/custom_field/3d_object_viewer.pngargilla/docs/assets/images/how_to_guides/custom_field/images_in_two_columns.pngargilla/docs/assets/images/how_to_guides/custom_field/metadata_table.pngargilla/docs/community/adding_language.mdargilla/docs/getting_started/faq.mdargilla/docs/getting_started/how-to-configure-argilla-on-huggingface.mdargilla/docs/getting_started/how-to-deploy-argilla-with-docker.mdargilla/docs/getting_started/quickstart.mdargilla/docs/how_to_guides/annotate.mdargilla/docs/how_to_guides/custom_fields.mdargilla/docs/how_to_guides/dataset.mdargilla/docs/how_to_guides/distribution.mdargilla/docs/how_to_guides/import_export.mdargilla/docs/how_to_guides/index.mdargilla/docs/how_to_guides/query.mdargilla/docs/how_to_guides/record.mdargilla/docs/index.mdargilla/docs/reference/argilla/client.mdargilla/docs/reference/argilla/datasets/dataset_records.mdargilla/docs/reference/argilla/records/metadata.mdargilla/docs/reference/argilla/records/records.mdargilla/docs/reference/argilla/records/responses.mdargilla/docs/reference/argilla/records/suggestions.mdargilla/docs/reference/argilla/search.mdargilla/docs/reference/argilla/settings/fields.mdargilla/docs/tutorials/image_classification.ipynbargilla/docs/tutorials/image_preference.ipynbargilla/docs/tutorials/index.mdargilla/docs/tutorials/text_classification.ipynbargilla/docs/tutorials/token_classification.ipynbargilla/mkdocs.ymlargilla/src/argilla/_models/_dataset_progress.pyargilla/src/argilla/settings/_question.py
本页面提供了 Argilla 中标注工作流的全面指南,解释了不同的标注界面、如何在团队成员之间分配标注任务以及如何跟踪进度。关于创建和管理数据集的信息,请参阅创建和管理数据集。关于查询和过滤数据的信息,请参阅搜索和查询数据。
标注工作流总览
Argilla 中的标注工作流遵循以下主要步骤:
- 数据集创建:定义包含字段和问题的数据集
- 记录添加:向数据集添加记录
- 标注:通过用户界面标注记录
- 进度跟踪:监控完成状态
- 导出:导出已标注的数据集用于模型训练
来源: argilla/docs/how_to_guides/annotate.md argilla/docs/tutorials/text_classification.ipynb argilla/docs/tutorials/token_classification.ipynb
标注界面
Argilla 的标注界面设计灵活且高效,提供两种主要的查看模式:
聚焦视图
默认视图一次只显示一条记录,允许标注者集中精力处理每条记录。此视图适用于:
- 包含多个问题的复杂数据集
- 需要仔细关注的详细文本或图像
- 偏好顺序检查的场景
!聚焦视图
批量视图
以垂直列表形式同时显示多条记录。此视图针对以下场景进行了优化:
- 快速标注大量记录
- 获取数据集概览
- 有效应用过滤器和搜索
- 批量标记相似项目
!批量视图
来源: argilla/docs/how_to_guides/annotate.md
记录状态生命周期
在标注过程中,Argilla 中的记录会经历各种状态:
| 状态 | 描述 | 可转换至 |
|---|---|---|
| 待处理 | 没有响应的记录 | 草稿、已提交、已丢弃 |
| 草稿 | 有部分响应的记录 | 已提交、已丢弃 |
| 已提交 | 完全标注的记录 | 草稿、已丢弃 |
| 已丢弃 | 被拒绝的记录 | 草稿、已提交 |
来源: argilla/docs/how_to_guides/annotate.md
键盘快捷键
Argilla 用户界面提供了键盘快捷键,以提高标注效率:
| 操作 | 按键 |
|---|---|
| 提交响应 | Enter |
| 保存为草稿 | Ctrl+S(Mac 上为 Cmd+S) |
| 丢弃记录 | Backspace |
| 在问题之间移动 | ↑ / ↓ 方向键 |
| 选择标签 | 1、2、3 等 |
| 在记录之间移动 | ← / → 方向键 |
| 激活文本区域 | Shift+Enter |
| 退出文本区域 | Esc |
来源: argilla/docs/how_to_guides/annotate.md
任务分配
Argilla 提供了在团队成员之间高效分配标注任务的功能。这对于需要多个标注者的大型数据集尤其有用。
配置任务分配
任务分配通过创建数据集时的 TaskDistribution 设置进行配置:
# 配置任务分配的示例
settings = rg.Settings(
fields=[rg.TextField(name="text")],
questions=[rg.LabelQuestion(name="label", labels=["positive", "negative"])],
distribution=rg.TaskDistribution(min_submitted=2) # 每条记录需要 2 个标注
)
来源: argilla/docs/how_to_guides/dataset.md argilla/docs/how_to_guides/distribution.md argilla/src/argilla/settings/_task_distribution.py
进度跟踪
Argilla 提供了内置的进度跟踪功能,用于监控标注过程:
- 数据集进度条:显示数据集的整体完成情况
- 个人进度面板:显示单个标注者的统计信息
您还可以通过 Python SDK 以编程方式跟踪进度:
# 获取进度统计信息
progress = dataset.progress
# 检查整体进度
completion_percentage = progress.completion_percentage
total_pending = progress.pending_records
total_completed = progress.completed_records
# 检查特定用户的进度
for user_progress in progress.users:
print(f"用户:{user_progress.user.username}")
print(f"已提交:{user_progress.submitted}")
print(f"待处理:{user_progress.pending}")
来源: argilla/docs/how_to_guides/distribution.md argilla/docs/how_to_guides/annotate.md
高级标注功能
使用模型建议
Argilla 支持向记录添加模型生成的建议,以加快标注过程。建议在用户界面中会显示一个闪烁图标(✨):
# 向记录添加建议
record = rg.Record(
fields={"text": "这是一个示例文本"},
suggestions=[
rg.Suggestion(
question_name="label",
value="positive",
score=0.95,
agent="model_name"
)
]
)
dataset.records.log([record])
来源: argilla/docs/how_to_guides/record.md argilla/docs/reference/argilla/records/suggestions.md argilla/docs/tutorials/text_classification.ipynb argilla/docs/tutorials/token_classification.ipynb
搜索、过滤和排序
Argilla 提供了强大的数据探索功能,帮助标注者浏览大型数据集:
- 关键词搜索:在所有字段或特定字段中搜索
- 语义搜索:使用向量嵌入查找与参考记录相似的记录
- 过滤:按元数据、响应或建议进行过滤
- 排序:按插入时间、更新时间或自定义元数据进行排序
示例:
# 按关键词搜索
query = rg.Query(query="重要关键词")
matching_records = dataset.records(query=query)
# 按元数据过滤
filter_condition = rg.Filter(("metadata.category", "==", "finance"))
filtered_records = dataset.records(rg.Query(filter=filter_condition))
# 按响应状态过滤
status_filter = rg.Filter(("response.status", "==", "submitted"))
submitted_records = dataset.records(rg.Query(filter=status_filter))
# 按向量相似度搜索
similar_query = rg.Similar(name="my_vector", value=[0.1, 0.2, ...])
similar_records = dataset.records(similar_query)
来源: argilla/docs/how_to_guides/query.md argilla/docs/how_to_guides/annotate.md argilla/docs/reference/argilla/search.md
标注任务类型
Argilla 通过不同的问题配置支持各种标注任务类型:
文本分类
用于将文本分类到预定义的类别中,通过 LabelQuestion 或 MultiLabelQuestion 进行配置。
示例工作流:
- 创建包含文本字段和标签问题的数据集
- 添加包含文本内容的记录
- 可选地添加模型生成的标签建议
- 通过选择适当的标签进行标注
- 导出已标注的数据集用于模型训练
Token 分类
用于命名实体识别和序列标注,通过 SpanQuestion 进行配置。
示例工作流:
- 创建包含文本字段和跨度问题的数据集
- 添加包含文本内容的记录
- 可选地添加模型生成的实体建议
- 通过选择文本跨度并分配实体类型进行标注
- 导出已标注的数据集用于模型训练
偏好标注
用于对输出进行排序或评分,通过 RankingQuestion 或 RatingQuestion 进行配置。
示例工作流:
- 创建包含多个文本字段或自定义字段的数据集
- 添加包含不同输出变体的记录
- 通过对输出进行排序或评分进行标注
- 导出已标注的数据集用于偏好学习
图像标注
用于图像分类或多模态任务,通过 ImageField 和各种问题类型进行配置。
示例工作流:
- 创建包含图像字段和适当问题的数据集
- 添加包含图像 URL 或文件路径的记录
- 可选地添加模型生成的建议
- 根据任务要求标注图像
- 导出已标注的数据集用于模型训练
来源:
- argilla/docs/tutorials/text_classification.ipynb
- argilla/docs/tutorials/token_classification.ipynb
- argilla/docs/tutorials/image_classification.ipynb
- argilla/docs/tutorials/image_preference.ipynb
- argilla/docs/reference/argilla/settings/questions.md
- argilla/docs/reference/argilla/settings/fields.md
导出用于模型训练
标注完成后,您可以通过多种方式导出数据集用于模型训练:
# 导出到 Hugging Face Hub
dataset.to_hub(repo_id="my-username/my-dataset")
# 导出到磁盘
dataset.to_disk("path/to/directory")
# 导出为 Hugging Face datasets 格式
hf_dataset = dataset.records.to_datasets()
# 导出为 Python 数据结构
records_dict = dataset.records.to_dict()
records_list = dataset.records.to_list(flatten=True)
导出的数据随后可用于训练或微调模型,如各种教程笔记本中所示。
来源:
- argilla/docs/how_to_guides/import_export.md
- argilla/docs/tutorials/text_classification.ipynb
- argilla/docs/tutorials/token_classification.ipynb
与模型改进周期的集成
Argilla 中的标注工作流是持续模型改进周期的一部分:
这个迭代过程允许通过人工反馈持续改进模型。教程展示了各种任务的工作流,演示了如何在已标注数据上训练模型,并使用它们为新数据生成建议。
来源:
- argilla/docs/tutorials/text_classification.ipynb
- argilla/docs/tutorials/token_classification.ipynb
- argilla/docs/tutorials/image_classification.ipynb