Hugging Face课程:深入理解Unigram分词算法

Hugging Face课程:深入理解Unigram分词算法

course The Hugging Face course on Transformers course 项目地址: https://gitcode.com/gh_mirrors/cou/course

什么是Unigram分词

Unigram是一种基于统计概率的分词算法,与BPE和WordPiece不同,它采用"自顶向下"的方式构建词表。该算法最初被应用于SentencePiece工具中,成为AlBERT、T5、mBART等知名模型的基础分词方法。

Unigram的核心思想是将输入文本视为原始字符流(包括空格),通过概率模型找出最优的子词分割方式。这种方法特别适合处理不使用空格分隔单词的语言(如中文、日语等)。

Unigram的工作原理

训练过程

Unigram的训练过程可以概括为以下几个步骤:

  1. 初始化大词表:从预分词后的语料中提取所有可能的子串,或使用BPE等算法生成一个较大的初始词表

  2. 迭代剪枝

    • 计算当前词表在整个语料上的损失
    • 评估移除每个词对总体损失的影响
    • 移除对损失影响最小的p%(通常10-20%)的词
    • 重复直到词表达到目标大小
  3. 保留基础字符:确保任何单词都能被分词

分词算法

Unigram采用概率模型进行分词,主要特点包括:

  1. 独立假设:每个token的出现概率独立于前面的token
  2. 概率计算:token概率=该token在语料中的频率/所有token频率总和
  3. 最优分割:对每个单词,选择概率乘积最大的分割方式

实际实现中使用Viterbi算法高效地找到最优分割路径。该算法通过动态规划,记录每个位置的最佳分割方案,最终回溯得到全局最优解。

实战示例

让我们通过一个具体例子理解Unigram分词:

语料

("hug", 10), ("pug", 5), ("pun", 12), ("bun", 4), ("hugs", 5)

初始词表(所有严格子串):

["h", "u", "g", "hu", "ug", "p", "pu", "n", "un", "b", "bu", "s", "hug", "gs", "ugs"]

频率统计

"h":15, "u":36, "g":20, "hu":15, "ug":20, "p":17, "pu":17, "n":16
"un":16, "b":4, "bu":4, "s":5, "hug":15, "gs":5, "ugs":5

分词示例

  • "pug"可能的分割:
    • 最终会选择后两种更高概率的分割方式之一。

损失计算

Unigram训练的损失函数是语料中所有单词的负对数似然之和。对于每个单词:

  1. 用当前词表进行分词
  2. 计算分词结果的概率
  3. 取负对数得到该单词的损失
  4. 所有单词损失加权求和

移除词表中的token时,需要重新计算损失的变化,选择对总体影响最小的token移除。

实现要点

实际实现Unigram算法时需要注意:

  1. 初始词表构建:可以使用增强后缀数组(ESA)等高效算法
  2. 数值稳定性:使用对数概率而非原始概率避免数值下溢
  3. 优化计算
    • 近似计算移除token的影响,而非完全重新训练
    • 批量处理token评估
  4. 特殊token处理:保留单字符token确保全覆盖

应用场景

Unigram分词特别适合以下场景:

  1. 多语言混合文本处理
  2. 不使用空格分隔单词的语言
  3. 需要平衡词表大小与分词效果的场景
  4. 处理专业领域术语和罕见词

通过调整词表大小和剪枝比例,可以在分词粒度和模型效率之间取得平衡。

理解Unigram算法的工作原理,有助于我们更好地使用和微调基于该算法的分词器,特别是在处理特定领域文本或多语言场景时。

course The Hugging Face course on Transformers course 项目地址: https://gitcode.com/gh_mirrors/cou/course

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

滑辰煦Marc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值