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

Tokenizer 分词

Tokenizer 的核心任务是将人类可读的自然语言文本转换为模型可以处理的离散 token 序列是大模型性能的基础瓶颈之一。为什么不直接按字 / 词分词按字分词词汇表太小中文约 3000 常用字但序列长度会爆炸人工智能 变成 4 个 token导致计算成本指数级上升且丢失了词级语义。按词分词序列长度最短但词汇表会无限大新词、专有名词、错别字无法处理且中文没有天然空格分隔分词错误会直接导致语义错误。我们需要一种介于字和词之间的分词单位 —— 子词Subword既能控制词汇表大小又能处理未登录词OOV。BPEByte Pair Encoding最经典的子词算法BPE 是 GPT 系列、LLaMA 系列使用的分词算法核心思想是统计最频繁出现的相邻字符对将其合并为一个新的 token迭代直到达到预设的词汇表大小。完整流程示例初始词汇表所有单个字符{a, b, c, ..., z, _, ...}_表示单词开头统计语料中所有相邻字符对的出现频率合并频率最高的字符对加入词汇表重复步骤 2-3直到词汇表大小达到目标通常为 32k-128k例子语料low low low newer newer wider wider第一次合并er出现 4 次→ 词汇表新增er每次只合并当前频率最高的一对字符第二次合并_n出现 2 次→ 词汇表新增_n 合并至最后最终分词其为贪心合并[low] _ [low] _ [low] [_n] [ew] [er] [_n] [ew] [er] _ [wid] [er] _ [wid] [er]SentencePiece谷歌的通用分词方案SentencePiece 是 BPE 的改进版解决了 BPE 的两个核心问题语言无关性不需要预先对文本进行分词如中文分词直接将输入视为 Unicode 字符流空格处理将空格本身作为一个普通字符处理而不是单词分隔符SentencePiece 的两个核心改进Byte-level BPE初始词汇表固定包含 256 个 UTF-8 字节 特殊 tokens,/s,pad等文本预处理将输入文本直接转换为 UTF-8 字节流BPE 合并和传统 BPE 完全一样统计相邻字节对的频率合并最高频的字节对终止条件直到词汇表大小达到预设目标通常为 32k-128kUnigram Language Model概率最大的分词就是最优分词完整训练流程构建初始大词汇表包含语料中所有出现过的字符以及所有出现频率超过阈值的 n-gram通常是 1-6 gram计算每个 token 的概率使用 EM 算法期望最大化计算每个 token 在语料中的最优概率计算每个 token 的损失如果删除这个 token语料的对数似然会下降多少删除损失最小的 token保留损失最大的 token即对语料贡献最大的 token重复步骤 2-4直到词汇表大小达到预设目标第二步使用 Viterbi 算法进行分词训练完成后我们得到了一个词汇表和每个 token 的概率。对于一个新的句子我们使用Viterbi 算法快速找到概率最大的分词方式。Viterbi 算法是一个动态规划算法它可以在 O (nL) 的时间复杂度内找到最优分词其中 n 是句子长度L 是词汇表中最长 token 的长度。特性Unigram LMBPE字节对编码分词方式全局最优基于概率最大化贪心局部最优基于频率合并训练方向从超大初始词汇表逐步删除从单个字符逐步合并概率模型有明确的概率模型每个 token 都有概率无概率模型只有合并规则输出能力可以输出多个候选分词及其概率只能输出唯一的分词结果生僻字处理与 byte_fallback 天然兼容鲁棒性好生僻字容易被拆成单个字符鲁棒性差多语言支持对无词边界语言中文、日文表现更好对有词边界语言英文表现较好token 是怎么变成数字的这个过程非常简单分为两步构建词汇表Vocabulary分词算法训练完成后会生成一个固定的词汇表每个 token 对应一个唯一的整数 ID映射Lookup将分词后的 token 序列通过词汇表映射为对应的整数 ID 序列例子词汇表{我: 100, 爱: 200, 人工: 300, 智能: 400}文本我爱人工智能分词结果[我, 爱, 人工, 智能]数字序列[100, 200, 300, 400]注意词汇表中还会包含一些特殊 token如s句子开始/s句子结束pad填充 token用于将不同长度的序列对齐到相同长度unk未知 token虽然现代分词器几乎不会出现为什么中文分词会影响模型效果中文没有天然空格分隔英文单词之间有空格分词歧义少中文需要模型自己判断词的边界分词错误会直接导致语义错误如 南京市长江大桥 可能被错误分为 南京 / 市长 / 江大桥子词粒度的平衡粒度过细接近字序列长度增加计算成本上升且丢失词级语义粒度过粗接近词词汇表变大未登录词增多模型泛化能力下降中文的最优子词粒度与英文不同需要专门针对中文语料训练分词器词汇表覆盖度中文的常用字约 3000 个但常用词超过 10 万个还有大量的专有名词、成语、网络用语如果分词器的词汇表没有覆盖这些词就会将其拆分为无意义的子词导致模型无法理解歧义消解中文存在大量的分词歧义如 乒乓球拍卖完了 可以分为 乒乓球 / 拍卖 / 完了 或 乒乓 / 球拍 / 卖完了分词器的歧义消解能力直接影响模型的语义理解能力
http://www.zskr.cn/news/1394544.html

相关文章:

  • GPT-4o在Verilog代码生成与验证中的应用实践
  • 别再只会调亮度了!深入聊聊51单片机PWM调光背后的那些“坑”:频闪、档位与ADC采样
  • 技术视角解读:一套合格的信创CMS需要具备哪些架构级能力?
  • Appium环境搭建避坑指南:四层依赖验证与全平台实操
  • 深入对比:STM32独立看门狗(IWDG) vs 窗口看门狗(WWDG) vs SP706硬件狗,你的项目该选哪个?
  • Vivado 2018.3 和 Modelsim 10.6c 联合仿真保姆级教程(附版本对照表)
  • 对比按量计费,Taotoken的Token Plan为重度用户带来了显著的节省
  • Zotero文献格式化终极指南:一键打造专业级学术文献库
  • LaDen:基于语义嵌入的语音增强测试时自适应方法解析
  • Unity字符串转数字的健壮性实践:从TryParse到自定义解析
  • 别再只用轮廓系数了!用Python的sklearn实战MI、NMI、AMI,手把手教你评估聚类效果
  • 告别窗口乱跳!用MacForge和AfloatX插件,轻松实现Mac窗口置顶与透明度调节
  • 2026儿童模拟人哪家好?教学模型选择参考 - 品牌排行榜
  • 如何用res-downloader轻松获取无水印视频资源:3分钟上手完全指南
  • AlphaFold 3终极指南:从蛋白质结构预测到配体复合物建模的完整实战
  • 利用 Taotoken 实现 AI 应用开发中的模型降级与故障转移策略
  • Pandas reset_index深度解析:索引重建原理与工程避坑指南
  • DEA模型选哪个?一篇讲清CCR、BCC、超效率DEA和Malmquist指数的区别与适用场景
  • Agiwo:从智能体工具调用到生产级运行时编排的设计解析
  • 泉山区昂恒泰百货商行:铜山专业的名茶回收公司 - LYL仔仔
  • 长期使用Taotoken后对月度账单可预测性的实际感受
  • STM32高级定时器TIM1实战:用互补PWM驱动无刷电机,CubeMX死区时间配置详解
  • 2025-2026北京法式全屋定制 - 资讯速览
  • 北京法式全屋定制决策:四类场景适配品牌实用解析 - 资讯速览
  • Unity UGUI性能优化实战:UIEffect高级模糊与阴影的正确打开方式
  • Windows Cleaner:三步解决C盘爆红问题的开源清理神器
  • Linux 负载均衡的 cpu_load:CPU 负载历史的跟踪
  • 在vscode中结合taotoken为hermes agent配置自定义模型源
  • 告别内核升级烦恼:Realtek r8125 DKMS驱动让你轻松拥有2.5G网络体验
  • AI搜题软件推荐|Hanako 开源AI悬浮球搜题客户端使用教程、自动答题、支持自定义模型