Hugging Face Datasets .map方法异常:替换而非新增数据集特征
解决Hugging Face Datasets map方法丢失原有特征的问题
问题出在你的自定义函数concatenate_entities的返回值上:如果函数只返回包含新特征text的字典,map方法会默认用这个字典替换整个样本,导致原有特征全部丢失。
两种修复方案:
方案1:在自定义函数中保留原有字段
修改函数,将新生成的text特征添加到原样本字典中,再返回完整的样本:
def concatenate_entities(sample): # 替换成你的拼接逻辑,比如合并多个字段 sample['text'] = f"{sample['first_name']} {sample['last_name']} {sample['company_name']}" return sample # 返回包含所有原有字段和新text的完整样本
执行dataset_c = dataset_c.map(concatenate_entities)后,数据集会保留所有原始特征,同时新增text字段。
方案2:批量处理时保留所有字段
如果使用batched=True进行批量处理,同样需要在返回的batch字典中保留所有原有字段:
def concatenate_entities(batch): # 批量生成text特征 batch['text'] = [ f"{fn} {ln} {cn}" for fn, ln, cn in zip(batch['first_name'], batch['last_name'], batch['company_name']) ] return batch # 返回包含所有原字段的batch
调用时加上batched=True参数:
dataset_c = dataset_c.map(concatenate_entities, batched=True)
这样处理后,数据集的特征列表会包含原始的['_id', 'first_name', ..., 'global_id']加上新增的text。
内容的提问来源于stack exchange,提问作者disruptive
相关产品推荐
相关产品推荐

