如何将令牌生成器输出转换为Huggingface Transformers中Trainer API所需的train_dataset?

问题描述

我尝试使用拥抱变压器的文档进行标记

from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained('bert-base-cased')
encoded_input = tokenizer(batch_of_sequences)

训练有素的分词器提供包含三个键的字典输出

encoded_input = {
'input_ids': [[],[],[]],'token_type_ids': [[],'attention_mask': [[],[]]
}

Trainer API要求输入torch.utils.data.Dataset类型的Train&Eval Dataset。

我们如何使用此输出来创建Trainer API所需的训练数据集?

解决方法

有很多将Huggingface变压器与Bert模型结合使用的示例。

但是为了描述一般的训练过程,您可以使用Dataset类加载数据集。然后,您可以使用Bert模型的令牌生成器在get_item方法中对数据样本进行编码。在每次迭代中调用该方法时,编码后的数据将被馈送到您的NN中。我使用sklearn.model_selection.train_test_split库从基本集中分离出火车,评估和测试子集。

以下链接可以帮助您大致了解整个培训过程: https://huggingface.co/transformers/quickstart.html

https://towardsdatascience.com/text-classification-with-hugging-face-transformers-in-tensorflow-2-without-tears-ee50e4f3e7ed

https://www.curiousily.com/posts/sentiment-analysis-with-bert-and-hugging-face-using-pytorch-and-python/

,

我想这可以解决它:

from datasets import Dataset
dataset = Dataset.from_dict(encoded_inputs)

如果您想训练模型,您可能还想添加标签。 对我来说:

encoded_inputs["labels"] = encoded_inputs["input_ids"].copy()

成功了。