資料集文件
處理文字資料
立即開始
教學課程
操作指南
總覽
一般用法
載入流程串流與 PyTorch 搭配使用與 TensorFlow 搭配使用與 NumPy 搭配使用與 JAX 搭配使用與 Pandas 搭配使用與 Polars 搭配使用與 PyArrow 搭配使用與 Spark 搭配使用快取管理雲端儲存搜尋索引命令列介面 (CLI)疑難排解
音訊 (Audio)
視覺
文字
表格式
資料集儲存庫
概念指南
參考
加入 Hugging Face 社群
並獲得增強的文件體驗
開始使用
處理文字資料
本指南介紹處理文字資料集的具體方法。了解如何
- 使用 map() 對資料集進行 Tokenize(分詞)。
- 為 NLI 資料集對齊資料集標籤與標籤 ID。
關於如何處理各類資料集的指南,請參考通用處理指南。
映射 (Map)
map() 函式支援一次處理一批樣本,這能加快分詞速度。
從 🤗 Transformers 載入分詞器(Tokenizer)
>>> from transformers import AutoTokenizer
>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")在 map() 函式中將 batched 參數設為 True,以對批次樣本應用分詞器
>>> dataset = dataset.map(lambda examples: tokenizer(examples["text"]), batched=True)
>>> dataset[0]
{'text': 'the rock is destined to be the 21st century\'s new " conan " and that he\'s going to make a splash even greater than arnold schwarzenegger , jean-claud van damme or steven segal .',
'label': 1,
'input_ids': [101, 1996, 2600, 2003, 16036, 2000, 2022, 1996, 7398, 2301, 1005, 1055, 2047, 1000, 16608, 1000, 1998, 2008, 2002, 1005, 1055, 2183, 2000, 2191, 1037, 17624, 2130, 3618, 2084, 7779, 29058, 8625, 13327, 1010, 3744, 1011, 18856, 19513, 3158, 5477, 4168, 2030, 7112, 16562, 2140, 1012, 102],
'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}map() 函式會將回傳值轉換為 PyArrow 支援的格式。但直接將張量(tensor)回傳為 NumPy 陣列速度會更快,因為這是 PyArrow 原生支援的格式。在對文字進行分詞時,請設定 return_tensors="np"
>>> dataset = dataset.map(lambda examples: tokenizer(examples["text"], return_tensors="np"), batched=True)對齊 (Align)
align_labels_with_mapping() 函式用於對齊資料集的標籤 ID 與標籤名稱。並非所有 🤗 Transformers 模型都遵循原始資料集規定的標籤映射,特別是在 NLI 資料集中。例如,MNLI 資料集使用以下標籤映射
>>> label2id = {"entailment": 0, "neutral": 1, "contradiction": 2}若要將資料集的標籤映射與模型所使用的映射對齊,請建立一個包含標籤名稱與 ID 的字典來進行對齊
>>> label2id = {"contradiction": 0, "neutral": 1, "entailment": 2}將標籤映射字典傳遞給 align_labels_with_mapping() 函式,並指定要對齊的欄位名稱
>>> from datasets import load_dataset
>>> mnli = load_dataset("nyu-mll/glue", "mnli", split="train")
>>> mnli_aligned = mnli.align_labels_with_mapping(label2id, "label")您也可以使用此函式來指派自定義的標籤到 ID 的映射。
在 GitHub 上更新