HuggingFace BPE培训师错误培训标记器

2024-09-27 07:22:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用iterable而不是文件来训练ByTelevelbeTokenizer。当我实例化培训师时,一定有什么地方我做错了,但我不知道它是什么。当我尝试使用我的数据集(Kaggle的服装数据)+BpeTrainer来训练标记器时,我得到了一个错误

**TypeError**: 'tokenizers.trainers.BpeTrainer' object cannot be interpreted as an integer

我在用可乐

步骤1:安装Tokenizer&;下载Kaggle数据

!pip install tokenizers

# Download clothing data from Kaggle
# https://www.kaggle.com/nicapotato/womens-ecommerce-clothing-reviews/version/1?select=Womens+Clothing+E-Commerce+Reviews.csv

步骤2:上传文件

# use colab file upload
from google.colab import files
uploaded = files.upload()

步骤3:清理数据(移除浮动)&;跑步教练

import io
import pandas as pd  

# convert the csv to a dataframe so it can be parsed
data = io.BytesIO(uploaded['clothing_dataset.csv']) 
df = pd.read_csv(data)

# convert the review text to a list so it can be passed as iterable to tokenizer
clothing_data = df['Review Text'].to_list()

# Remove float values from the data
clean_data =  []    
for item in clothing_data:
  if type(item) != float:
    clean_data.append(item)   


from tokenizers import ByteLevelBPETokenizer
from tokenizers.processors import BertProcessing
from tokenizers import trainers, pre_tokenizers
from tokenizers.trainers import BpeTrainer
from pathlib import Path


# Initialize a tokenizer
tokenizer = ByteLevelBPETokenizer(lowercase=True)

# Intantiate BpeTrainer
trainer = BpeTrainer(
    vocab_size=20000,
    min_frequence = 2,
    show_progress=True,
    special_tokens=["<s>","<pad>","</s>","<unk>","<mask>"],)

# Train the tokenizer
tokenizer.train_from_iterator(clean_data, trainer)

错误-我可以看出培训师是BpeTrainer类型

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-103-7738a7becb0e> in <module>()
     34 
     35 # Train the tokenizer
---> 36 tokenizer.train_from_iterator(clean_data, trainer)

/usr/local/lib/python3.7/dist-packages/tokenizers/implementations/byte_level_bpe.py in train_from_iterator(self, iterator, vocab_size, min_frequency, show_progress, special_tokens)
    119             show_progress=show_progress,
    120             special_tokens=special_tokens,
--> 121             initial_alphabet=pre_tokenizers.ByteLevel.alphabet(),
    122         )
    123         self._tokenizer.train_from_iterator(iterator, trainer=trainer)

TypeError: 'tokenizers.trainers.BpeTrainer' object cannot be interpreted as an integer

有趣的提示:如果我设置输入trainer=trainer,我会得到这个

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-104-64737f948e6d> in <module>()
     34 
     35 # Train the tokenizer
---> 36 tokenizer.train_from_iterator(clean_data, trainer=trainer)

TypeError: train_from_iterator() got an unexpected keyword argument 'trainer'

Tags: the数据fromimportcleandatatraintokenizer
1条回答
网友
1楼 · 发布于 2024-09-27 07:22:45

我以前没有使用过train_from_iterator,但看看HF docs似乎应该使用生成器函数。比如:

def clothing_generator():
  for item in clothing_data:
    if type(item) != float:
      yield item

其次是:

tokenizer.train_from_iterator(clothing_generator(), trainer)

可能会有帮助吗

相关问题 更多 >

    热门问题