Datasets 文件

庫結構

Hugging Face's logo
加入 Hugging Face 社群

並獲得增強的文件體驗

開始使用

庫結構

要託管和共享您的資料集,請在 Hugging Face Hub 上建立一個數據集庫並上傳您的資料檔案。

本指南將向您展示上傳資料集時如何構建資料集庫。具有受支援結構和檔案格式(`.txt`、`.csv`、`.parquet`、`.jsonl`、`.mp3`、`.jpg`、`.zip` 等)的資料集將透過 `load_dataset()` 自動載入,並且其在 Hub 上的資料集頁面上會有一個數據集檢視器。

主要用例

最簡單的資料集結構包含兩個檔案:`train.csv` 和 `test.csv`(這適用於任何受支援的檔案格式)。

您的庫還將包含一個 `README.md` 檔案,即顯示在資料集頁面上的資料集卡片

my_dataset_repository/
├── README.md
├── train.csv
└── test.csv

在這種簡單情況下,您將獲得一個包含兩個拆分的資料集:`train`(包含來自 `train.csv` 的示例)和 `test`(包含來自 `test.csv` 的示例)。

在 YAML 中定義你的拆分和子集

拆分

如果您有多個檔案並希望定義哪個檔案屬於哪個拆分,您可以使用 README.md 頂部的 YAML `configs` 欄位。

例如,給定這樣一個庫

my_dataset_repository/
├── README.md
├── data.csv
└── holdout.csv

您可以透過在 README.md 頂部的 YAML 塊中新增 `configs` 欄位來定義拆分。

---
configs:
- config_name: default
  data_files:
  - split: train
    path: "data.csv"
  - split: test
    path: "holdout.csv"
---

您可以使用路徑列表為每個拆分選擇多個檔案。

my_dataset_repository/
├── README.md
├── data/
│   ├── abc.csv
│   └── def.csv
└── holdout/
    └── ghi.csv
---
configs:
- config_name: default
  data_files:
  - split: train
    path:
    - "data/abc.csv"
    - "data/def.csv"
  - split: test
    path: "holdout/ghi.csv"
---

或者您可以使用萬用字元模式自動列出您需要的所有檔案。

---
configs:
- config_name: default
  data_files:
  - split: train
    path: "data/*.csv"
  - split: test
    path: "holdout/*.csv"
---

請注意,即使您只有一種配置,`config_name` 欄位也是必需的。

配置

您的資料集可能包含多個您希望能夠單獨載入的資料子集。在這種情況下,您可以在 YAML 的 `configs` 欄位中定義一個配置列表。

my_dataset_repository/
├── README.md
├── main_data.csv
└── additional_data.csv
---
configs:
- config_name: main_data
  data_files: "main_data.csv"
- config_name: additional_data
  data_files: "additional_data.csv"
---

每個配置都將在 Hugging Face Hub 上單獨顯示,並且可以透過將其名稱作為第二個引數傳遞來載入。

from datasets import load_dataset

main_data = load_dataset("my_dataset_repository", "main_data")
additional_data = load_dataset("my_dataset_repository", "additional_data")

構建器引數

不僅可以傳遞 `data_files`,還可以透過 YAML 傳遞其他特定於構建器的引數,從而在載入資料時提供更大的靈活性,而無需任何自定義程式碼。例如,定義在哪個配置中使用哪個分隔符來載入 `csv` 檔案:

---
configs:
- config_name: tab
  data_files: "main_data.csv"
  sep: "\t"
- config_name: comma
  data_files: "additional_data.csv"
  sep: ","
---

請參閱特定構建器的文件以檢視它們具有哪些配置引數。

您可以使用 `default: true` 設定預設配置,例如,如果將 `main_data = load_dataset("my_dataset_repository")` 設定為:

- config_name: main_data
  data_files: "main_data.csv"
  default: true

自動拆分檢測

如果未提供 YAML,🤗 Datasets 會在資料集庫中搜索某些模式以自動推斷資料集拆分。模式有順序,從自定義檔名拆分格式開始,如果未找到模式,則將所有檔案視為單個拆分。

目錄名稱

您的資料檔案也可以放置在名為 `train`、`test` 和 `validation` 的不同目錄中,每個目錄包含該拆分的資料檔案。

my_dataset_repository/
├── README.md
└── data/
    ├── train/
    │   └── bees.csv
    ├── test/
    │   └── more_bees.csv
    └── validation/
        └── even_more_bees.csv

檔名拆分

如果您沒有任何非傳統拆分,那麼您可以將拆分名稱放置在資料檔案中的任何位置,它將自動推斷。唯一的規則是拆分名稱必須由非單詞字元分隔,例如 `test-file.csv` 而不是 `testfile.csv`。支援的分隔符包括下劃線、破折號、空格、點和數字。

例如,以下檔名都是可接受的:

  • 訓練拆分:`train.csv`、`my_train_file.csv`、`train1.csv`
  • 驗證拆分:`validation.csv`、`my_validation_file.csv`、`validation1.csv`
  • 測試拆分:`test.csv`、`my_test_file.csv`、`test1.csv`

這是一個將所有檔案放置在名為 `data` 的目錄中的示例:

my_dataset_repository/
├── README.md
└── data/
    ├── train.csv
    ├── test.csv
    └── validation.csv

自定義檔名拆分

如果您的資料集拆分具有非 `train`、`test` 或 `validation` 的自定義名稱,那麼您可以像 `data/-xxxxx-of-xxxxx.csv` 這樣命名您的資料檔案。

這是一個包含三個拆分(`train`、`test` 和 `random`)的示例:

my_dataset_repository/
├── README.md
└── data/
    ├── train-00000-of-00003.csv
    ├── train-00001-of-00003.csv
    ├── train-00002-of-00003.csv
    ├── test-00000-of-00001.csv
    ├── random-00000-of-00003.csv
    ├── random-00001-of-00003.csv
    └── random-00002-of-00003.csv

單個拆分

當 🤗 Datasets 找不到任何上述模式時,它將把所有檔案視為單個訓練拆分。如果您的資料集拆分未按預期載入,則可能是由於模式不正確。

拆分名稱關鍵字

有幾種命名拆分的方式。驗證拆有時稱為“dev”,測試拆可能被稱為“eval”。也支援這些其他拆分名稱,以下關鍵字是等效的:

  • train, training (訓練)
  • validation, valid, val, dev (驗證)
  • test, testing, eval, evaluation (測試)

以下結構是有效的儲存庫:

my_dataset_repository/
├── README.md
└── data/
    ├── training.csv
    ├── eval.csv
    └── valid.csv

每個拆分多個檔案

如果您的某個拆分包含多個檔案,🤗 Datasets 仍然可以從檔名推斷出它是訓練、驗證和測試拆分。例如,如果您的訓練和測試拆分跨越多個檔案:

my_dataset_repository/
├── README.md
├── train_0.csv
├── train_1.csv
├── train_2.csv
├── train_3.csv
├── test_0.csv
└── test_1.csv

確保您的 `train` 集的所有檔名稱中都包含 *train*(測試和驗證檔案也一樣)。即使您在檔名中為 `train` 添加了字首或字尾(例如 `my_train_file_00001.csv`),🤗 Datasets 仍然可以推斷出適當的拆分。

為方便起見,您還可以將資料檔案放置在不同的目錄中。在這種情況下,拆分名稱將從目錄名稱推斷。

my_dataset_repository/
├── README.md
└── data/
    ├── train/
    │   ├── shard_0.csv
    │   ├── shard_1.csv
    │   ├── shard_2.csv
    │   └── shard_3.csv
    └── test/
        ├── shard_0.csv
        └── shard_1.csv
< > 在 GitHub 上更新

© . This site is unofficial and not affiliated with Hugging Face, Inc.