Кодирование / токенизация словаря набора данных (BERT/Huggingface)

Я пытаюсь доработать свою модель анализа настроений. Поэтому я разделил свой фрейм данных pandas (столбец с отзывами, столбец с оценками настроений) на тренировочный и тестовый фрейм данных и преобразовал все в словарь набора данных:

      #Creating Dataset Objects
dataset_train = datasets.Dataset.from_pandas(training_data)
dataset_test = datasets.Dataset.from_pandas(testing_data)

#Get rid of weird columns
dataset_train = dataset_train.remove_columns('__index_level_0__')
dataset_test = dataset_test.remove_columns('__index_level_0__')

#Create Dataset Dictionary
data_dict = datasets.DatasetDict({"train":dataset_train,"test":dataset_test})

Я преобразовываю все в словарь набора данных, потому что я более или менее слежу за кодом и передаю его своей проблеме. В любом случае, я определяю функцию для токенизации:

      from transformers import AutoModelForSequenceClassification
from transformers import Trainer, TrainingArguments
from sklearn.metrics import accuracy_score, f1_score

num_labels = 5
model_name = "nlptown/bert-base-multilingual-uncased-sentiment"
batch_size = 16
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=num_labels)


def tokenize(batch):
    return tokenizer(batch, padding=True, truncation=True)

и вызовите функцию с помощью:

      
data_encoded = data_dict.map(tokenize, batched=True, batch_size=None)

После всего этого я получаю эту ошибку:

      ValueError: text input must of type str (single example), List[str] (batch or single pretokenized example) or List[List[str]] (batch of pretokenized examples).

Что мне не хватает? Извините, я новичок во всей инфраструктуре Huggingface ...

1 ответ

Сам обнаружил ошибку, так как мне нужно было указать столбец, который нужно токенизировать. Правильная функция Tokenizer будет:

      def tokenize(batch):
    return tokenizer(batch["text"], padding=True, truncation=True)

вместо

      def tokenize(batch):
    return tokenizer(batch, padding=True, truncation=True)
Другие вопросы по тегам