1、 什么是分词?
分词是将非结构化文本转换为机器学习模型可理解的结构化格式的过程。其核心在于将一段文本(无论是句子、段落还是文档)分割为更小的可管理单元,即“token”。根据所采用的分词策略,这些token可以是单词、子词,甚至是单个字符。分词后,每个token会从预定义词汇表中分配一个数字ID,从而将文本转换为如下所示的数字序列:
接下来,通过查表从预训练的嵌入矩阵中为每个token ID检索词嵌入(向量表示)。这些嵌入捕捉了语义含义,使模型能够理解单词之间的关系,例如“cat”和“kitten”的相似性。这一过程是NLP任务的基础。
2、分词的类型
根据token的粒度,分词策略主要有三种类型:字符级、词级和子词级分词。每种方法各有优劣,具体选择取决于NLP任务的特定需求。
2.1 字符级分词
在字符级标分词中,文本被分割为单个字符。例如,单词“hello”会被标记为[“h”, “e”, “l”, “l”, “o”]。
优势:
- 有效处理罕见词或词汇表外(OOV)词,因为所有可能的字符都包含在词汇表中。
- 适用于形态复杂或词边界模糊的语言(如中文、日文)。
- 与词级分词相比,词汇表规模更小。
劣势:
- 导致序列变长,增加计算复杂度。
- 丢失词级语义,使模型更难捕捉词间关系。
2.2 词级分词
在词级分词中,文本被分割为单个单词。例如,句子“I love coding”会被标记为[“I”, “love”, “coding”]。
优势:
- 保留词级语义,便于模型理解词间关系。
- 与字符级分词相比,序列更短,减少计算开销。
劣势:
- 难以处理罕见词或未见过的词(OOV问题)。
- 词汇表规模可能极大,尤其在形态丰富的语言或处理领域特定术语时。
2.3 子词级分词
子词级分词将单词分割为更小的单元,如前缀、后缀或其他有意义的子词成分。例如,单词“unbelievable”可能被标记为[“un”, “believ”, “able”]。子词级分词的常用算法包括字节对编码(BPE)、WordPiece(用于BERT)和SentencePiece。
优势:
- 平衡了字符级和词级分词的优缺点,既能轻松处理OOV词,又能保持较短序列
- 捕捉形态信息,适用于词结构复杂的语言。
- 与词级分词相比,减少词汇表规模,同时保留部分语义。
劣势:
- 需要仔细调整子词分割算法,避免过度分割或分割不足。
- 单词分割方式可能仍存在歧义,尤其对于形态边界不明确的语言。
3、字节对编码(BPE)
字节对编码(BPE)一种平衡词汇量与OOV处理能力的子词分词算法,通过迭代合并最频繁的字符/子词对进行文本压缩。该方法在保留常见完整词的同时拆分罕见词,既高效处理未知词又避免词汇膨胀。
BPE的一个关键优势是能够避免对模型性能不利的UNK(未知)token。当单词不在模型词汇表中时,会产生UNK token,导致:
- 信息丢失:模型丢弃与未知词相关的所有上下文和含义。
- 语言表示低效:过多UNK token会扭曲模型对输入的理解。
- 泛化能力差:当UNK token普遍存在时,模型难以泛化到未见文本。
- 下游任务性能下降:翻译或摘要等任务会因误解而受损。
3.1 BPE的工作原理
-
预分词:输入文本首先被分词为更小的单元,通常通过空格或标点分割。例如,句子“applied deep learning”可能被分割为[“applied”, “deep”, “learning”]。
-
初始词汇表:初始词汇表由文本中的所有单个字符组成。例如,单词“deep”会被拆分为[“d”, “e”, “e”, “p”]。
-
迭代合并:BPE迭代合并最频繁的字符或token对。例如,如果对(“e”, “e”)是最频繁的,会被合并为单个标记"ee",并添加到词汇表中。
-
词汇表更新:合并过程持续到达到预定义的词汇表大小,每次合并操作都会创建新token并添加到词汇表。
-
最终分词:词汇表确定后,使用学习到的子词单元对文本进行分词。
3.2 示例
以输入文本“low lower lowest”为例:
步骤1:初始字符级分词 → [“l”, “o”, “w”, “l”, “o”, “w”, “e”, “r”, “l”, “o”, “w”, “e”, “s”, “t”]
步骤2:统计字符对频率,最频繁对为"l"和"o"(出现3次)。
步骤3:合并为新标记"lo" → [“lo”, “w”, “lo”, “w”, “e”, “r”, “lo”, “w”, “e”, “s”, “t”]
步骤4:重新统计对频率,最频繁对为"lo"和"w"(出现3次)。
步骤5:合并为新标记"low" → [“low”, “low”, “e”, “r”, “low”, “e”, “s”, “t”]
步骤6:统计对频率,最频繁对为"e"和"r"、“e"和"s”(各1次),任选"e"和"r"合并。
步骤7:合并为"er" → [“low”, “low”, “er”, “low”, “e”, “s”, “t”]
步骤8:最后一次迭代,合并"low"和"er" → 最终分词为[“low”, “lower”, “low”, “e”, “s”, “t”]
优势与局限性
- 优势:有效处理OOV词,可适应不同语言。
- 局限性:需要预分词,对中文等无空格语言处理困难。
4、WordPiece
WordPiece是一种类似于BPE的子词分词算法,但其核心区别在于选择合并token的方式:WordPiece不是合并最频繁的对,而是合并能最大化训练数据似然的对,这使其在BERT等模型中尤为有效。
“最大化训练数据似然” 可以简单理解为:合并两个字符 / 子词后,让模型预测整个句子的概率变得更高。WordPiece 的核心就是每次选择合并时,都要计算 “合并后是否让整个训练数据的预测更准确”,而不是单纯选出现最多的组合。
4.1 WordPiece的工作原理
-
初始词汇表:与BPE类似,从单个字符的词汇表开始。
-
似然最大化:WordPiece选择合并后能最大化训练数据似然的token对,通过计算对的概率除以单个token概率的乘积来确定,即选择使P(tok1,tok2)/(P(tok1)×P(tok2))最大化的对(tok1, tok2)。
-
迭代合并:合并选定的对,重复该过程直到达到所需的词汇表大小。
-
最终标记化:使用学习到的子词单元对文本进行分词。
优势与局限性
- 优势:有效捕捉有意义的子词单元,广泛应用于BERT等模型。
- 局限性:与BPE类似,需要预分词,对某些语言可能存在问题。
5、SentencePiece
BPE和WordPiece都需要预分词作为初始步骤,即在合并前将文本分割为子词单元,但这对中文和日文等词边界不明确的语言构成挑战,使预分词困难或不可行。SentencePiece是专门为克服这些限制而设计的标记化算法。与BPE和WordPiece不同,它将输入文本视为原始字符流(包括空格),无需预分词。这种方法使SentencePiece能够无缝处理词边界模糊的语言,成为多语言和非空格分隔语言的通用选择。
5.1 SentencePiece的工作原理
-
作为字符流的输入:SentencePiece不先将文本分割为单词,而是将整个输入文本视为包括空格在内的连续字符序列。
-
合并算法:采用与BPE类似的合并算法或一元分词器:
- 类BPE合并:类似BPE,迭代合并最频繁的字符对。
- 一元分词器:初始化时使用大量token,逐步修剪每个token以获得更小的词汇表,直到达到所需大小。
- 空格处理:SentencePiece使用下划线作为空格的占位符。
- 句子重建:通过连接token并将下划线替换为空格,可重建原始句子。
5.2 示例
对于句子“deep learning engineer”,SentencePiece可能生成标记如[“deep”, “_learning”, “_engineer”],下划线代表空格,以便重建原句。
优势与局限性
- 优势:高度灵活,无需预分词即可处理多种语言。
- 局限性:将空格作为token的一部分,可能使某些应用的输出不够直观。
6、 BPE、WordPiece和SentencePiece的对比
7、结论
分词是为大语言模型准备文本数据的关键步骤。本文讨论的三种算法(BPE、WordPiece和SentencePiece)各有优势,适用于不同场景:BPE和WordPiece分别广泛应用于GPT和BERT等模型,而SentencePiece为多语言应用提供了更高的灵活性。通过理解这些算法的细微差别,从业者可以针对特定的NLP任务,明智地选择合适的分词方法。
那么,如何系统的去学习大模型LLM?
作为一名从业五年的资深大模型算法工程师,我经常会收到一些评论和私信,我是小白,学习大模型该从哪里入手呢?我自学没有方向怎么办?这个地方我不会啊。如果你也有类似的经历,一定要继续看下去!这些问题啊,也不是三言两语啊就能讲明白的。
所以我综合了大模型的所有知识点,给大家带来一套全网最全最细的大模型零基础教程。在做这套教程之前呢,我就曾放空大脑,以一个大模型小白的角度去重新解析它,采用基础知识和实战项目相结合的教学方式,历时3个月,终于完成了这样的课程,让你真正体会到什么是每一秒都在疯狂输出知识点。
由于篇幅有限,⚡️ 朋友们如果有需要全套 《2025全新制作的大模型全套资料》,扫码获取~
👉大模型学习指南+路线汇总👈
我们这套大模型资料呢,会从基础篇、进阶篇和项目实战篇等三大方面来讲解。
👉①.基础篇👈
基础篇里面包括了Python快速入门、AI开发环境搭建及提示词工程,带你学习大模型核心原理、prompt使用技巧、Transformer架构和预训练、SFT、RLHF等一些基础概念,用最易懂的方式带你入门大模型。
👉②.进阶篇👈
接下来是进阶篇,你将掌握RAG、Agent、Langchain、大模型微调和私有化部署,学习如何构建外挂知识库并和自己的企业相结合,学习如何使用langchain框架提高开发效率和代码质量、学习如何选择合适的基座模型并进行数据集的收集预处理以及具体的模型微调等等。
👉③.实战篇👈
实战篇会手把手带着大家练习企业级的落地项目(已脱敏),比如RAG医疗问答系统、Agent智能电商客服系统、数字人项目实战、教育行业智能助教等等,从而帮助大家更好的应对大模型时代的挑战。
👉④.福利篇👈
最后呢,会给大家一个小福利,课程视频中的所有素材,有搭建AI开发环境资料包,还有学习计划表,几十上百G素材、电子书和课件等等,只要你能想到的素材,我这里几乎都有。我已经全部上传到优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费
】
相信我,这套大模型系统教程将会是全网最齐全 最易懂的小白专用课!!