Datasets documentation

Обработка текстовых данных

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

Обработка текстовых данных

В этом руководстве описаны конкретные методы обработки текстовых наборов данных. Узнайте, как:

  • Токенизируйте набор данных с помощью map().
  • Совместите метки данных с идентификаторами меток для наборов данных NLI.

Справочник по обработке любого типа набора данных — в общем руководстве по обработке.

Карта

Функция map() поддерживает обработку примеров партиями, что ускоряет токенизацию.

Загрузите токенизатор из 🤗 Transformers:

>>> from transformers import AutoTokenizer

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

Установите параметр batched в значение True в функции map(), чтобы применить токенизатор к батчам примеров:

>>> 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. Однако явное возвращение тензоров в виде массивов NumPy быстрее, так как это нативно поддерживаемый формат PyArrow. Установите return_tensors="np" при токенизации текста:

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

Выровнять

Функция align_labels_with_mapping() сопоставляет идентификатор метки набора данных с именем метки. Не все модели 🤗 Transformers следуют предписанному сопоставлению меток исходного набора данных, особенно для наборов данных NLI. Например, набор данных MNLI использует следующее сопоставление меток:

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

Чтобы привести сопоставление меток в наборе данных к тому, которое использует модель, создайте словарь с именами и идентификаторами меток для согласования:

>>> 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")

Вы также можете использовать эту функцию для назначения пользовательского сопоставления меток с идентификаторами.

Update on GitHub