首页 > 解决方案 > 将训练语料库提供给 train_new_from_iterator 方法时的关键错误

问题描述

我在这里关注本教程:https ://github.com/huggingface/notebooks/blob/master/examples/tokenizer_training.ipynb

因此,使用此代码,我添加了我的自定义数据集:

from datasets import load_dataset
dataset = load_dataset('csv', data_files=['/content/drive/MyDrive/mydata.csv'])

然后,我使用此代码查看数据集:

dataset

访问一个元素:

dataset['train'][1]

访问切片目录:

dataset['train'][:5]

成功执行上述代码后,我尝试在这里执行:

new_tokenizer = tokenizer.train_new_from_iterator(batch_iterator(), vocab_size=25000)

但是,我收到此错误:

KeyError: "Invalid key: slice(0, 1000, None). Please first select a split. For example: `my_dataset_dictionary['train'][slice(0, 1000, None)]`. Available splits: ['train']"

我该如何解决?

我正在尝试训练自己的标记器,这似乎是一个问题。

任何帮助,将不胜感激!

标签: pythonbert-language-modelhuggingface-transformershuggingface-tokenizershuggingface-datasets

解决方案


就像错误跟踪中所说的那样,您应该在加载数据集时指定拆分,如下所示:

dataset = load_dataset('csv', data_files=['/content/drive/MyDrive/mydata.csv'], split='train')

或者编写 batch_iterator 如下:

def batch_iterator():
    for i in range(0, len(dataset['train']), batch_size):
        yield dataset['train'][i : i + batch_size]["text"]

推荐阅读