0

我正在尝试微调我的情绪分析模型。因此,我将我的 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 基础设施完全陌生……</p>

4

1 回答 1

0

我自己发现了错误,因为我必须指定必须标记的列。正确的 Tokenizer 函数是:

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

代替

def tokenize(batch):
    return tokenizer(batch, padding=True, truncation=True)
于 2021-08-19T07:54:30.670 回答