什么是NLP的子词切分?


子词切分(Subword Segmentation)是 NLP 领域中的一种常见的文本预处理技术,旨在将词汇进一步分解为更小的单位,即子词。子词切分特别适用于处理词汇稀疏问题,即当遇到罕见词或未见过的新词时,能够通过已知的子词单位来理解或生成这些词汇。子词切分在处理那些拼写复杂、合成词多的语言(如德语)或者在预训练语言模型(如BERT、GPT系列)中尤为重要。

子词切分的方法有很多种,常见的有Byte Pair Encoding (BPE)、WordPiece、Unigram、SentencePiece等。这些方法的基本思想是将单词分解成更小的、频繁出现的片段,这些片段可以是单个字符、字符组合或者词根和词缀。[1]

各子词切分方法的区别

  1. Byte Pair Encoding (BPE)
    原理:基于字符级别的贪心合并算法,通过迭代合并最频繁出现的字符对(或子词对),生成新的子词单元。

    • 基本思想:将单词中的字符作为子词,然后根据统计信息合并频繁出现的字符组合,直到满足预设的子词数量。
    • 示例:将 “lowest” 切分成 “low”、”est”、”lowest”。
    • 优点:简单易实现,能够有效减少词汇表大小。
    • 缺点:合并规则依赖于统计信息,可能会导致一些未知词汇的切分问题。

    步骤

    1. 初始化词汇表为所有单个字符,并在每个词末尾添加特殊符号(如)区分词边界。
    2. 统计语料中所有相邻子词对的出现频率,合并频率最高的一对,形成新子词并加入词汇表。
    3. 重复步骤 2,直到达到预设的词汇表大小或迭代次数。
    4. 切分时,将词分解为已学习的最长子词序列(从长到短匹配)。

    适用于:适合单语言、追求效率的场景(如 Transformer 模型),词汇表增长稳定。

  2. WordPiece
    原理:基于 BPE 的改进,合并准则从 “频率最高” 改为 “提升语言模型对数似然最大”(即合并后使整体序列概率更高)。

    • 基本思想:类似于BPE,是BPE的升级,但在合并过程中考虑了子词的概率分布,优先选择能够最大化语言模型概率的子词组合。
    • 示例:将 “unhappiness” 切分成 “un”、”happiness”。
    • 优点:能够更好地处理低频词和新词,适用于预训练模型。
    • 缺点:实现复杂度较高,需要更多的计算资源。

    步骤

    1. 初始化词汇表为所有单个字符,并添加特殊符号(如)。
    2. 统计语料中所有子词对的出现频率,计算每对的条件概率。
    3. 合并概率最高的子词对,形成新子词并加入词汇表。
    4. 重复步骤 2 和 3,直到达到预设的词汇表大小或迭代次数。

    适用于:在语言模型任务中表现更优(如 BERT 的双向预测),合并更注重语义相关性。

  3. Unigram
    原理:基于概率模型的子词选择方法,假设最优子词集合是使语料似然概率最大的 “一元语法”(unigram)集合,通过迭代删除低概率子词优化词汇表。

    • 基本思想:基于概率模型,将词分解为子词的概率分布,选择最优的子词组合。
    • 示例:将 “unhappiness” 切分成 “un”、”happy”、”ness”。
    • 优点:能够处理复杂的语言结构,适用于多种语言。
    • 缺点:需要较大的计算资源和内存。

    步骤

    1. 初始化词汇表为所有单个字符,并添加特殊符号(如)。
    2. 计算每个子词的概率分布。
    3. 根据概率分布选择最优的子词组合,形成新词汇表。
    4. 切分时,选择概率最高的子词序列。

    适用于:适合需要灵活切分(如允许重叠子词)或多语言场景,生成的子词更短。

  4. SentencePiece
    原理:并非独立的切分算法,而是一个工具库,支持集成 BPE、Unigram 等方法,并解决了传统方法依赖空格分词的问题(适用于无空格语言如中文、日语)。

    • 基本思想:将文本切分成子词的序列,每个子词的长度可以是固定的也可以是可变的。
    • 示例:将 “unhappiness” 切分成 “un”、”happiness”。
    • 优点:能够处理复杂的语言结构,适用于多种语言。
    • 缺点:实现复杂度较高,需要更多的计算资源。

    步骤

    1. 初始化词汇表为所有单个字符,并添加特殊符号(如)。
    2. 统计语料中所有子词的出现频率。
    3. 根据频率选择最优的子词组合,形成新词汇表。
    4. 切分时,选择概率最高的子词序列。

    适用于:优先用于无空格语言(如中文、日语)或多语言混合任务,简化预处理流程。

差异对比

维度 BPE WordPiece Unigram SentencePiece
合并 / 优化准则 最高频率的相邻子词对 最大语言模型增益(正) 最大语料似然概率(删除低贡献子词) 无独立准则,集成其他方法
词汇表大小 固定迭代次数控制 固定迭代次数控制 迭代删除子词至目标大小 由集成的算法决定
词边界标记 </w>标记词尾 ##标记非词首子词 无显式标记,依赖概率 标记空格(词边界)
无空格语言支持 弱(依赖空格预处理) 弱(依赖空格预处理) 弱(依赖空格预处理) 强(直接处理原始文本)
计算复杂度 低(贪心合并) 中(需计算概率增益) 高(多次迭代与维特比解码) 由集成的算法决定
典型应用 GPT 系列、FastText BERT、DistilBERT T5、ULMFit 多语言模型(如 mBART)

引用:

  1. 《Happy-llm》