Transformer中的Tokenizer分词器使用学习

1.加载

tokenizer是进行语言处理的基础,transformer实现分词器的基类是

tokenizer = AutoTokenizer.from_pretrained(tokenizer_type)

后面可以通过from_pretrained函数中的retrained_model_name_or_path()方法,指定路径或者模型名称来加载对应的分词器。

文档给的实例

tokenizer = AutoTokenizer.from_pretrained('bert-base-uncased') # Download vocabulary from S3 and cache.
tokenizer = AutoTokenizer.from_pretrained('./test/bert_saved_model/') # E.g. tokenizer was saved using `save_pretrained('./test/saved_model/')`

分别从Amazon的s3里直接下载以及从本地路径读取。

2.分词器的核心函数

2.1 tokenize

作为分词器,首先一定是进行分词操作。

from transformers.tokenization_bert import BertTokenizer

tokenizer
= BertTokenizer.from_pretrained("bert-base-uncased") print("词典大小:",tokenizer.vocab_size) text = "hello world!I am Lisa." tokens = tokenizer.tokenize(text) print("分词结果",tokens)

词典大小: 30522

分词结果: ['hello', 'world', '!', 'I', 'am', 'Lisa', '.']


这里使用了Bert的分词器,注意Bert会将不常用的词汇进行细分,比如fearless,经过分词会给出 'fear','##less'。使用双#号表示连续词汇的分词。

2.2 Encode

编码操作,实现了分词tokenize和词汇的编码convert_tokens_to_ids。首先将会对输入序列进行分词操作,之后将分词的结果进行编码,将词汇转换为词典中的id返回。

self.convert_tokens_to_ids(self.tokenize(text))

这里的结果是一个列表,包含多个id,如

[24,64,8636,414,125,23,982]

2.3 Decode

解码操作,实现了词汇的解码convert_ids_to_tokens和转换convert_tokens_to_string。首先会将给出的编码输入,如上面的id列表,转换成相应的分词结果,再转换成相应的输入序列。

self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids))
posted @ 2022-04-19 16:15  梦想是能睡八小时的猪  阅读(4804)  评论(0编辑  收藏  举报