NLP领域Tokenization与Segmentation的核心区别是什么
很多入门者容易混淆两个概念,二者的核心差异可以从定位、目标、处理逻辑三个维度区分:
1. 定义与覆盖范围不同
- Segmentation(分割)是NLP前置预处理的通用类任务统称,核心是按照语义边界将连续无分隔的原始文本切割为符合人类语言习惯的独立单元,覆盖多个粒度:
- 篇章分割:把长文本切为独立篇章/段落
- 句子分割:把连续文本切为独立句子
- 词/字分割:无空格的语言(如中文、日文)中将连续字串切为独立词
- Tokenization(令牌化)是面向模型输入的专属处理步骤,核心是将已经完成粗分割的文本,转换为预训练模型词表支持的最小输入单元(即Token),仅覆盖「模型最小输入单元」这一个固定粒度。
2. 处理逻辑不同
- Segmentation的判断依据完全是语言本身的语法、语义规则,切割后的单元一定具备独立完整的语义,比如句子分割会排除缩写后的点(如
Mr.后的.不会被判定为句末),中文分词会优先把相邻字组成的合法词汇作为一个分割单元。 - Tokenization的判断依据是所用模型的词表和预设的拆分算法(如BPE、WordPiece、Unigram),切割后的Token不一定具备独立完整语义,会优先匹配词表中最长的存在单元,匹配不到就拆分为更小的子单元,极端情况会拆为单个字符。
3. 直观例子对比
以中文句子我最近在学习自然语言处理相关的技术为例:
词粒度Segmentation结果(中文分词):
["我", "最近", "在", "学习", "自然语言处理", "相关", "的", "技术"],每个单元都有独立语义
某单字粒度BERT模型的Tokenization结果:["我", "最", "近", "在", "学", "习", "自", "然", "语", "言", "处", "理", "相", "关", "的", "技", "术"],会把词拆为单字匹配词表
以英文句子I enjoy playing badminton in my spare time为例:
词粒度Segmentation结果(按空格拆分):
["I", "enjoy", "playing", "badminton", "in", "my", "spare", "time"]
某GPT模型的Tokenization结果:["I", "enjoy", "play", "ing", "bad", "minton", "in", "my", "spare", "time"],会把playing拆为play+ing、badminton拆为bad+minton匹配词表
常见混淆点说明
很多人会把中文分词和Tokenization划等号,本质是早期不少中文NLP模型的词表采用词粒度设计,分词结果刚好和Tokenization结果重合,但二者的底层逻辑完全不同,不属于同一类任务。
内容的提问来源于stack exchange,提问作者Mahmoud Noor

