Label Studio 怎么导入 CSV 文本任务?保留样本编号并处理逗号换行

准备带来源编号的 CSV 文本任务,正确处理逗号、双引号和换行,用脚本核对三条样本后导入 Label Studio。

把 CSV 文本样本导入 Label Studio,关键是表头能对应文本字段、每行有稳定的来源编号、引号能保护逗号和换行。建议先用三条虚构文本验证数量和内容,再导入正式数据。导入成功的提示不能代替对原文的检查。

本文面向已有可用 Label Studio 项目的数据准备人员。官方文档核对于 2026 年 10 月 1 日;下面的 Python 文件检查可在本地执行,界面流程未在你的部署上实测。只处理脱敏、获准使用的短文本,不处理图片或音频托管。

Label Studio 怎么导入 CSV 文本任务?保留样本编号并处理逗号换行

把业务编号放进数据列

准备两列:source_id 保存原数据编号,text 保存待标注文字。不要用 CSV 行号作为长期编号,也不要假设业务编号会变成 Label Studio 的任务 id。任务编号由标注系统管理,业务编号保存在 data.source_id,用来回到原数据查样本。

下面是虚构的三条样本。把内容保存为 UTF-8 的 samples.csv,第三条文本的换行仍在同一对双引号内:

source_id,text
s001,"订单已经签收,但我没有收到"
s002,"杯子上写着""易碎"",包装仍有破损"
s003,"昨天申请退款
今天还没有回复"

逗号分隔列;字段里含逗号或换行时用双引号包围,字段里的双引号用两个双引号表示。相关读取和写入规则见Python csv 官方文档。第三条跨两个物理行,但仍是一条 CSV 记录,所以正确数量是三条任务。不要用“文件总行数减一”统计样本。

导入前用脚本检查空文本和重复编号

安装有 Python 3 的环境无需额外库。将以下代码保存为 check_csv.py,和 CSV 放在同一目录后运行 python check_csv.py。它同时生成一份标准 JSON 任务文件,供需要回退格式时使用。

import csv
import json
from pathlib import Path

with Path("samples.csv").open(encoding="utf-8-sig", newline="") as f:
    reader = csv.DictReader(f, strict=True)
    if reader.fieldnames != ["source_id", "text"]:
        raise ValueError("表头必须为 source_id,text,且不能重复")
    rows = list(reader)

seen = set()
tasks = []
for number, row in enumerate(rows, start=1):
    if None in row or any(value is None for value in row.values()):
        raise ValueError(f"记录 {number} 的列数不正确")
    source_id = row["source_id"].strip()
    text = row["text"]
    if not source_id or source_id in seen:
        raise ValueError(f"记录 {number} 的编号为空或重复")
    if not text.strip():
        raise ValueError(f"记录 {number} 的文本为空")
    seen.add(source_id)
    tasks.append({"data": {"source_id": source_id, "text": text}})

Path("tasks.json").write_text(
    json.dumps(tasks, ensure_ascii=False, indent=2), encoding="utf-8"
)
print("记录数:", len(tasks))
for task in tasks:
    print(task["data"]["source_id"], repr(task["data"]["text"]))

这份示例应打印“记录数: 3”。s001 的逗号留在文本里,s002 应出现一对真实双引号,s003 应显示一个 \n 或 \r\n 换行序列,具体取决于文件的实际行结束符。脚本只验证结构;合法 CSV 仍可能含错误原文,应再抽样人工阅读。

让项目读取正确的 CSV 列

在 Labeling Setup 或 Labeling Interface 中配置文本对象。可以先用下面的单选界面验证原文显示;它是导入检查的简化例子,正式标签规则需要你另行确定。

<View>
  <Text name="text" value="$text" />
  <Choices name="intent" toName="text" choice="single">
    <Choice value="咨询" />
    <Choice value="投诉" />
    <Choice value="表扬" />
  </Choices>
</View>

官方导入说明规定,CSV 表头会成为任务数据的键。上面的 $text 要读取 text 列;业务编号作为额外字段保留。字段变量和控件绑定的关系可对照界面配置文档。

在试验项目 Data Manager 点 Import,选择 samples.csv 并确认。导入后检查任务总数增加了三条,在数据管理页查看 source_id,逐条打开样本,与本地脚本打印的文本核对逗号、引号和换行。如果实例解析结果不符合预期,在另一个干净试验项目导入脚本生成的 tasks.json;不要在同一项目连续导入两个文件制造六条重复任务。

换行看起来变了,先检查原始数据

浏览器可能折叠空白,所以显示相似不代表字符相同。Text 文档说明空格、换行与字符位置有关。如果后续要做实体片段标注,应在导入前固定换行和空白处理规则,保留转换记录,不能标完以后再清理原文。

需要保留空白显示时,可在试验配置中加入 <Style>.htx-text{ white-space: pre-wrap; }</Style>,再用含多空格和换行的样本核对。已经完成标注的项目不要直接批量修改文本,否则实体位置可能偏移。

导入异常按这个顺序处理

  • 原文为空:核对 CSV 是否真的有 text 列,以及配置是否写成了不同的字段名;用一条 JSON 任务隔离问题。
  • 样本数量大于预期:检查是否重复导入、是否把 TXT 每个物理行当成任务、是否 CSV 引号损坏。确认原因前不要继续追加同一文件。
  • 中文乱码:用文本编辑器另存为 UTF-8,再运行脚本确认能正常读取;避免在不同编码间反复转换原文件。
  • 找不到原编号:检查 JSON 中 data.source_id 或 CSV 的同名列,而不是拿系统任务 id 与业务编号比较。

正式扩量前保存输入文件、项目配置和一份导入后抽检记录。CSV 导入适合本文的短文本任务;媒体文件和大规模存储需要按官方文档规划来源存储、访问和备份,不可把这三个样本的成功外推为任意数据都能直接上传。

Ai菜鸟网。发布者:AI小管家,转载请注明出处:https://www.alyyhw.com/30243.html

赞 (0)
AI小管家的头像AI小管家
DeepSeek 批量处理表格怎么做?合并 CSV 并核对列名、行数和来源
上一篇 1天前
Label Studio 导出 JSON 怎么转训练 CSV?保留人工标签并拦截异常记录
下一篇 1天前

相关推荐

联系我们

联系我们

1

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
关注微信
分享本页
返回顶部