|
# 分词技术(Tokenization)
1. 分词粒度分类
(1)Word粒度(Word-level)
核心意义:
- 将文本按自然语言中的完整词语切分
- 中文示例:“我喜欢吃苹果” → [“我”, “喜欢”, “吃”, “苹果”]
- 英文示例:“let’s go to lib” → [“let’s”, “go”, “to”, “lib”]
优缺点:
优点:保留完整语义单元 缺点:1.无法处理未在词表中的词(Out of Vocabulary, OOV),由于无法无限制扩大词表
优点 |
缺点 |
保留完整语义单元 |
无法处理未在词表中的词(Out of Vocabulary, OOV),由于无法无限制扩大词表 |
|
存在大量低频词占据词表空间,导致其无法在模型中得到训练,尤其是英文中的词根词缀问题,不能泛化 |
(2)Character粒度(Character-level)
核心意义:
- 将文本拆分为单个字符或字母
- 中文示例:“我喜欢吃苹果” → [“我”, “喜” ,欢”, “吃”, “苹”, “果”]
- 英文示例:“let’s go to lib” → [“l”, “e”, “t”, “’”, “s”, “g”, “o”, “t”, “o”,“l”,“i”, “b”]
优缺点:
优点 |
缺点 |
词表简洁 |
损失语义丰富性 |
可避免OOV问题 |
增加输入序列长度 |
(3)Subword粒度(Subword-level)
核心意义:
- 用子词单元平衡词与字符单元
- 中文示例:“我喜欢吃苹果” → [“我”, “喜” ,欢”, “吃”, “苹”, “果”]
- 英文示例:“let’s go to lib” → [“let”, “’”, “s”, “go”, “to”, “li”, “##b”]
优点:
- 可有效处理OOV;
- 允许学习词缀关系;
- 具有灵活性;
- 具有跨语言一致性。
2. 三种主流Subword词表构造方法总结
(1) BPE(Byte Pair Encoding)
核心思想
- 基于频率的迭代合并:从字符级别开始,迭代合并出现频率最高的连续字符对,直到达到预设词表大小。
- 适用场景:通用文本处理,尤其适用于需要高频合并的场景。
流程步骤
- 初始化:构建包含基础字符(字母、标点等)的初始词表。
- 分解文本:将单词拆分为字符序列,并添加词尾标记(如
</w> )。
- 统计与合并:统计字符对频率,合并最高频的字符对,重复迭代直至词表达标。
典型应用
- 模型:GPT、XLM
- 工具:直接应用于文本预处理。
(2) WordPiece
核心思想
- 基于似然的合并:每次合并选择能最大化整体数据对数似然的字符对,而非仅依赖频率。
- 适用场景:关注语义片段提取的场景(如预训练模型)。
流程步骤
- 初始化:同BPE,构建基础字符词表。
- 训练语言模型:使用Unigram语言模型估计subword概率。
- 优化词表:选择加入后能最大化总概率的subword单元,迭代扩展词表。
典型应用
(3) Unigram语言模型
核心思想
- 逆向筛选:从完整词开始,逐步删除对整体似然损失最小的subword单元,动态调整词表。
- 适用场景:需要灵活控制词表大小,保留重要词或子词。
流程步骤
- 初始化:构建包含单字符和高频n-gram的大词表。
- 概率估计:计算每个subword在训练语料中的出现频率。
- 评分与筛选:评估删除每个subword的损失,保留高价值单元,迭代缩减词表。
典型应用
- 工具:SentencePiece
- 模型:T5、ALBERT、XLNet
对比表格
方法 |
核心策略 |
合并/筛选依据 |
典型工具/模型 |
BPE |
高频字符对迭代合并 |
字符对频率 |
GPT、XLM |
WordPiece |
最大化对数似然合并 |
概率增益 |
BERT |
Unigram |
逆向删除低价值subword |
似然损失 |
SentencePiece(T5等) |
|
|