transformers有关tokenzier的几个函数

1、想要知道每个piece属于哪个word:

tokenizer = AutoTokenizer.from_pretrained("bert-base-cased", use_fast=True)#use fast tokenizer
piece2word = tokenizer(input_text).words()#首尾为special token

记住: .words()要用fast tokenzier才行,不然会报错:ValueError: words() is not available when using Python-based tokenizers

2、想要知道每个piece在原输入中所在的位置:

tokenizer = AutoTokenizer.from_pretrained("bert-base-cased", use_fast=True)#use fast tokenizer
offset_tuple = tokenizer.encode_plus(input_text, return_offsets_mapping=True).offset_mapping #首尾为special token,下标从0开始,tuple可以看成左闭右开

3、tokenizer.encode_plus()和tokenizer()在input_ids上的区别:

tokenizer = AutoTokenizer.from_pretrained("bert-base-cased", use_fast=True)#use fast tokenizer
input = tokenizer(input_text)
# V.S.
inputs = tokenizer.encode_plus(input_text, max_length=512, pad_to_max_length=False,add_special_tokens = True, return_tensors='pt')

在这里插入图片描述
可以发现:直接tokenizer返回的input_ids是一个一维的list,而用tokenizer.encode_plus()返回的input_ids是一个二维的tensor,此时称为batch_input_ids更合适。

你可能感兴趣的:(BERT,自然语言处理)