分词#
术语解释#
分词(Segmentation/Tokenization)是自然语言处理(NLP)中的基础步骤,是指将一段连续的文本序列按照语义逻辑切分成多个独立词语或词元(Token)的过程。
在深度学习和翻译模型中,分词通常被称为 Tokenize,其粒度可以从字、子词(Subword)到单词不等。例如 LLaMA 系列模型采用 BPE(字节对编码)算法进行分词。
对于拉丁语系的文字来说,最简单的分词方式就是按空格隔开;而对于中文来说,由于句子中词语之间没有天然的空格分隔,此时分词便需要根据语义将句子分割成意义明确的小单位。
例如在机器学习中,常见的 jieba 分词工具就提供了两种分词模式。对于“北京大学”这个词来说:
-
普通分词:按常规分词方法将句子分割。“北京大学” 将会被分成“北京”和“大学”这两个词。
-
全分词:穷举出一个句子所有可能的分词结果。“北京大学”将会被分成“北京”、“大学”、“北京大学”这3个词。
当然,在目前大模型时代,不管是中文还是英文,分词模式都不是上述这样的简单模式,大多数模型采用的都是 BPE(字节对编码)算法进行分词,即先把原先文字还原成字节对,然后再根据语料库中编码出现的频率进行划分。例如“上海在哪儿?垚和鱻这两个生” 这句话,使用 Qwen3 Embedding 模型分词后,得到的结果将是:
文本块字符长度:13
词元编号:[100633, 18493, 103379, 11319, 122400, 33108, 100024, 119, 105932, 21287]
词元数量:10
词元内容:['上海', '在', '哪儿', '?', '垚', '和', '�', '�', '这两个', '生']注意,’�’ 和 ‘�’ 并不是出现了乱码,而是它根本不是一个字,只是字的一部分。
出现动机#
-
文本量化需求:机器学习模型只能处理数值型数据,而原始文本无法直接计算。分词是文本向量化(如词袋模型、词嵌入)的第一个关键步骤,旨在将非结构化的文本转化为模型可识别的序列。相关内容可以参见「6.1 词袋模型原理:文本特征表示与机器学习建模」
-
统一特征维度:不同的文本样本长度各异,通过分词并构建统一的词表,可以将任意长度的文本转化为固定维度的向量表示。
-
语义理解基础:分词能够帮助模型识别文本中的关键信息、语法结构以及词与词之间的依赖关系。
优点缺点#
-
优点:
-
奠定统计与特征提取基础:分词后可以进行词频统计、计算 TF-IDF 权重或进行词嵌入,从而准确地对原始文本进行特征表示。
-
捕获细粒度语义:合理的切分(如子词嵌入 fastText 或 BPE)能让模型捕捉到形态学信息,甚至能根据子词组合推测词表外(OOV)词汇的含义。
-
-
缺点:
-
歧义性(Ambiguity):同样的句子可能有多种切分方式(如“美国国会参议院”),不同的切分策略会导致完全不同的语义理解。
-
规则脆弱性:早期的基于规则的分词方法需要手动编写大量繁琐的规则,难以覆盖复杂的语言现象且极易出错。
-
维度灾难与稀疏性:如果分词粒度过细或词表过大(达数万个词),会导致生成的向量维度极高且数据极其稀疏,增加计算负担。
-
长度膨胀:不同语言、代码、URL、数字等内容会产生大量 Token,占用上下文和计算资源。
-
语义边界不自然:切分主要基于统计而非语义,Token 本身不一定对应真正的语言单位。
-
术语别名#
-
Tokenization
-
分词
-
词元化