词元(Token)
定义
词元(Token)是自然语言处理中的基本处理单位,是文本经过分词后得到的最小语义单元。2025年3月,全国科学技术名词审定委员会正式将AI领域的术语”Token”的中文译法统一为”词元”,结束了长期以来翻译混乱的局面。
基本概念
在大语言模型中,文本首先会被转换为词元序列,然后再输入到模型中进行处理。一个词元可以是:
- 一个完整的单词,如”人工智能”、”computer”
- 单词的一部分,如”unhappiness”可能被拆分为”un”、”happiness”两个词元
- 单个字符,如生僻字、特殊符号等
- 标点符号、数字等
不同的分词器会有不同的分词规则,词元的大小和粒度也会有所不同。
分词算法
常见的分词算法主要有以下几种:
- 字节对编码(Byte Pair Encoding, BPE):当前大语言模型最常用的分词算法,从初始的单个字符开始,不断合并出现频率最高的相邻字符对,直到达到预设的词表大小。BPE能够很好地平衡词表大小和分词粒度,有效处理未登录词。
- WordPiece:Google提出的分词算法,与BPE类似,但合并策略基于概率最大化而不是频率,BERT系列模型使用WordPiece分词。
- SentencePiece:谷歌开源的无监督分词工具,支持直接对原始文本进行分词,不需要预先进行分词处理,支持多种语言,尤其适合中日韩等象形文字语言。
- 基于规则的分词:早期NLP系统常用的方法,基于词典和语法规则进行分词,适合特定领域和小语种,但泛化能力差。
词表(Vocabulary)
词表是分词器中所有词元的集合,是大语言模型的重要组成部分:
- 词表大小通常在几万到几十万之间,如GPT-3的词表大小为50257,LLaMA的词表大小为32000
- 词表中每个词元都对应一个唯一的ID,文本会被转换为ID序列输入模型
- 词表的设计直接影响模型的性能和效率,需要平衡大小、覆盖率、分词效率等多个因素
- 多语言模型的词表需要覆盖多种语言的字符和词汇
重要意义
词元是大语言模型处理文本的基础,具有重要意义:
- 压缩表示:将文本转换为固定词表中的词元,大大减少了序列的长度,提高了处理效率
- 解决未登录词问题:通过子词分词,即使是模型从未见过的生僻词或组合词,也可以拆分为已知的词元进行处理
- 跨语言支持:统一的分词方式可以处理多种不同的语言,便于构建多语言模型
- 语义表示:词元作为语义的基本单位,模型通过学习词元之间的关系来理解文本的含义
相关概念
- 词元化(Tokenization):将原始文本转换为词元序列的过程,是NLP任务的第一步
- 词元数(Token Count):文本包含的词元数量,大语言模型的上下文窗口大小就是以词元数为单位计算的,如GPT-4支持128K词元的上下文窗口
- 分词器(Tokenizer):实现词元化功能的组件,每个大语言模型都会有对应的分词器
- 嵌入(Embedding):将词元ID转换为高维向量表示的过程,是模型处理词元的第一步
应用场景
词元概念贯穿于所有自然语言处理任务:
- 大语言模型的输入和输出都是以词元为单位的
- API调用时的费用计算通常基于词元数量
- 上下文窗口限制也是基于词元数的
- 文本生成时的速度通常用词元/秒(Tokens per second)来衡量
发展趋势
分词技术仍在不断发展,未来将向着更好的多语言支持、更高的分词效率、更小的词表体积、更合理的语义粒度等方向发展,更好地支撑大语言模型的能力提升。