当前位置: 首页 > article >正文

从‘你好世界’到模型输入:手把手用PyTorch+Transformers Tokenizer完成文本预处理全流程

从‘你好世界’到模型输入手把手用PyTorchTransformers Tokenizer完成文本预处理全流程当你第一次接触自然语言处理NLP时可能会被各种术语和概念搞得晕头转向。但别担心每个NLP工程师都曾经历过从Hello World开始的旅程。本文将带你一步步走过这个旅程从最基础的文本字符串开始直到构建出能够直接输入Transformer模型的张量数据。想象一下你手头有一批用户评论数据想要用BERT这样的预训练模型来分析情感倾向。原始文本就像一堆未经加工的矿石而Tokenizer就是你的炼金术工具将这些杂乱无章的文本转化为模型能够理解的数字形式。这个过程看似简单但魔鬼藏在细节中——特殊字符怎么处理最大长度如何选择填充和截断策略如何影响模型性能这些问题我们都会一一解答。1. 环境准备与基础概念在开始之前确保你已经安装了必要的Python库。推荐使用conda或pip创建一个干净的虚拟环境pip install torch transformersTransformers库提供了多种Tokenizer每种都与特定的预训练模型对应。理解这一点很重要不同的Tokenizer会产生不同的分词结果即使对同一段文本也是如此。例如from transformers import BertTokenizer, GPT2Tokenizer bert_tokenizer BertTokenizer.from_pretrained(bert-base-uncased) gpt2_tokenizer GPT2Tokenizer.from_pretrained(gpt2) text Lets explore tokenization! print(BERT tokens:, bert_tokenizer.tokenize(text)) print(GPT-2 tokens:, gpt2_tokenizer.tokenize(text))你会注意到BERT和GPT-2对Lets这个词的处理方式完全不同。这种差异源于它们各自的分词算法——BERT使用WordPiece而GPT-2使用Byte-Pair Encoding(BPE)。提示对于中文文本处理建议使用专门针对中文优化的模型如bert-base-chinese它们在处理汉字和词语时表现更好。2. 单句处理从文本到input_ids让我们从一个简单的英文句子开始看看Tokenizer如何将其转化为模型可接受的输入from transformers import AutoTokenizer tokenizer AutoTokenizer.from_pretrained(bert-base-uncased) sentence The quick brown fox jumps over the lazy dog. # 基本分词 tokens tokenizer.tokenize(sentence) print(Tokens:, tokens) # 完整编码 encoding tokenizer(sentence) print(Input IDs:, encoding[input_ids]) print(Attention Mask:, encoding[attention_mask])这里有几个关键点需要注意Tokenization过程将句子拆分为词片段subwords常见生僻词会被分解特殊标记自动添加[CLS]和[SEP]等特殊标记input_ids将token映射到词汇表中的索引attention_mask标识哪些位置是实际内容1哪些是填充0对于中文处理流程类似但有一些细微差别chinese_tokenizer AutoTokenizer.from_pretrained(bert-base-chinese) chinese_sentence 自然语言处理很有趣 print(中文Tokens:, chinese_tokenizer.tokenize(chinese_sentence))3. 批量处理与填充策略实际项目中我们很少处理单个句子而是批量处理大量文本。这时就需要考虑长度标准化问题sentences [ This is a short text., This is a much longer piece of text that will likely exceed our maximum length constraints., Medium length example here. ] # 自动填充和截断 batch_encoding tokenizer( sentences, paddingTrue, truncationTrue, max_length32, return_tensorspt # 返回PyTorch张量 ) print(Batch input IDs:\n, batch_encoding[input_ids]) print(\nAttention mask:\n, batch_encoding[attention_mask])关键参数说明参数作用推荐值padding是否填充较短序列True/Falsetruncation是否截断较长序列True/Falsemax_length最大序列长度32-512根据模型return_tensors返回张量格式ptPyTorch注意max_length的选择需要权衡——太长会浪费计算资源太短可能丢失重要信息。建议分析文本长度分布后确定。4. 高级处理句子对与token_type_ids某些任务如问答、文本蕴含需要处理句子对。这时需要使用token_type_ids来区分两个句子premise The cat sat on the mat. hypothesis The mat was occupied by the cat. pair_encoding tokenizer( premise, hypothesis, paddingTrue, truncationTrue, max_length64, return_tensorspt ) print(Token type IDs:\n, pair_encoding[token_type_ids])token_type_ids的工作原理0表示第一个句子的token1表示第二个句子的token特殊标记如[SEP]通常也被标记为15. 构建PyTorch DataLoader为了高效训练我们需要将预处理逻辑封装成Dataset和DataLoaderfrom torch.utils.data import Dataset, DataLoader class TextDataset(Dataset): def __init__(self, texts, labels, tokenizer, max_len): self.texts texts self.labels labels self.tokenizer tokenizer self.max_len max_len def __len__(self): return len(self.texts) def __getitem__(self, idx): text str(self.texts[idx]) encoding self.tokenizer( text, max_lengthself.max_len, paddingmax_length, truncationTrue, return_tensorspt ) return { input_ids: encoding[input_ids].flatten(), attention_mask: encoding[attention_mask].flatten(), labels: torch.tensor(self.labels[idx], dtypetorch.long) } # 示例使用 train_texts [text1, text2, ...] train_labels [0, 1, ...] train_dataset TextDataset(train_texts, train_labels, tokenizer, max_len128) train_loader DataLoader(train_dataset, batch_size32, shuffleTrue)6. 实战技巧与常见陷阱在实际项目中我遇到过几个容易踩坑的地方特殊字符处理表情符号、HTML标签等需要预先清理import re def clean_text(text): text re.sub(r[^], , text) # 移除HTML标签 text re.sub(rhttp\S|www\S|https\S, , text) # 移除URL return text.strip()长度统计分析文本长度分布有助于确定max_lengthimport matplotlib.pyplot as plt lengths [len(tokenizer.tokenize(text)) for text in texts] plt.hist(lengths, bins30) plt.show()词汇表外词处理OOV(Out-of-Vocabulary)词unknown_token tokenizer.unk_token print(f未知词标记: {unknown_token})多语言混合对于包含多种语言的文本考虑使用多语言模型如bert-base-multilingual-cased7. 验证预处理结果最后一步但同样重要的是验证预处理后的数据是否符合模型预期# 解码样本检查 sample next(iter(train_loader)) print(原始input_ids:, sample[input_ids][0]) decoded_text tokenizer.decode(sample[input_ids][0]) print(解码后文本:, decoded_text) # 检查attention mask print(Attention mask样本:, sample[attention_mask][0]) # 检查token_type_ids如果使用 if token_type_ids in sample: print(Token type样本:, sample[token_type_ids][0])记住预处理管道中的任何小错误都可能导致模型训练失败或性能下降。花时间验证每个步骤的输出是值得的。

相关文章:

从‘你好世界’到模型输入:手把手用PyTorch+Transformers Tokenizer完成文本预处理全流程

从‘你好世界’到模型输入:手把手用PyTorchTransformers Tokenizer完成文本预处理全流程 当你第一次接触自然语言处理(NLP)时,可能会被各种术语和概念搞得晕头转向。但别担心,每个NLP工程师都曾经历过从"Hello Wo…...

Scroll Reverser:如何为Mac用户彻底解决滚动方向混乱问题

Scroll Reverser:如何为Mac用户彻底解决滚动方向混乱问题 【免费下载链接】Scroll-Reverser Per-device scrolling prefs on macOS. 项目地址: https://gitcode.com/gh_mirrors/sc/Scroll-Reverser 作为一名Mac用户,你是否经常在触控板和外接鼠标…...

联想拯救者BIOS隐藏功能一键解锁:释放硬件潜能的终极指南

联想拯救者BIOS隐藏功能一键解锁:释放硬件潜能的终极指南 【免费下载链接】LEGION_Y7000Series_Insyde_Advanced_Settings_Tools 支持一键修改 Insyde BIOS 隐藏选项的小工具,例如关闭CFG LOCK、修改DVMT等等 项目地址: https://gitcode.com/gh_mirror…...

Path of Building汉化版终极教程:5步从新手到流放之路BD大师

Path of Building汉化版终极教程:5步从新手到流放之路BD大师 【免费下载链接】PoeCharm Path of Building Chinese version 项目地址: https://gitcode.com/gh_mirrors/po/PoeCharm 还在为流放之路复杂的角色构建而烦恼吗?面对英文界面和繁琐的计…...

如何通过BiliTools实现B站视频高效下载与AI智能总结?

如何通过BiliTools实现B站视频高效下载与AI智能总结? 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools Bi…...

别再只会用OpenCV的resize了!手把手教你用NumPy实现图像缩放(Nearest/Bilinear/Bicubic/Lanczos对比)

从零实现图像缩放:四种插值算法的NumPy实战指南 当你第一次调用cv2.resize()时,是否好奇过这个黑盒子内部究竟发生了什么?图像缩放远不止是简单的像素复制或删除,背后隐藏着数学与艺术的完美结合。本文将带你用NumPy亲手实现四种…...

终极指南:5步轻松在PC上免费畅玩Switch游戏 - Ryujinx模拟器完全教程

终极指南:5步轻松在PC上免费畅玩Switch游戏 - Ryujinx模拟器完全教程 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想在电脑上体验任天堂Switch游戏的魅力吗?…...

STK与Python联合仿真实战:构建Walker星座并自动化评估覆盖性能

1. 从零开始:STK与Python联合仿真环境搭建 第一次接触STK和Python联合仿真时,我花了两天时间才把环境配置明白。现在回想起来,其实关键步骤就几个,但当时没人指点确实走了不少弯路。先说说最基础的准备工作,我会尽量把…...

YOLOv5标注数据可视化检查:用Python脚本批量验证你的bounding box坐标转换是否正确

YOLOv5标注数据可视化检查:用Python脚本批量验证你的bounding box坐标转换是否正确 在目标检测项目中,数据标注的质量直接决定了模型的性能上限。许多工程师花费大量时间调整模型结构和超参数,却忽略了最基础的标注数据验证环节。特别是在使…...

终极指南:如何用AI篮球分析工具快速提升投篮命中率

终极指南:如何用AI篮球分析工具快速提升投篮命中率 【免费下载链接】AI-basketball-analysis :basketball::robot::basketball: AI web app and API to analyze basketball shots and shooting pose. 项目地址: https://gitcode.com/gh_mirrors/ai/AI-basketball-…...

2025届毕业生推荐的六大降AI率工具推荐

Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 在学术写作跟内容创作这个领域当中,文字重复率过于高是较为常见的问题。专业降重…...

Windows平台B站观影终极指南:BiliBili-UWP第三方客户端完整使用教程

Windows平台B站观影终极指南:BiliBili-UWP第三方客户端完整使用教程 【免费下载链接】BiliBili-UWP BiliBili的UWP客户端,当然,是第三方的了 项目地址: https://gitcode.com/gh_mirrors/bi/BiliBili-UWP 还在为Windows上观看B站视频时…...

避坑指南:Stata做面板VAR和格兰杰检验时,90%的人都会忽略的5个细节

Stata面板VAR与格兰杰检验实战避坑手册:5个高阶用户必知的技术细节 当你熬夜跑完最后一组面板VAR模型,看着屏幕上那些不显著的系数和宽如长江的置信区间,是否开始怀疑人生?作为经历过无数次模型崩溃又重建的Stata老手,…...

AI核心知识130—大语言模型之 多模态大模型(简洁且通俗易懂版)

如果说我们之前聊的纯文本大模型(如早期的 ChatGPT 或 LLaMA)是极其聪明但被关在小黑屋里的“缸中之脑” (只能靠别人从门缝里递纸条来交流);那么多模态大模型 (Multimodal AI) 就是给这个超级大脑装上了眼睛、耳朵和嘴…...

终极指南:使用LeetDown为iPhone和iPad进行快速降级恢复

终极指南:使用LeetDown为iPhone和iPad进行快速降级恢复 【免费下载链接】LeetDown a GUI macOS Downgrade Tool for A6 and A7 iDevices 项目地址: https://gitcode.com/gh_mirrors/le/LeetDown 你是否拥有一台运行缓慢的iPhone 5s或iPad 4?苹果的…...

告别手动截图!用Lumerical脚本批量导出FDTD仿真数据(附Python处理代码)

告别手动截图!用Lumerical脚本批量导出FDTD仿真数据(附Python处理代码) 在光学仿真领域,时间就是科研生命线。当你在凌晨三点盯着屏幕上第27次重复的"截图-重命名-保存"操作时,是否想过那些被浪费在机械操作…...

AGI可解释性革命,从黑箱到因果推演:符号逻辑嵌入Transformer的4种工程化方案(附GitHub开源框架清单)

第一章:AGI的符号推理与连接主义融合 2026奇点智能技术大会(https://ml-summit.org) 人工通用智能(AGI)的实现路径长期面临“符号主义”与“连接主义”的范式张力。符号系统擅长形式化逻辑推演、可解释性规则表达和组合泛化,而深…...

一次讲透 ABAP 外部调试里的 Request-based Debugging

做过线上问题定位的人,大多都见过这种场景。界面层一切看起来都正常,按钮也点下去了,前台动作也完成了,可后台真正跑到哪台应用服务器、落到哪个用户上下文、最终由哪个 RFC 会话接手,现场支持往往并不透明。资料里给出的那个在线商店例子就特别典型,一本大约 50 美元的书…...

从VGG16到MobileNetV1:我是如何把模型‘塞进’手机的?轻量化实战心得分享

从VGG16到MobileNetV1:移动端模型轻量化实战全解析 第一次尝试把服务器上的VGG16模型部署到手机端时,我遇到了所有移动端开发者都会头疼的问题——模型体积膨胀到500MB,推理速度慢得像老牛拉车,手机发烫到能煎鸡蛋。这让我意识到…...

G-Helper深度解析:华硕笔记本性能控制的轻量化革命

G-Helper深度解析:华硕笔记本性能控制的轻量化革命 【免费下载链接】g-helper Lightweight, open-source control tool for ASUS laptops and ROG Ally. Manage performance modes, fans, GPU, battery, and RGB lighting across Zephyrus, Flow, TUF, Strix, Scar,…...

AGI数学证明能力测评报告(2026Q1):仅17%模型通过ZFC一致性子集测试,你的系统在第几层?

第一章:AGI数学证明能力测评报告(2026Q1)核心结论发布 2026奇点智能技术大会(https://ml-summit.org) 本季度测评覆盖全球17个主流AGI系统,聚焦形式化定理证明、构造性证明生成与跨公理体系一致性验证三大维度,在Coq…...

Windows 11游戏兼容终极指南:让经典游戏重获新生

Windows 11游戏兼容终极指南:让经典游戏重获新生 【免费下载链接】dxwrapper Fixes compatibility issues with older games running on Windows 10/11 by wrapping DirectX dlls. Also allows loading custom libraries with the file extension .asi into game pr…...

RHEL9.4换Rocky源后,openssl报错别慌!手把手教你修复libs与fips-provider冲突(附EFI启动修复脚本)

RHEL9.4迁移Rocky源后openssl冲突全解:从报错分析到EFI启动修复 最近在帮客户做RHEL9.4到Rocky Linux 9.4的迁移时,遇到了一个棘手的问题——更换软件源后openssl相关组件开始频繁报错,严重时甚至导致系统无法正常启动。这个问题在Rocky官方论…...

从论文到代码:手把手复现CVPR2019人体解析冠军模型SCHP

从论文到代码:手把手复现CVPR2019人体解析冠军模型SCHP 在计算机视觉领域,人体解析(Human Parsing)一直是极具挑战性的研究方向。这项技术需要将人体图像中的每个像素精确分类到不同语义部位,如头发、上衣、裤子等。20…...

深入解析高通cDSP:从硬件架构到性能调优的实战指南

1. 高通cDSP:嵌入式开发的性能加速器 第一次接触高通cDSP是在开发智能门锁的人脸识别模块时,CPU处理1080P图像要300ms,而移植到cDSP后直接降到80ms,功耗还降低了60%。这个经历让我意识到,掌握cDSP就像获得了一把嵌入式…...

终极指南:如何免费永久冻结IDM试用期并彻底告别激活弹窗

终极指南:如何免费永久冻结IDM试用期并彻底告别激活弹窗 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script Internet Download Manager(IDM&…...

如何用OBS StreamFX插件彻底改变你的直播画面质感

如何用OBS StreamFX插件彻底改变你的直播画面质感 【免费下载链接】obs-StreamFX StreamFX is a plugin for OBS Studio which adds many new effects, filters, sources, transitions and encoders! Be it 3D Transform, Blur, complex Masking, or even custom shaders, youl…...

AGI决策链路可追溯性评估实战:用符号执行+神经溯源图定位规划偏差源头(附开源验证工具链)

第一章:AGI的规划与决策能力评估 2026奇点智能技术大会(https://ml-summit.org) AGI的规划与决策能力并非单一维度指标,而是融合目标分解、多步推理、不确定性建模与动态环境适应的复合能力。当前主流评估框架(如GPQA、ALFWorld、ToolFormer…...

CSS Grid布局完全指南:从入门到精通的响应式设计实战

CSS Grid布局完全指南:从入门到精通的响应式设计实战 ⭐⭐⭐ 💡 摘要: CSS Grid是现代CSS最强大的布局系统!本文从基础概念到高级技巧,全面解析Grid布局的核心用法。包含20个实用案例、响应式设计模式、与Flexbox对比、浏览器兼容性方案。实测数据显示:使…...

AzurLaneAutoScript技术深度解析:通过图像识别与自动化架构实现多服务器游戏自动化

AzurLaneAutoScript技术深度解析:通过图像识别与自动化架构实现多服务器游戏自动化 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLa…...