我正在尝试使用迭代器而不是文件来训练ByteLevelBPETokenizer。当我实例化训练器时,一定是我做错了什么,但我不知道是什么。当我尝试用我的数据集(来自Kaggle的服装数据)+ BpeTrainer训练记号赋予器时,我得到一个错误。
**TypeError**: 'tokenizers.trainers.BpeTrainer' object cannot be interpreted as an integer我正在使用Colab
第1步:安装令牌化器并下载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第二步:上传文件
# use colab file upload
from google.colab import files
uploaded = files.upload()步骤3:清理数据(移除浮动)并运行trainer
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'发布于 2021-10-09 08:40:02
我以前没有使用过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)可能会有帮助?
https://stackoverflow.com/questions/69497120
复制相似问题