首页 > 其他分享 >Loading Methods

Loading Methods

时间:2022-08-19 16:02:17浏览次数:92  
标签:None Loading Methods dataset datasets str typing Optional

Datasets

datasets.list_datasets

return:List all the datasets scripts available on the Hugging Face Hub.

from datasets import list_datasets
# 展示HFhub上地数据集: https://huggingface.co/datasets 
# with_community_datasets: 是否列出所有的(hugging face)社区提供的所有数据集,默认为True
# with_details:是否打印数据的详细信息,默认为False
data_names = list_datasets( with_community_datasets = True, with_details = False )
print(data_names)

datasets.load_dataset

path:数据集的名称(HF hub 上)或者路径(可以是本地路径)。支持的脚本文件包括 JSON, CSV, Parquet, text 等,也支持python脚本

  • 在加载 HF hub 上的数据时,path是数据集的名称
  • 在加载本地数据时,path 可以用作指明要加载的数据文件格式的类型(包括:text、csv、json、parquet、images等)。
  • 在加载本地数据时,当path不用于指定文件格式类型时,可作为资源文件路径的一部份,并可配合参数data_dirdata_files使用,具体路径为:path/data_dir/data_files

name:定义数据集配置的名称。该名称主要用于指定子数据集的名称。例如机器翻译数据集opus_books中包含了多种语言之间的语料,故而在加载该数据集时,需要利用name参数指定是哪两种语言对应的语料,例如指定 name = 'en-fr',即选择加载英法对应的语料。

data_dir: 指定数据集配置的数据路径。就是指源数据的加载路径(通常是存放数据文件(csv, text 等)的文件夹名)。指定该参数后,程序会加载os.path.join(path, data_dir)目录下的所有文件,但只会在目录中选择某一种命名格式的数据文件进行加载。若要希望加载目录中所有文件,则需要让目录中的文件命名格式保持一致。

data_files: 指定具体要加载的文件名(支持的格式包括 'csv', 'tsv', 'json', 'jsonl', 'jpg', 'txt' 等等)。传入的参数类型包括str、Sequence、Mapping。具体加载的路径是 path/data_dir/data_files

split:返回数据集的指定分割('train'或'test' )。允许传入的参数类型为:strdatasets.Split

cache_dir:读取和写入数据的文件夹。默认路径为~/.cache/huggingface/datasets

features: 为当前数据集设置特征(数据字段)。传入参数的类型为Features

download_config: 指定下载的配置参数。

download_mode: 下载模式。默认是重用已存在的数据进行下载(REUSE_DATASET_IF_EXISTS)。

ignore_verifications: 是否忽略下载/处理的数据集信息的验证(默认False)。这些信息包括checksums/size/splits/…

keep_in_memory: 是否将数据集赋值到内存中,如果是None,则不会将数据加载到内存中,除非显式地设置datasets.config.IN_MEMORY_MAX_SIZE不等于零。

save_infos:保存数据集信息(checksums/size/splits/...)。

revision: 要加载的数据集脚本的版本。

use_auth_token: 可选字符串或布尔值,用作数据集集线器上远程文件的承载令牌。

task: 为训练和验证准备数据集地任务。将数据集地Features转换成对应任务地标准列名和类型

streaming: 如果设置为True将不会加载(下载)数据文件。而是在数据集上迭代时逐步流化数据。在这种情况下会使load_dataset()返回一个IterableDataset 或者IterableDatasetDict 迭代器。

**config_kwargs:额外的关键字参数。传递给BuilderConfig并在DatasetBuilder中使用的关键字参数。

此函数后台执行原理:

  • 如果数据脚本库中没有对应地数据脚本,则从path下载并导入数据脚本到数据脚本库
    • 如果没有数据脚本,则可以导入通用数据脚本(JSON, CSV, Parquet, text, etc)
    • 数据集脚本是定义数据集构建器的小型 Python 脚本。它们定义了数据集的引用、信息和格式,包含原始数据文件的路径或 URL 以及从原始数据文件加载示例的代码。你可以从https://github.com/huggingface/datasets/tree/main/datasets 找到一些脚本。
  • 运行数据集脚本
    • 如果数据集文件在本地或缓存中不可用,则从原始 URL(可参看数据集脚本)下载数据集文件。
    • 在用于缓存的类型化 Arrow table 中处理和缓存数据。
    • Arrow table 是任意长度、类型的表。它们可以存储嵌套对象,也可以被映射到 numpy/pandas/python 等通用类型。它们可以从硬盘上直接被获取,也可以被加载到内存中,甚至是以数据流的形式在网页上被传输。
  • 根据指定分割(默认:all)返回数据集

说明:它还允许从本地目录或 Hugging Face Hub 上的数据集存储库加载数据集,而无需数据集脚本。在这种情况下,它会自动从目录或数据集存储库中加载所有数据文件。当您想要访问私有数据集时,需要指定use_auth_token=True

实例展示:

  • 从HF hub上加载数据集

    from datasets import load_dataset
    ds = load_dataset('rotten_tomatoes', split='train')
    
    # Map data files to splits
    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')
    
  • Load an [~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')
    

datasets.load_from_disk

dataset_path (str):数据集的 Path(或远程URI)或者加载数据的DatasetDict 的文件夹

fs:下载文件的远程文件系统的实例。 可以是S3FileSystemfsspec.spec.AbstractFileSystem。默认None

keep_in_memory:是否赋值数据集到内存中。如果设置为None则不会,除非显式地指定datasets.config.IN_MEMORY_MAX_SIZE为非零

函数返回结果: Dataset 或者 DatasetDict

  • 如果dataset_path 是一个dataset 目录:则会请求dataset
  • 如果dataset_path 是一个dataset dict目录:每个数据分割都会返回一个datasets.DatasetDict

实例:

from datasets import load_from_disk
ds = load_from_disk('path/to/dataset/directory')

datasets.load_dataset_builder

参数与datasets.load_dataset基本一致,本方法的可以在不下载数据集的情况下获取到数据集的有关信息(包括:cache directory, config, dataset info, etc.)

返回结果:DatasetBuilder

一个数据集是一个目录,该目录包含:

  • 通用格式(JSON, CSV, Parquet, text, etc.)的数据文件
  • 如果需要code去读取数据文件,则可以包含可选的数据集脚本。该脚本被用于加载任意数据格式和结构

当您想要访问私有数据集时,需要指定use_auth_token=True

Returns:DatasetBuilder

实例展示:

from datasets import load_dataset_builder
ds_builder = load_dataset_builder('rotten_tomatoes')
print(ds_builder.info.features)
'''
	{'label': ClassLabel(num_classes=2, names=['neg', 'pos'], id=None),
 	'text': Value(dtype='string', id=None)}
'''

datasets.get_dataset_config_names

path (str):利用dataset builder 的数据集处理脚本的路径。它可以是:

  • 一个本地路径,如果这个脚本具有与该目录相同的名称。例如,'./dataset/squad' 或则 './dataset/squad/squad.py'

  • HF hub上的一个数据集标识。例如,'squad', 'glue' or 'openai/webtext'

revision:如果指定,数据集模块将从此版本的数据集存储库加载。支持传入参数的格式为strdatasets.Version。默认情况下:

  • 它设置为 lib 的本地版本。
  • 如果它在本地版本的 lib 中不可用,它也会尝试从主分支加载它。指定与本地 lib 版本不同的版本可能会导致兼容性问题。

download_config: 指定下载配置参数。参数类型是DownloadConfig

download_mode:指定下载和生成的模式。 参数类型DownloadMode

dynamic_modules_path: 动态模块保存目录的可选路径。它需要HF_MODULES_CACHE 进行实例化。默认情况下,datasetsmetrics是保存在datasets_modules中的。参数类型str。默认是HF_MODULES_CACHE / “datasets_modules”。例如, i.e. ~/.cache/huggingface/modules/datasets_modules

data_files: (Union[Dict, List, str], optional) — 定义数据集配置的data_files

**download_kwargs: (additional keyword arguments) — DownloadConfig()的可选属性,该属性将重写download_config中的属性(如果提供)。例如use_auth_token

return:获取特定数据集的可用配置名称列表。

实例:

from datasets import get_dataset_config_names
get_dataset_config_names("glue")
'''
	['cola',
     'sst2',
     'mrpc',
     'qqp',
     'stsb',
     'mnli',
     'mnli_mismatched',
     'mnli_matched',
     'qnli',
     'rte',
     'wnli',
     'ax']
'''

datasets.get_dataset_infos

path (str):利用dataset builder 的数据集处理脚本的路径。它可以是:

  • 一个本地路径,如果这个脚本具有与该目录相同的名称。例如,'./dataset/squad' 或则 './dataset/squad/squad.py'

  • HF hub上的一个数据集标识。例如,'squad', 'glue' or 'openai/webtext'

revision:如果指定,数据集模块将从此版本的数据集存储库加载。支持传入参数的格式为strdatasets.Version。默认情况下:

  • 它设置为 lib 的本地版本。
  • 如果它在本地版本的 lib 中不可用,它也会尝试从主分支加载它。指定与本地 lib 版本不同的版本可能会导致兼容性问题。

download_config: 指定下载配置参数。参数类型是DownloadConfig

download_mode:指定下载和生成的模式。 参数类型DownloadMode

data_files: (Union[Dict, List, str], optional) — 定义数据集配置的data_files

use_auth_token (str or bool, optional) — 可选字符串或布尔值,用作数据集集线器上远程文件的承载令牌。如果是True,则将从“~/.huggingface”上获取token。

**download_kwargs: (additional keyword arguments) — 生成器类的可选属性,如果提供,将覆盖这些属性。

return:获取关于数据集的元信息,作为dict映射配置名称返回到DatasetInfoDict。

实例:

from datasets import get_dataset_infos
print(get_dataset_infos('rotten_tomatoes'))
'''
	{'default': DatasetInfo(description="Movie Review Dataset.
 is a dataset of containing 5,331 positive and 5,331 negative processed
ences from Rotten Tomatoes movie reviews...), ...}
'''

datasets.get_dataset_split_names

path (str):利用dataset builder 的数据集处理脚本的路径。它可以是:

  • 一个本地路径,如果这个脚本具有与该目录相同的名称。例如,'./dataset/squad' 或则 './dataset/squad/squad.py'

  • HF hub上的一个数据集标识。例如,'squad', 'glue' or `'openai/webtext'

config_name (str, optional) — 定义数据集配置的名称。

data_files (str or Sequence or Mapping, optional) — 原始数据文件的路径。

download_config (DownloadConfig, optional) — 特定下载配置参数。

download_mode (DownloadMode, default REUSE_DATASET_IF_EXISTS) — 下载或生成的模式。

revision (Version or str, optional) — 要加载的数据集脚本的版本。

  • 对于 GitHub 上的huggingface/datasets库中的数据集,例如“squad”,该模块的默认版本是该库的本地版本。您可以指定与本地版本的 lib 不同的版本(例如“main”或“1.2.0”),但这可能会导致兼容性问题。
  • 对于lhoestq/squad这类在Datasets Hub 上有自己的git仓库的社区数据集,其默认版本main对应着其main分支。您可以使用数据集存储库的commit shagit tag指定默认“main”的不同版本。

use_auth_token (str or bool, optional) — 可选字符串或布尔值,用作数据集集线器上远程文件的承载令牌。如果是True,则将从“~/.huggingface”上获取token。

**config_kwargs (additional keyword arguments) — 生成器类的可选属性,如果提供,将覆盖这些属性。

return:获取特定配置和数据集的可用拆分列表。即数据集可用的分割名称

实例:

from datasets import get_dataset_split_names
print(get_dataset_split_names('rotten_tomatoes'))
'''
	['train', 'validation', 'test']
'''

datasets.inspect_dataset

path** (str):利用dataset builder 的数据集处理脚本的路径。它可以是:

  • 一个本地路径,如果这个脚本具有与该目录相同的名称。例如,'./dataset/squad' 或则 './dataset/squad/squad.py'
  • HF hub上的一个数据集标识。例如,'squad', 'glue' or `'openai/webtext'

local_path (str) — 要将数据集脚本复制到的本地文件夹的路径。(存放本地数据集脚本的路径?)

download_config ([DownloadConfig], optional) — 特定下载配置参数。

**download_kwargs (additional keyword arguments) — [DownloadConfig]的可选参数,如果提供,将覆盖download_config的属性。

作用:Allow inspection/modification of a dataset script by copying on local drive at local_path.

Metrics

datasets.list_metrics

with_community_metrics (bool, optional, default True) — 包括社区提供的评估指标。

with_details (bool, optional, default False) — Return the full details on the metrics instead of only the short name.

return:List all the metrics script available on the Hugging Face Hub.

from datasets import list_metrics
print(list_metrics())
'''
	['accuracy',
     'bertscore',
     'bleu',
     'bleurt',
     'cer',
     'chrf',
     ...
	]
'''

datasets.load_metric

path (str) — 度量生成器的度量处理脚本的路径。可以是:

  • 处理脚本或包含脚本的目录的本地路径(如果脚本与目录同名)。例如,'./metrics/rouge' 或者 './metrics/rogue/rouge.py'
  • HuggingFace datasets repo上的指标标识(用 datasets.list_metrics()罗列所有可用的评估指标),如:'rouge''bleu'

config_name (str, optional) — 为度量选择配置(例如,GLUE评价指标对每个子集都有一个配置)

process_id (int, optional) — 进行分布式评价时,进程的 id 号

num_process (int, optional) — 进行分布式评估时,进程总数

cache_dir (Optional str) — 存储临时predictions 和references 的路径(default to ~/.cache/huggingface/metrics/)。

experiment_id (str) — 一个特定的实验id。如果多个分布式评估共享同一个文件系统,则使用该id。这对于计算分布式设置中的度量非常有用(特别是像F1这样的非加性度量)。

keep_in_memory (bool) — 是否将临时结果存储在内存中(默认为False)

download_config (Optional datasets.DownloadConfig) — 特定下载配置参数

download_mode (DownloadMode, default REUSE_DATASET_IF_EXISTS) — 下载和生成模式

revision (Optional Union[str, datasets.Version]) — 如果指定,将从此版本的数据集存储库加载模块。默认情况下,它设置为库的本地版本。指定与库的本地版本不同的版本可能会导致兼容性问题。

return:加载一个datasets.Metric

from datasets import load_metric
accuracy = load_metric('accuracy')
print(accuracy.compute(references=[1, 0], predictions=[1, 1]))
'''
	{'accuracy': 0.5}
'''

datasets.inspect_metric

path (str) — 使用数据集生成器的数据集处理脚本的路径。可以是:

  • 处理脚本或包含脚本的目录的本地路径(如果脚本与目录同名)。例如,'./dataset/squad' 或者 './dataset/squad/squad.py'
  • Hugging Face Hub 上的数据集标识(datasets.list_datasets()可以罗列出所有可用数据集及其ids) e.g. 'squad', 'glue' or 'openai/webtext'

local_path (str) — 数据集脚本要复制到的本地文件夹的路径

download_config (Optional datasets.DownloadConfig) — 特定下载配置参数。

**download_kwargs (additional keyword arguments) — DownloadConfig() 的可选属性,如果提供,将覆盖download_config中的属性。

作用:允许通过将度量脚本复制到 local_path 的本地驱动器上,检查/修改度量脚本。

From files

用于加载数据文件的配置。它们在加载本地文件或数据集存储库时使用:

  • local files: load_dataset("parquet", data_dir="path/to/data/dir")
  • dataset repository: load_dataset("allenai/c4")

你可以通过load_dataset的参数去配置数据加载。比如你可以指定sep参数去定义用于加载数据的CsvConfig

load_dataset("csv", data_dir="path/to/data/dir", sep="\t")

Text

class datasets.packaged_modules.text.TextConfig

( name: str = 'default',

version: typing.Union[str, datasets.utils.version.Version, NoneType] = 0.0.0,

data_dir: typing.Optional[str] = None,

data_files: typing.Optional[datasets.data_files.DataFilesDict] = None,

description: typing.Optional[str] = None,

features: typing.Optional[datasets.features.features.Features] = None,

encoding: str = 'utf-8',

chunksize: int = 10485760,

keep_linebreaks: bool = False,

sample_by: str = 'line' )

BuilderConfig for text files.

CSV

class datasets.packaged_modules.csv.CsvConfig

( name: str = 'default',
 version: typing.Union[str, datasets.utils.version.Version, NoneType] = 0.0.0,
 data_dir: typing.Optional[str] = None,
 data_files: typing.Optional[datasets.data_files.DataFilesDict] = None,
 description: typing.Optional[str] = None,
 sep: str = ',',
 delimiter: typing.Optional[str] = None,
 header: typing.Union[int, typing.List[int], str, NoneType] = 'infer',
 names: typing.Optional[typing.List[str]] = None,
 column_names: typing.Optional[typing.List[str]] = None,
 index_col: typing.Union[int, str, typing.List[int], typing.List[str], NoneType] = None,
 usecols: typing.Union[typing.List[int], typing.List[str], NoneType] = None,
 prefix: typing.Optional[str] = None,
 mangle_dupe_cols: bool = True,
 engine: typing.Optional[str] = None,
 true_values: typing.Optional[list] = None,
 false_values: typing.Optional[list] = None,
 skipinitialspace: bool = False,
 skiprows: typing.Union[int, typing.List[int], NoneType] = None,
 nrows: typing.Optional[int] = None,
 na_values: typing.Union[str, typing.List[str], NoneType] = None,
 keep_default_na: bool = True,
 na_filter: bool = True,
 verbose: bool = False,
 skip_blank_lines: bool = True,
 thousands: typing.Optional[str] = None,
 decimal: str = '.',
 lineterminator: typing.Optional[str] = None,
 quotechar: str = '"',
 quoting: int = 0,
 escapechar: typing.Optional[str] = None,
 comment: typing.Optional[str] = None,
 encoding: typing.Optional[str] = None,
 dialect: typing.Optional[str] = None,
 error_bad_lines: bool = True,
 warn_bad_lines: bool = True,
 skipfooter: int = 0,
 doublequote: bool = True,
 memory_map: bool = False,
 float_precision: typing.Optional[str] = None,
 chunksize: int = 10000,
 features: typing.Optional[datasets.features.features.Features] = None,
 encoding_errors: typing.Optional[str] = 'strict',
 on_bad_lines: typing.Literal['error', 'warn', 'skip'] = 'error' 
)

BuilderConfig for JSON.

JSON

class datasets.packaged_modules.json.JsonConfig

( name: str = 'default',
 version: typing.Union[str, datasets.utils.version.Version, NoneType] = 0.0.0,
 data_dir: typing.Optional[str] = None,
 data_files: typing.Optional[datasets.data_files.DataFilesDict] = None,
 description: typing.Optional[str] = None,
 features: typing.Optional[datasets.features.features.Features] = None,
 field: typing.Optional[str] = None,
 use_threads: bool = True,
 block_size: typing.Optional[int] = None,
 chunksize: int = 10485760,
 newlines_in_values: typing.Optional[bool] = None )

BuilderConfig for JSON.

Parquet

class datasets.packaged_modules.parquet.ParquetConfig

( name: str = 'default',
 version: typing.Union[str, datasets.utils.version.Version, NoneType] = 0.0.0,
 data_dir: typing.Optional[str] = None,
 data_files: typing.Optional[datasets.data_files.DataFilesDict] = None,
 description: typing.Optional[str] = None,
 batch_size: int = 10000,
 columns: typing.Optional[typing.List[str]] = None,
 features: typing.Optional[datasets.features.features.Features] = None )

BuilderConfig for Parquet.

Images

class datasets.packaged_modules.imagefolder.ImageFolderConfig

( name: str = 'default',
 version: typing.Union[str, datasets.utils.version.Version, NoneType] = 0.0.0,
 data_dir: typing.Optional[str] = None,
 data_files: typing.Optional[datasets.data_files.DataFilesDict] = None,
 description: typing.Optional[str] = None,
 features: typing.Optional[datasets.features.features.Features] = None,
 drop_labels: bool = None,
 drop_metadata: bool = None )

BuilderConfig for ImageFolder.

标签:None,Loading,Methods,dataset,datasets,str,typing,Optional
From: https://www.cnblogs.com/teanon/p/16602260.html

相关文章

  • Python list methods All In One
    PythonlistmethodsAllInOnePython3#!/usr/bin/envpython3#coding=utf-8__author__='xgqfrms'__editor__='vscode'__version__='1.0.1'__copyrigh......
  • Ambiguous handler methods mapped for'xxx'报错的解决办法
    这个报错的原因是我们的Controller中,有两个模棱两可的处理方法,这两个方法有歧义,无法分清谁是谁.因为Spring无法根据传参的类型自动匹配到可以处理的方法。比如下面这里,......