Source
- https://www.cnblogs.com/carolsun/p/16903276.html
開場
HuggingFace 的 transformers 大概是所有做大語言模型都會使用 API。大語言模型分成兩個部分:tokenizer 和 LLM (transformer network). 兩者基本是完全獨立的模組。
transformer 中 tokenizer 的那些事
Tokenizer 基本做兩件事:分詞和編碼。 Huggingface中的tokenizers 进行文本分词,其中有很多函数,tokenizer.tokenize
、tokenizer,convert_tokens_to_ids
、tokenizer.encode
、tokenizer
、tokenizer.encode_plus
、tokenizer.pad
在使用的时候经常会傻傻分不清楚,希望在这里对常用到的函数进行说明。
1 |
|
我们使用tokenizer的目的分为两种,一个是分词,一个是编码。输入的内容分为两种,一种是纯文本 (“this is a dog”),一种是已经分好词的token id list [123, 23, 34].
如果你传入的是纯文本
- 分词
- 两步,转为token id list(不带cls 和 sep)
1 |
|
- 一步直接转为token id list (带cls 和sep,带truncation,带padding)
1 |
|
- 编码
1 |
|
如果你传入的是已经分好词的token list
- 编码:和对文本
tokenizer
的结果是一致的
1 |
|
- 转换为tensor
1 |
|