You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将自定义CSV数据转换为Hugging Face兼容的Squad式QA数据集

解决CSV转Hugging Face Squad格式QA数据集的问题

你的核心问题有两个:一是代码存在语法错误,二是未匹配Squad格式要求的answers字段结构。Squad格式中,answers是包含字典的列表(即使只有单个答案),而非单个字典,同时你的apply调用缺少axis=1参数导致未按行处理数据。

修正步骤与代码

  1. 按行处理数据并生成符合要求的answers结构
  2. 转换为Hugging Face Dataset后验证格式

完整代码如下:

import pandas as pd
from datasets import Dataset

# 加载CSV文件
df = pd.read_csv("your_dataset.csv")

# 生成符合Squad格式的answers字段:列表包裹字典
df["answers"] = df.apply(
    lambda x: {"answer_start": [x.answer_start], "text": [x.text]},
    axis=1  # 必须添加axis=1,指定按行处理
)

# 保留需要的字段
df = df[["id", "question", "context", "answers"]]

# 转换为Dataset
train_dataset = Dataset.from_pandas(df)

# 可选:验证格式是否正确,查看第一条数据
print(train_dataset[0])

关键说明

  • 列表结构的必要性:Hugging Face的QA任务数据集(如Squad)默认支持多答案场景,因此answer_start和text都需要是列表类型,即使你的数据只有单个答案。如果直接用单个数值/字符串,训练时会触发格式错误。
  • axis=1参数:pandas.DataFrame.apply默认按列处理,添加axis=1才能遍历每一行生成对应的answers字典。

额外验证

如果转换后仍有问题,可以对比官方Squad数据集的格式:

from datasets import load_dataset
squad = load_dataset("squad", split="train")
print(squad[0])

确保你的train_dataset的answers字段结构与Squad完全一致。

内容的提问来源于stack exchange,提问作者Lcat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 15:32:08