构建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
相关产品推荐
相关产品推荐

