当前位置: 首页 > news >正文

分词算法总结:不同分词算法的优点和缺点

一、Tokenizer的作用

  1. 将文本序列转化为数字序列(token编号),作为transformer的输入
  2. 是训练、微调、推理的LLM的一部分
简单的输入文本:“Some, words are input?”
分割结果:["Some", ","  "words ", "are ", "input", "?"]
转成token_id:[121, 694, ..., ...]

具体的详细实践可以看我前面的两篇博客:分词算法BBPE详解和Qwen的应用_bbpe 训练-CSDN博客

分词算法BPE详解和CLIP的应用-CSDN博客

二、word-based Tokenizers

简单描述:将文本划分为一个一个的词(包括标点)

优点:

  1. 符合人的自然语言和直觉,词粒度能保留更多的语义信息
  2. 序列划分后词元数量更短,处理起来更高效;;

缺点:

  1. 按词为粒度进行划分,会导致词典庞大

  2. 词汇是不断扩张的,对于新产生的不在词典里的词,会带来OOV问题(未知的词用特殊的token表示,丢失了关键信息,直接对模型性能造成影响)

  3. 稀疏词、低频词无法在训练时有充分的语料进行训练;

  4. 难以学习到同一个词的不同形态,比如英文中的look和looks,按词划分的话需要对这两个分别进行训练,但显然没这个必要;

三、Character-based Tokenizers

简单描述:将文本划分为一个一个的字符

优点:

  1. 可以表示任意(英文)文本,不会出现word-based中的unknow情况
  2. 词表很小,比如英文只需要不到256个字符

缺点:

  1. 相对word-based来说信息量非常低,导致模型性能很差
  2. 相对于word-based来说,会产生很长的token_id序列
  3. 中文也需要一个很大的词表

四、Subword-based Tokenizer

具体见我上面两篇博客:BPE和BBPE算法,还包括WordPiece Tokenization和Unigram Tokenization(本文就不详细介绍分词算法细节)

简单描述:

  1. 常用词不应该切分成更小的token或者subword
  2. 不常用词或者词群应该用字词来表示

优点:

  1. 使用subword划分英文词群,既能够保留充分的语义,也能够做到相对的高效和词表小
  2. 也能够尽量避免OOV问题(BPE依旧存在,BBPE解决了OOV问题)

怎么训练的?

  1. 初始化:将语料库中的单词分解为字符序列,末尾加上特殊符号表示词的计数
  2. 统计相邻符号的频率
  3. 合并频率最高的符号对
  4. 重复1-3步骤,直至满足达到预设的词汇表的大小

五、结论

基本上现在的GPT、LLama、Qwen、InternVL应该都采用了sub-word的算法(从开源的paper或者代码中找到,但是闭源的就不太清楚了),还有一些基于sentence的库的sub-word算法实现,此处就不详细介绍了

http://www.xdnf.cn/news/939511.html

相关文章:

  • 【量化】策略交易类型
  • Razor编程RenderXXX相关方法大全
  • 鸿蒙的一些布局
  • 更新积木报表2.0.0注意事项
  • 第八章 信息安全基础知识
  • 大三下第16周总结
  • 华为OD机考-内存冷热标记-多条件排序
  • 4、docker常用命令
  • 前端八股笔记
  • 设备驱动与文件系统:05 文件使用磁盘的实现
  • 2025-05-01-决策树算法及应用
  • Kotlin REPL初探
  • 单片机 传感器知识讲解 (一)红外避障模块,声控模块,人体红外模块
  • 9.贪心算法(随想录)
  • 电子学会Python考前英语单词
  • art-template模板引擎
  • SpringCloudAlibaba和SpringBoot版本问题
  • 【差分】详解二维前缀和和差分问题
  • [mdm9607] Qualcomm mdm9607新增nand flash支持修改方法
  • Docker部署MySQL
  • Elasticsearch 常用操作命令整合 (cURL 版本)
  • C++.OpenGL (17/64)模型(Model)
  • 堆排序code
  • 第三章 AI应用开发
  • 探秘Transformer系列之(36)--- 大模型量化方案
  • OpenEuler 系统中 WordPress 部署深度指南
  • Pandas中常用函数
  • 2025年- H78-Lc186--763.划分字符串区间(贪心)--Java版
  • 分类数据集 - 场景分类数据集下载
  • Langchian - 实现文本分类实际应用