使用本地和远程数据集
Datasets 提供加载脚本来处理本地和远程数据集的加载。它支持几种常见的数据格式,例如:
Data format | Loading script | Example |
---|---|---|
CSV & TSV | csv | load_dataset("csv", data_files="my_file.csv") |
Text files | text | load_dataset("text", data_files="my_file.txt") |
JSON & JSON Lines | json | load_dataset("json", data_files="my_file.jsonl") |
Pickled DataFrames | pandas | load_dataset("pandas", data_files="my_dataframe.pkl") |
如表中所示,对于每种数据格式,我们只需要在函数中指定加载脚本的类型load_dataset()
,以及data_files
指定一个或多个文件路径的参数。让我们从从本地文件加载数据集开始;稍后我们将看到如何对远程文件执行相同的操作。
1、加载本地数据集
对于此示例,我们将使用SQuAD-it 数据集
要使用该load_dataset()
函数加载 JSON 文件,我们只需要知道我们正在处理的是普通 JSON(类似于嵌套字典)还是 JSON Lines(行分隔的 JSON)。与许多问答数据集一样,SQuAD-it 使用嵌套格式,所有文本都存储在一个data
字段中。这意味着我们可以通过指定参数来加载数据集,field
如下所示:
from datasets import load_dataset
squad_it_dataset = load_dataset("json", data_files="SQuAD_it-train.json", field="data")
默认情况下,加载本地文件会创建一个DatasetDict
带有拆分的对象train
。我们可以通过检查squad_it_dataset
对象看到这一点:
squad_it_dataset:
DatasetDict({
train: Dataset({
features: ['title', 'paragraphs'],
num_rows: 442
})
})
这向我们显示了与训练集关联的行数和列名。我们可以通过索引拆分来查看示例之一,train
如下所示:
squad_it_dataset["train"][0]:
{
"title": "Terremoto del Sichuan del 2008",
"paragraphs": [
{
"context": "Il terremoto del Sichuan del 2008 o il terremoto...",
"qas": [
{
"answers": [{"answer_start": 29, "text": "2008"}],
"id": "56cdca7862d2951400fa6826",
"question": "In quale anno si è verificato il terremoto nel Sichuan?",
},
...
],
},
...
],
}
将训练数据集和测试数据集 放到一个 DatasetDict
对象中,可以这样做:
data_files = {"train": "SQuAD_it-train.json", "test": "SQuAD_it-test.json"}
squad_it_dataset = load_dataset("json", data_files=data_files, field="data")
squad_it_dataset
DatasetDict({
train: Dataset({
features: ['title', 'paragraphs'],
num_rows: 442
})
test: Dataset({
features: ['title', 'paragraphs'],
num_rows: 48
})
})
也可以不用解压直接 加载训练数据集:
data_files = {"train": "SQuAD_it-train.json.gz", "test": "SQuAD_it-test.json.gz"}
squad_it_dataset = load_dataset("json", data_files=data_files, field="data")
2、加载远程数据集
我们可以直接指向data_files
SQuAD_it -*.json.gz URL,如下所示:
#https://github.com/crux82/squad-it/blob/master/SQuAD_it-train.json.gz
#https://github.com/crux82/squad-it/blob/master/SQuAD_it-test.json.gz
url = "https://github.com/crux82/squad-it/blob/master/"
data_files = {
"train": url + "SQuAD_it-train.json.gz",
"test": url + "SQuAD_it-test.json.gz",
}
squad_it_dataset = load_dataset("json", data_files=data_files, field="data")