datasets是Hugging Face开发的一个数据集库,可以从Hugging Face Hub里下载数据,也可从本地加载数据集
您可以在https://huggingface.co/datasets上或使用datasets.list_datasets 找到数据集列表。
数据集是一个包含以下内容的目录:
- 一些通用格式的数据文件(JSON、CSV、Parquet、文本等)。
- 如果需要一些代码来读取数据文件,还可以选择使用数据集脚本。这用于加载任何类型的格式或结构。
请注意,数据集脚本也可以从任何地方下载和读取数据文件——以防您的数据文件已经在线存在。
这个函数在幕后执行以下操作:
-
如果库中尚未缓存数据集脚本,请从path下载并导入库中。
如果数据集没有数据集脚本,那么就会导入一个通用的数据集脚本(JSON、CSV、Parquet、文本等)
数据集脚本是定义数据集构建器的小型Python脚本。它们定义了数据集的引用、信息和格式,
包含原始数据文件的路径或URL以及从原始数据文件加载示例的代码。
您可以在数据集https://huggingface.co/datasets中找到完整的数据集列表。 -
运行数据集脚本,该脚本将执行以下操作:
- 如果本地或缓存中尚未提供该数据集文件,请从原始URL下载。
- 在类型化的Arrow表中处理和缓存数据集以进行缓存。
Arrow表是任意长的类型化表,可以存储嵌套对象,并可以映射到numpy/pandas/python通用类型。
它们可以直接从磁盘访问,加载到RAM中,甚至可以通过网络流式传输。
- 返回一个根据split中的请求拆分构建的数据集(默认值:全部)。
它还允许从本地目录或Hugging Face Hub上的数据集存储库中加载数据集,而无需数据集脚本。
在这种情况下,它会自动从目录或数据集存储库中加载所有数据文件。
Args:
path(str):数据集的路径或名称。根据path,所使用的数据集构建器来自通用的数据集脚本(JSON、CSV、Parquet、文本等)或数据集目录中的数据集脚本(Python文件)。
对于本地数据集:
- 如果path是一个本地目录(仅包含数据文件)
-> 根据目录内容加载一个通用的数据集构建器(csv、json、text等),例如“”/路径/to/directory/带/my/csv/data“”。
- 如果path是一个本地数据集脚本或包含本地数据集脚本的目录(如果脚本与目录同名)
-> 从数据集脚本中加载数据集构建器,例如,‘./dataset/squad’ 或 ‘./dataset/squad/squad.py’。
对于Hugging Face Hub上的数据集(使用datasets.list_datasets列出所有可用的数据集和ID)
- 如果path
是HF中心上的数据集仓库(仅包含数据文件)
-> 根据存储库的内容加载一个通用的数据集构建器(csv、文本等)
例如,‘username/dataset_name’,这是HF中心的一个数据集仓库,包含您的数据文件。
- 如果path是HF中心上的一个带有数据集脚本的数据集仓库(如果脚本与目录同名)
-> 从数据集仓库中的数据集脚本加载数据集构建器
例如,“glue”、“squad”、“‘username/dataset_name’”,HF hub上的一个数据集存储库,其中包含一个数据集脚本“dataset_name.py”。
name (str, optional):定义数据集配置的名称。
data_dir (str, optional):
定义数据集配置的data_dir
。如果为通用构建器(csv、text等)或Hub数据集指定了data_dir
,并且data_files
为None
,
该行为等同于将os.path.join(data_dir, **)
作为data_files
传递,以引用目录中的所有文件。
data_files (str 或 Sequence 或 Mapping , optional):
源数据文件的路径。
split (Split 或 str):
要加载的数据的哪一部分。
如果为“None”,将返回一个包含所有拆分的字典(通常为“datasets.Split.TRAIN”和“datasets.Split.TEST”)。
如果给出,将返回单个数据集。
分割可以像在tensorflow-datasets中一样进行组合和指定。
cache_dir (str, optional):
读取/写入数据的目录。默认为"~/.cache/huggingface/datasets"。
features (Features, optional)
设置此数据集要使用的特征类型。
download_config ([DownloadConfig], optional):
特定的下载配置参数。
download_mode ([DownloadMode] or str, defaults to REUSE_DATASET_IF_EXISTS ):
下载/生成模式。
verification_mode ([VerificationMode] or str, defaults to BASIC_CHECKS):
验证模式确定对下载/处理的数据集信息(校验和/大小/分割等)进行的检查。
<新增版本=“2.9.1”/>
ignore_verifications(bool, 默认为False):
忽略已下载/已处理数据集信息的验证(校验和/大小/分割等)。
<弃用版本=“2.9.1”>
ignore_verifications 在 2.9.1 版本中已被弃用,并将在 3.0.0 版本中移除。
请改用verification_mode。
</已弃用>
keep_in_memory (bool, 默认为 None):
是否在内存中复制数据集。如果为“None”,则数据集
除非通过设置datasets.config.IN_MEMORY_MAX_SIZE来明确启用,否则不会在内存中复制非零。有关更多详细信息,请参阅提高性能部分。
save_infos (bool, 默认为False):
保存数据集信息(校验和/大小/分割等)。
use_auth_token (str 或 bool, 可选):
用作Datasets Hub上远程文件的承载令牌的可选字符串或布尔值。
<新增版本=“2.7.0”/>
**config_kwargs (additional keyword arguments):
要传递给BuilderConfig的关键字参数并用于[‘DatasetBuilder’]。
Returns:
[Dataset] or [DatasetDict]:
- 如果split不为None:请求的数据集,
- 如果 split 为 None,则返回一个包含每个拆分的 [~datasets.DatasetDict]。
or [IterableDataset] or [IterableDatasetDict]: if streaming=True
- 如果 split 不为 None ,则请求数据集
- 如果 split 为 None ,则返回一个包含每个拆分的 [ ~datasets.streaming.IterableDatasetDict ]。
例子:
从Hugging Face Hub加载数据集:
from datasets import load_dataset
ds = load_dataset('rotten_tomatoes', split='train')
#将数据文件映射到分割文件
data_files = {'train': 'train.csv', 'test': 'test.csv'}
ds = load_dataset('namespace/your_dataset_name', data_files=data_files)
加载本地数据集:
# Load a CSV file
from datasets import load_dataset
ds = load_dataset('csv', data_files='path/to/local/my_dataset.csv')
# Load a JSON file
from datasets import load_dataset
ds = load_dataset('json', data_files='path/to/local/my_dataset.json')
# Load from a local loading script
from datasets import load_dataset
ds = load_dataset('path/to/local/loading_script/loading_script.py', split='train')
加载一个[‘~datasets.IterableDataset’]:
from datasets import load_dataset
ds = load_dataset('rotten_tomatoes', split='train', streaming=True)
使用 ImageFolder 数据集构建器加载图像数据集:
from datasets import load_dataset
ds = load_dataset('imagefolder', data_dir='/path/to/images', split='train')