LLM--分词基础

张开发
2026/4/12 19:54:54 15 分钟阅读

分享文章

LLM--分词基础
文章目录三种不同的分词粒度Word-based TokenizersCharacter-based TokenizersSubword-based TokenizersBtye-Pair Encoding TokenizationWordPieceUnigram Tokenization参考资料作用将文本序列转化为数字序列即token编号作为transformer的输入三种不同的分词粒度Word-based TokenizersWord-based是最简单的分词方法就是将单词按照空格或者标点进行分割。英文中文在中文中jieba分词工具就是基于Word-based的实现的。优点简单符合人类自然语言缺点相同意思的词被划分为不同token词表非常大可能会出现unknown的情况。Character-based TokenizersCharacter-based是将文本按照字母/字级别分割tokens。英文可以有效的减少词表的大小比如下面的句子Let’s do some NLP tasks.按照字母分词后得到的token是L, e, t, , s, d, o, s, o, m, e, N, L, P, t, a, s, k, s, .中文比如下面的句子我们来做一个自然语言处理任务。按照字分词后得到的token是我们来做一个自然语言处理任务缺点对于英文来说没啥意义Subword-based Tokenizers按照**“子词”**进行分词这也是现在用的最多的分词方式。常用的方式有Byte-Pair EncodingBPEWordPieceSentencePieceUnigramBtye-Pair Encoding Tokenization分为两步骤“词频统计” 和 “词表合并”重复这两步知道到达预定的迭代次数过程比较复杂如图所示总的来说就是依据词表拆相邻合并(pair)统计词频更新词表缺点词表庞大WordPiece与BPE大体一样但是也有区别构建词表的时候除了第一个字母会添加##作为前缀word [w, ##o, ##r, ##d]使用联合概率大小对token进行合并一个例子依据公式存在一种现象如果一个单词其tokens和pair的大小都很大的时候最总计算的概率有可能不会很大但是如果tokens次数较小pair较大则总概率就会很大这就导致有可能不会将出现很频繁的词加入词表。Unigram Tokenization这个分类方式和前面两种都不用流程如下那如何删减token尝试删去一个 token并计算对应的 unigram loss 删除 p%使得 loss 增加最少的 token规则初看很抽象具体例子如下假设每个词的出现都是独立的说实话很复杂也很抽象简要流程总结如下拆分单词构建词表统计词表单词数量概率计算每个单词最高score并且计算loss假设删去某一个词表单词重新计算每个单词sorce和loss然后依据p%的概率决定删除几个词参考资料https://www.bilibili.com/video/BV1Fc411C7sz/?spm_id_from333.337.search-card.all.click%5Cvd_sourcef66cebc7ed6819c67fca9b4fa3785d39https://github.com/imxtx/llm-tutorialshttps://github.com/luhengshiwo/LLMForEverybody/blob/main/01-%E7%AC%AC%E4%B8%80%E7%AB%A0-%E9%A2%84%E8%AE%AD%E7%BB%83/%E5%85%A8%E7%BD%91%E6%9C%80%E5%85%A8%E7%9A%84%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%88%86%E8%AF%8D%E5%99%A8%EF%BC%88Tokenizer%EF%BC%89%E6%80%BB%E7%BB%93.md

更多文章