如何将大JSON文件的部分内容加载为Hugging Face Dataset?
解决大JSON文件加载内存不足问题:仅加载部分内容
针对大JSON文件加载时内存不足的情况,有两种实用方法可以仅加载前1000条数据:
方法一:使用流式加载(推荐)
利用datasets库的流式加载功能,不会一次性将整个文件读入内存,而是按需读取数据,再通过take()方法获取指定数量的样本:
from datasets import load_dataset # 开启流式加载模式 dataset = load_dataset("json", data_files="data/my_dataset.json", streaming=True) # 获取前1000条数据 subset = dataset["train"].take(1000) # 如需转为非流式Dataset对象(方便后续常规操作) from datasets import Dataset subset_dataset = Dataset.from_list(list(subset))
方法二:手动读取前N行(仅适用于JSON Lines格式)
如果你的JSON文件是每行一个独立JSON对象(即JSON Lines格式),可以手动读取前1000行后再转为Dataset:
import json from datasets import Dataset data = [] with open("data/my_dataset.json", "r") as f: for idx, line in enumerate(f): if idx >= 1000: break data.append(json.loads(line)) # 转换为Dataset dataset = Dataset.from_list(data)
注意:此方法不适用于单个大JSON数组格式的文件(比如整个文件是一个包含所有数据的数组),这类文件建议使用方法一。
内容的提问来源于stack exchange,提问作者Penguin
相关产品推荐
相关产品推荐

