Datasets documentation

Xử lý dữ liệu văn bản

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v4.8.4).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Xử lý dữ liệu văn bản

Hướng dẫn này trình bày các phương pháp cụ thể để xử lý các bộ dữ liệu văn bản. Học cách:

  • Tokenize một dataset bằng map().
  • Căn chỉnh nhãn của bộ dữ liệu với các id nhãn cho các bộ dữ liệu NLI.

Để tìm hiểu cách xử lý bất kỳ loại bộ dữ liệu nào, hãy xem hướng dẫn quy trình chung.

Bản đồ

Hàm map() hỗ trợ xử lý các lô ví dụ cùng lúc, giúp tăng tốc độ token hóa.

Tải một tokenizer từ 🤗 Transformers:

>>> from transformers import AutoTokenizer

>>> tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")

Đặt tham số batched thành True trong hàm map() để áp dụng tokenizer cho các lô ví dụ:

>>> 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]}

Hàm map() chuyển các giá trị trả về sang định dạng được PyArrow hỗ trợ. Tuy nhiên, việc trả về các tensor dưới dạng mảng NumPy một cách tường minh sẽ nhanh hơn vì đây là định dạng PyArrow hỗ trợ bản địa. Đặt return_tensors="np" khi bạn thực hiện tokenize văn bản của mình:

>>> dataset = dataset.map(lambda examples: tokenizer(examples["text"], return_tensors="np"), batched=True)

Căn chỉnh

Hàm align_labels_with_mapping() căn chỉnh id nhãn của tập dữ liệu với tên nhãn. Không phải tất cả các mô hình 🤗 Transformers đều tuân theo ánh xạ nhãn được quy định của tập dữ liệu gốc, đặc biệt là với các tập dữ liệu NLI. Ví dụ, tập dữ liệu MNLI sử dụng ánh xạ nhãn sau:

>>> label2id = {"entailment": 0, "neutral": 1, "contradiction": 2}

Để đồng bộ ánh xạ nhãn của bộ dữ liệu với ánh xạ được sử dụng bởi mô hình, hãy tạo một từ điển gồm tên nhãn và id để đồng bộ:

>>> label2id = {"contradiction": 0, "neutral": 1, "entailment": 2}

Truyền từ điển ánh xạ nhãn vào hàm align_labels_with_mapping(), cùng với cột cần căn chỉnh:

>>> from datasets import load_dataset

>>> mnli = load_dataset("nyu-mll/glue", "mnli", split="train")
>>> mnli_aligned = mnli.align_labels_with_mapping(label2id, "label")

Bạn cũng có thể sử dụng hàm này để gán một ánh xạ tùy chỉnh từ nhãn sang id.

Update on GitHub