ローカルおよびリモートのデータセットを操作する
データセットには、ローカル データセットとリモート データセットの読み込みを処理するための読み込みスクリプトが用意されています。次のようないくつかの一般的なデータ形式をサポートしています。
データ形式 | スクリプトをロードしています | 例 |
---|---|---|
CSVとTSV | csv |
load_dataset("csv", data_files="my_file.csv") |
テキストファイル | text |
load_dataset("text", data_files="my_file.txt") |
JSON と JSON 行 | json |
load_dataset("json", data_files="my_file.jsonl") |
ピクルド データフレーム | pandas |
load_dataset("pandas", data_files="my_dataframe.pkl") |
表に示すように、各データ形式について、関数でロード スクリプトのタイプを指定しload_dataset()
、data_files
1 つ以上のファイル パスを指定するパラメーターのみを指定する必要があります。まず、ローカル ファイルからデータセットをロードしましょう。リモート ファイルで同じことを行う方法は後で説明します。
1. ローカル データセットをロードします
この例では、SQuAD-it データセットを使用します。
この関数で JSON ファイルをロードするにはload_dataset()
、プレーン JSON (ネストされた辞書に似た) を扱うのか、JSON Lines (行区切りの JSON) を扱うのかを知る必要があるだけです。多くの質問応答データセットと同様に、SQuAD-it はネストされた形式を使用し、すべてのテキストが 1 つの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
})
})
これにより、トレーニング セットに関連付けられた行と列の数が表示されます。次のようにインデックス分割による例の 1 つを見てみましょう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?",
},
...
],
},
...
],
}
トレーニング データセットとテスト データセットを 1 つの 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")