为标注设计数据格式
如何为标注项目组织输入数据(JSON、JSONL、CSV),Potato 期望哪些字段,以及如何规划干净导出到训练流程。
好的标注始于结构良好的输入。每个条目都需要一个稳定的唯一标识符以及待标注的内容;其余一切都是可选的上下文。 一开始就把这件事做对,能省去日后痛苦的返工,因为标注是按你的条目 ID 来关联的。
常见的交换格式有 JSON、JSON Lines(每行一个对象,适合大型数据集)和 CSV。Potato 三者都能读取。完整参考请见数据格式。
每个条目至少需要什么
- 一个永不变更的唯一 ID。标注是按这个 ID 存储的,所以如果你在项目进行中重新编号,就会丢失与现有标签的关联。
- 待标注的内容:一个文本字段、一个图片 URL、一段音频路径,或一条结构化的轨迹。
一个文本任务的 JSONL 文件看起来是这样:
json
{"id": "rev_001", "text": "The battery lasts all day. Highly recommend."}
{"id": "rev_002", "text": "Stopped working after a week."}你需要告诉 Potato 使用哪些键:
yaml
item_properties:
id_key: id
text_key: text
data_files:
- "data/reviews.jsonl"携带上下文,但要与标签分开
额外的字段,比如来源 URL、时间戳、模型名称,可以随每个条目一同传入并展示给标注者,而不会成为标签本身。给它们取清晰的名字,这样日后阅读导出结果会更轻松。
在标注之前先规划导出
尽早决定标注好的数据将如何接入你的流程。Potato 可导出为 JSON、JSONL 和 CSV,也可导出为 ML 原生格式,例如用于序列标注的 CoNLL、Hugging Face Datasets、spaCy,以及用于视觉任务的 COCO/YOLO。预先确定目标格式,能让你知道现在该使用哪些字段和哪种 ID 方案。参见为机器学习导出标注。
yaml
output_annotation_dir: "annotation_output/"
output_annotation_format: "jsonl"