s1 = 'albums sold 26739812837 copies'
s2 = 'technically perfect,melodically correct'
s3 = 'featuring a previously unheard track'
s4 = 'best-selling music atrist'
s5 = 's1 d2 o1 and o2'
s6 = 'asbofwheohwsahi'

实例化tokenizer

from transformer import BertTokenizer
model_name='bert-base-uncased'
tokenizer = BertTokenizer.from_pretained(model_name)

vocab

  • tokenizer.vocab vs tokenizer.ids_to_tokens
  • len(tokenizer.vocab) == 30522
tokenizer.vocab
tokenizer.ids_to_tokens
len(tokenizer.vocab)
tokenizer.vocab['[UNK]']
tokenizer.tokenize('bestselling')
for token,id in tokenizer.vocab.items():
	if token.startswith('##'):
		print(token)
		cnt_sharp+=1
print(cnt_sharp)

样本子词测试

inputs = tokenzer(s1)
print(inputs)
print(tokenizer.convert_ids_to_token(inputs['input_ids']))
tokenizer.decode(inputs['input_ids'])

summary

  • tokenizer 轻易不会吧一个词处理为’[UNK](100)’
  • 基于词汇表,tokenizer,encode,decode一体
    • tokenizer:word==>token(s),将word尽可能的映射为vocab中的keys
    • encode:token==>id
    • decode:id==>token==>word
      • encode完了之后不是终点(word),decode还要能很好的将id还原,尽可能的与输入的word对齐