HuggingFace课程笔记:深入理解Tokenizer与模型输入处理

HuggingFace课程笔记:深入理解Tokenizer与模型输入处理

course The Hugging Face course on Transformers course 项目地址: https://gitcode.com/gh_mirrors/cou/course

在自然语言处理(NLP)任务中,将原始文本转换为模型可理解的输入格式是一个关键步骤。本文将系统性地介绍如何使用HuggingFace Transformers库中的Tokenizer工具高效完成这一过程。

Tokenizer的高阶功能

现代Transformer模型通常需要将文本转换为特定的数值表示形式。虽然我们可以手动完成分词、转换为ID、填充和截断等步骤,但HuggingFace的Tokenizer提供了更高级的封装方法。

from transformers import AutoTokenizer

checkpoint = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
sequence = "I've been waiting for a HuggingFace course my whole life."
model_inputs = tokenizer(sequence)

这段简单的代码实际上完成了多个处理步骤,返回的model_inputs包含了模型所需的所有输入要素。

多序列处理与填充策略

Tokenizer不仅能处理单个序列,还能高效处理多个序列,并自动处理长度不一致的问题:

sequences = ["I've been waiting for a HuggingFace course my whole life.", "So have I!"]
model_inputs = tokenizer(sequences)

填充策略可以通过padding参数灵活控制:

  1. padding="longest":按批次中最长序列进行填充
  2. padding="max_length":按模型最大长度填充(如BERT为512)
  3. 也可指定自定义最大长度:padding="max_length", max_length=8

序列截断处理

对于过长的序列,Tokenizer提供了截断功能:

# 按模型最大长度截断
model_inputs = tokenizer(sequences, truncation=True)

# 按指定长度截断
model_inputs = tokenizer(sequences, max_length=8, truncation=True)

框架特定的张量输出

Tokenizer还能直接输出不同深度学习框架所需的张量格式:

# PyTorch张量
model_inputs = tokenizer(sequences, padding=True, return_tensors="pt")

# NumPy数组
model_inputs = tokenizer(sequences, padding=True, return_tensors="np")

特殊标记解析

观察Tokenizer的输出,会发现比手动处理多了一些特殊标记:

[101, 1045, 1005, 2310, 2042, 3403, 2005, 1037, 17662, 12172, 2607, 2026, 2878, 2166, 1012, 102]

这些额外的ID对应着特殊标记[CLS][SEP],分别表示序列的开始和结束。不同模型可能使用不同的特殊标记方案,Tokenizer会自动处理这些差异。

完整流程示例

将Tokenizer与模型结合使用的完整示例如下:

import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification

checkpoint = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(checkpoint)
model = AutoModelForSequenceClassification.from_pretrained(checkpoint)
sequences = ["I've been waiting for a HuggingFace course my whole life.", "So have I!"]

# 自动处理填充和截断
tokens = tokenizer(sequences, padding=True, truncation=True, return_tensors="pt")
output = model(**tokens)

通过这种方式,我们可以轻松地将原始文本转换为模型可直接处理的输入格式,大大简化了NLP任务的预处理流程。

course The Hugging Face course on Transformers course 项目地址: https://gitcode.com/gh_mirrors/cou/course

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纪亚钧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值