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

构建HuggingFace Dataset以训练BIO标注器

将字典列表转换为HuggingFace Dataset对象

你可以直接用HuggingFace Datasets库的Dataset.from_list()方法完成转换,具体步骤如下:

1. 安装依赖库

先确保安装了datasets:

pip install datasets

2. 修正原始数据格式

注意你提供的示例里labels中的O、B-LOC等没有加引号,会被当作未定义变量报错,先改成字符串类型:

sentences = [ 
    {'text': ['I live in Madrid'], 'labels':['O', 'O', 'O', 'B-LOC']},
    {'text': ['Peter lives in Spain'], 'labels':['B-PER', 'O', 'O', 'B-LOC']},
    {'text': ['He likes pasta'], 'labels':['O', 'O', 'B-FOOD']}
]

3. 转换为Dataset对象

调用from_list方法直接转换:

from datasets import Dataset

dataset = Dataset.from_list(sentences)

4. 验证转换结果

打印dataset查看结构:

print(dataset)
# 输出示例:
# Dataset({
#     features: ['text', 'labels'],
#     num_rows: 3
# })

# 查看单条数据
print(dataset[0])
# 输出:{'text': ['I live in Madrid'], 'labels': ['O', 'O', 'O', 'B-LOC']}

可选:为NER任务处理标签映射

如果是做命名实体识别,通常需要把标签字符串转成模型可识别的ID,可添加如下处理:

# 提取所有唯一标签
all_labels = []
for item in sentences:
    all_labels.extend(item['labels'])
unique_labels = list(set(all_labels))

# 创建标签与ID的双向映射
label2id = {label: idx for idx, label in enumerate(unique_labels)}
id2label = {idx: label for label, idx in label2id.items()}

# 给dataset添加标签ID列
dataset = dataset.map(lambda x: {'label_ids': [label2id[label] for label in x['labels']]})

处理后的dataset就可以直接用于后续Tokenizer预处理和Transformer模型输入。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 12:22:08