我有一个使用慢标记器训练到磁盘的模型:
from transformers import convert_slow_tokenizer
from transformers import BertTokenizer, BertForSequenceClassificationa
mybert = BertForSequenceClassification.from_pretrained(PATH,
local_files_only=True,
)
tokenizer = BertTokenizer.from_pretrained(PATH,
local_files_only=True,
use_fast=True)
我可以用它来标记,如下所示:
tokenized_example = tokenizer(
mytext,
max_length=100,
truncation="only_second",
return_overflowing_tokens=True,
stride=50
)
但是,它并不快:
tokenized_example.is_fast
False
我尝试将其转换为快速的,看起来很成功
tokenizer = convert_slow_tokenizer.convert_slow_tokenizer(tokenizer)
但是,现在运行它给了我:
tokenized_example = tokenizer(
mytext,
max_length=100,
truncation="only_second",
return_overflowing_tokens=True,
stride=50
)
TypeError: 'tokenizers.Tokenizer' object is not callable
如何将这个慢速分词器转换为快速分词器?
我已经看到这个答案并且我安装了sentencepiece——这并没有解决我的问题。
@Mittenchops, tokenized_example.is_fast 为 False 的原因显然是因为它不是“FastTokenizer”。 您可以使用 Huggingface 的 FastTokenizer,而不是转换慢速标记器。
你的代码看起来像这样:
from transformers import convert_slow_tokenizer
from transformers import BertTokenizerFast, BertForSequenceClassification
mybert = BertForSequenceClassification.from_pretrained(PATH,
local_files_only=True,)
tokenizer = BertTokenizerFast.from_pretrained(PATH,
local_files_only=True,
use_fast=True)
tokenized_example = tokenizer(
mytext,
max_length=100,
truncation="only_second",
return_overflowing_tokens=True,
stride=50)
# In this case: tokenized_example.is_fast will yield True