From f63e6895facb23c5850a7a0fc594bad46b5f6c5d Mon Sep 17 00:00:00 2001 From: KMnO4-zx <1021385881@qq.com> Date: Sun, 11 Aug 2024 21:45:57 +0800 Subject: [PATCH] complete tokenizer --- docs/chapter5/5.3 训练 Tokenizer.md | 37 ++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/docs/chapter5/5.3 训练 Tokenizer.md b/docs/chapter5/5.3 训练 Tokenizer.md index 3f0c509..411f520 100644 --- a/docs/chapter5/5.3 训练 Tokenizer.md +++ b/docs/chapter5/5.3 训练 Tokenizer.md @@ -182,4 +182,39 @@ print(encoding.ids) (2)使用 transformers 库加载 Tokenizer -首先我们 +我们可以使用 transformer 库中的 `PreTrainedTokenizerFast` 来加载训练好的 Tokenizer。 + +```python +# 使用 transformers 库加载 Tokenizer +from transformers import PreTrainedTokenizerFast +# tokenizer_file 是训练好的 Tokenizer 文件路径 +fast_tokenizer = PreTrainedTokenizerFast(tokenizer_file="tokenizer_test/llama-bpe-tokenizer.json", pad_token="", bos_token="", eos_token="", unk_token="") + +fast_tokenizer.encode('how old are you?'), fast_tokenizer.decode(fast_tokenizer.encode('how old are you?')) + + +# ([2680, 1575, 1354, 2458, 34], 'how old are you?') +``` + +在这个例子中,我们使用 transformers 库中的 `PreTrainedTokenizerFast` 类加载训练好的 Tokenizer,并使用 `encode()` 和 `decode()` 方法对文本进行分词和解码。 + +最后,我们可以将其保存为一个 `AutoTokenizer` 可以直接加载的格式。 + +```python +fast_tokenizer.save_pretrained("tokenizer_test/llama-bpe-tokenizer") +``` + +(3)使用 transformers.AutoTokenizer 加载 Tokenizer + +```python +from transformers import AutoTokenizer + +tokenizer = AutoTokenizer.from_pretrained("tokenizer_test/llama-bpe-tokenizer") + +text = "I am 18 years old!" +tokenizer.encode(text), tokenizer.decode(tokenizer.encode(text)) + +# ([44, 1286, 1481, 1749, 1575, 4], 'I am 18 years old!') +``` + +OK,到这里我们已经完成了 BPE Tokenizer 完整的训绋和使用流程。通过训练一个 Tokenizer,我们可以更好地处理文本数据,提高模型的泛化能力和效果。 \ No newline at end of file