You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Tokenizer与TokenizerFast对同一句子编码结果不同?

问题原因分析

核心差异来自于do_basic_tokenize参数对Tokenizer处理流程的本质影响:

  • 当do_basic_tokenize=True时,Tokenizer会先执行基础分词步骤:

    • 自动拆分文本中的特殊符号(比如测试文本里的--)、连字符(比如Ritz-Carlton中的-),将它们与单词拆分成独立的原子单元;
    • 完成空格、大小写标准化等前置处理;
    • 再把这些拆分好的单元传给子词分词器(如BPE、WordPiece)处理。
      由于基础分词的规则固定无歧义,多次编码同一文本的结果会完全一致。
  • 当do_basic_tokenize=False时,Tokenizer会跳过基础拆分步骤,直接把整段连续文本传给子词分词器:

    • 子词分词器会从文本开头尝试匹配词汇表中的最长可能子词,对于带特殊符号的字符串(如Ritz-Carlton、--),如果完整字符串不在词汇表内,拆分逻辑会完全依赖词汇表覆盖范围,最终得到和开启基础分词时完全不同的子词组合;
    • 比如测试文本中的Ritz-Carlton,开启基础分词时会被拆成Ritz、-、Carlton三个单元再分别处理;关闭基础分词时,子词分词器会把它当成一个整体,可能拆成Ritz、-Carl、ton这类差异极大的子词,直接导致编码结果不一致。

简单来说,基础分词是给子词分词器做“预处理兜底”,确保特殊符号、复合词被拆成无歧义单元;跳过这一步会让子词分词器直接处理原始字符串,结果自然会出现差异。

内容的提问来源于stack exchange,提问作者feng shen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 11:23:19