Bert两种Fast Tokenizer输出比较

BertTokenizer是slow tokenizer,没有offset_mapping功能,所以要手动使用Fast。以下两种tokenizer输出可以一致,其中BertTokenizer也可以换成AutoTokenizer。

from tokenizers import BertWordPieceTokenizer
from transformers import BertTokenizerFast


MODEL_PATH = "/bert-base-uncased"

context="hello to World"

"""fast tokenizer of BertWordPieceTokenizer"""
tokenizer = BertWordPieceTokenizer(MODEL_PATH + "/vocab.txt", lowercase=True)
tokenized_context = tokenizer.encode(context)
print(tokenized_context)
print(tokenized_context.ids)
print(tokenized_context.type_ids)
print(tokenized_context.tokens)
print(tokenized_context.offsets)
print(tokenized_context.attention_mask)
"""fast tokenizer of BertTokenizerFast"""
tokenizer = BertTokenizerFast.from_pretrained(MODEL_PATH)
tokens = tokenizer.tokenize(context, add_special_tokens=True)
tokenized_context = tokenizer.encode_plus(context, return_offsets_mapping=True)
print(tokenized_context)
print(tokenized_context.input_ids)
print(tokenized_context.token_type_ids)
print(tokens)
print(tokenized_context.offset_mapping)
print(tokenized_context.attention_mask)

输出

Encoding(num_tokens=5, attributes=[ids, type_ids, tokens, offsets, attention_mask, special_tokens_mask, overflowing])
[101, 7592, 2000, 2088, 102]
[0, 0, 0, 0, 0]
['[CLS]', 'hello', 'to', 'world', '[SEP]']
[(0, 0), (0, 5), (6, 8), (9, 14), (0, 0)]
[1, 1, 1, 1, 1]
{'input_ids': [101, 7592, 2000, 2088, 102], 'token_type_ids': [0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1], 'offset_mapping': [(0, 0), (0, 5), (6, 8), (9, 14), (0, 0)]}
[101, 7592, 2000, 2088, 102]
[0, 0, 0, 0, 0]
['[CLS]', 'hello', 'to', 'world', '[SEP]']
[(0, 0), (0, 5), (6, 8), (9, 14), (0, 0)]
[1, 1, 1, 1, 1]
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值