大模型词的分割是怎么定的?
大模型词的分割是怎么定的?比如之前文章中的例子中,为什么把“人工智能”放一起,而不是分割为两个词“人工” 和“智能”?这个问题,它直接命中了自然语言处理中的一个关键挑战:分词。为什么是“人工智能”而不是“人工”和“智能”,这背后并没有一个唯一正确的“上帝法则”,而是不同方法和权衡下的结果。简单来说,分词策略的选择是在 “语义完整性” 和 “灵活性” 之间做权衡。让我们来拆解主流的几种分词方法,您就
大模型词的分割是怎么定的?比如之前文章中的例子中,为什么把“人工智能”放一起,而不是分割为两个词“人工” 和“智能”?
这个问题,它直接命中了自然语言处理中的一个关键挑战:分词。为什么是“人工智能”而不是“人工”和“智能”,这背后并没有一个唯一正确的“上帝法则”,而是不同方法和权衡下的结果。
简单来说,分词策略的选择是在 “语义完整性” 和 “灵活性” 之间做权衡。
让我们来拆解主流的几种分词方法,您就能明白其中的道理了。
主流的分词方法
1. 词级分词
- 做法:直接将文本切分成独立的词语。这正是之前例子中“我喜欢学习人工智能”被切分成
[“我”, “喜欢”, “学习”, “人工智能”]的方式。 - 优点:
- 语义明确:每个Token本身就是一个具有完整含义的词语,易于理解。
- 对于已有固定含义的复合词(如“人工智能”、“清华大学”)处理得很好。
- 缺点:
- 词汇表爆炸:需要维护一个非常庞大的词汇表,因为每一种语言都有数十万甚至数百万个词。
- 无法处理未知词:如果遇到词汇表里没有的词(如新词、专业术语、拼写错误),模型就只能用一个统一的
[UNK]来代替,导致信息丢失。例如,如果“人工智能”不在词汇表里,它就会被替换成[UNK],模型完全无法理解。
2. 字符级分词
- 做法:将文本切分成单个的字符。
- 英文:
"ai" -> ["a", "i"] - 中文:
“人工智能” -> [“人”, “工”, “智”, “能”]
- 英文:
- 优点:
- 词汇表极小:英文只有26个字母加符号,中文几千个常用字。
- 几乎不存在未知词:任何新词都能用字符拼出来。
- 缺点:
- 语义模糊:单个字符本身携带的语义信息很少。模型需要从零开始学习“人”、“工”、“智”、“能”如何组合成“人工智能”,这大大增加了学习难度和计算成本。
- 序列过长:处理一个句子需要处理非常长的序列,效率低。
3. 子词分词 - 现代大模型的黄金标准
子词分词法完美地平衡了词级和字符级的优点,它成为了当今所有主流大模型(如BERT、GPT、Llama)的选择。其核心思想是:将频繁出现的、语义完整的词作为一个整体,将不常见的词拆分成有意义的子单元。
a) 如何确定怎么分?
子词算法(如BPE、WordPiece、Unigram)会在一个巨大的语料库上进行统计分析,自动学习出哪些字符组合经常出现,从而形成“子词”单元。
b) 具体如何工作?
我们以 Byte-Pair Encoding (BPE) 算法为例,它从一个字符级的词汇表开始,通过不断合并出现频率最高的相邻字符对来生成新的子词。
假设我们的训练语料中有以下词和频率:("low", 5), ("lower", 2), ("newest", 6), ("widest", 3)
- 初始:词汇表是所有字符:
l, o, w, e, r, n, s, t, i, d, ... - 第一轮合并:统计发现
"e"和"s"相邻出现了6+3=9次(在"newest"和"widest"中),频率最高。于是合并"es"加入词汇表。 - 第二轮合并:现在
"es"和"t"相邻出现了6+3=9次,合并成"est"加入词汇表。 - 继续:算法会继续合并,比如可能出现
"lo","low","new","wi","ide","est"等。
最终,模型学到的词汇表里可能同时包含:
- 完整的常用词:
"the","and","人","喜欢" - 常见的词根/子词:
"est","ing","##ly","人工","智能" - 单个字符:
"a","b","我","的"
c. 实际应用中的分词结果:
对于同一个句子,不同的子词模型可能会给出不同的结果:
-
可能的分法一(更倾向于合并):
["我", "喜欢", "学习", "人工智能"]- 因为“人工智能”在训练语料中出现得非常频繁,算法将其作为一个整体保留了下来。
-
可能的分法二(更倾向于拆分):
["我", "喜欢", "学习", "人工", "智能"]- 因为“人工”和“智能”本身也是高频词,并且可以组合成其他词(如“人工成本”、“智能家居”),所以模型也可能选择将其拆分。
-
对于生僻词,如“卷积神经网络”:
["卷", "积", "神经", "网络"]或["卷积", "神经", "网络"]- 如果这个词在训练数据中不常见,它几乎肯定会被拆分成更常见的子词。
总结与类比
为了更直观地理解不同分词方法的逻辑,我们可以参考以下表格:
| 分词方法 | 核心逻辑 | 好比烹饪时… | 优点 | 缺点 |
|---|---|---|---|---|
| 词级分词 | 按现成的菜谱,使用预制好的酱料包。 | 酱料包(词) | 语义完整,方便快捷。 | 酱料包种类有限,遇到新菜式就没办法。 |
| 字符级分词 | 从最基本的油盐酱醋开始,自己调配一切。 | 基础调料(字符) | 极其灵活,无所不能调配。 | 步骤繁琐,对厨师要求高,效率低下。 |
| 子词分词 | 既有预制的高汤、卤汁,也有基础的葱姜蒜。 | 高汤 & 调料(子词) | 灵活性和效率的完美平衡。 | 需要先花时间“预制”这些半成品(训练分词器)。 |
所以,
“人工智能”到底是被放在一起还是分开,取决于训练该模型分词器时所用的大量文本数据中,“人工智能”这个词出现的频率,以及“人工”和“智能”这两个子单元出现的频率。
- 如果“人工智能”作为一个整体出现的频率非常高,分词器就倾向于将其视为一个不可分割的Token。
- 反之,如果“人工”和“智能”经常独立出现或与其他字组合,那么分词器就更可能将其拆开。
这种子词分词的策略,使得模型既能理解完整的常见概念,又具备了“猜”出陌生长词含义的强大能力,这正是其成功的关键之一。
更多推荐



所有评论(0)