问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

大模型应用中一个 Token 占多少汉字?答案超乎想象!

创作时间:
作者:
@小白创作中心

大模型应用中一个 Token 占多少汉字?答案超乎想象!

引用
1
来源
1.
https://uee.ai/675/%E3%80%90%E7%A7%91%E6%99%AE%E3%80%91%E5%A4%A7%E6%A8%A1%E5%9E%8B%E5%BA%94%E7%94%A8%E4%B8%AD%E4%B8%80%E4%B8%AA-token-%E5%8D%A0%E5%A4%9A%E5%B0%91%E6%B1%89%E5%AD%97%EF%BC%9F%E7%AD%94%E6%A1%88%E8%B6%85/

在大模型应用中,Token是一个基础且常见的概念。它既可以是一个完整的单词,也可以是一个单词的一部分,甚至是标点符号或空格。那么,一个Token究竟占多少汉字呢?让我们一起来探讨这个问题。

Token数量与汉字的关系

不同模型可能采用各自的切分方法,因此,一个 Token 所对应的汉字数量也会有所不同。如腾讯1token≈1.8个汉字,通义千问、千帆大模型等1token=1个汉字,对于英文文本来说,1个token通常对应3至4个字母, 不同的模型对相同的输入分词, 分词结果是不一样的。同样可以说,一个汉字占约0.5个Token。

Token 是大模型中最基础、最常见的概念,它既可以是一个完整的单词,也可以是一个单词的一部分,甚至是标点符号或空格。其翻译方式尚无定论,包括“标记”、“词”、“令牌”等多种说法。复旦大学计算机学院的邱锡鹏教授将其翻译为“词元”,这种翻译比较恰当。

Token的定义与组成

  • Token:在自然语言处理中,一个 Token 通常指一个有意义的文本片段。大模型在处理文本时,会将输入的句子拆分成一个个 Token。
  • 词汇表(Vocabulary):模型预训练时使用的词汇表包含了所有可能的 Token。这个词汇表是有限的,但通常包含了数万到数十万个 Token。
  • Token化过程
  • 分词(Tokenization):将输入文本拆分成 Token 的过程称为分词。分词器根据预定义的词汇表和算法,将文本拆解成模型可以理解和处理的最小单元。
  • 子词分词(Subword Tokenization):许多现代大模型使用子词分词技术,如BPE(Byte-Pair Encoding)或WordPiece,这些方法可以将未知的或不常见的单词拆分成更小的子词,从而更有效地处理语言中的多样性。
  • 处理与生成
  • 输入处理:当模型接收到输入文本时,会将其转换成 Token 序列,然后再输入模型进行处理。
  • 输出生成:模型生成文本时,会逐步预测下一个 Token,直到生成完所需的完整文本。
  • Token 的作用
  • 理解上下文:通过 Token 化,模型可以更好地理解和生成连贯的文本,因为它能够在单词级别甚至更细粒度的子词级别上进行处理。
  • 处理复杂语言结构:Token 允许模型处理复杂的语言结构,包括复合词、多词表达式、缩写等。

举个简单的例子,假设输入文本是 “你好,世界!”,经过 Token 化后,可能会变成类似 [‘你’, ‘好’, ‘,’, ‘世’, ‘界’, ‘!’] 这样的序列。模型会在这个 Token 序列的基础上进行计算和生成新的 Token。

OpenAI官方文档中介绍:“1000个token通常代表750个英文单词或500个汉字。1 个token大约为 4 个字符或 0.75 个单词。”

OpenAI官方的token计算工具 : https://platform.openai.com/tokenizer

国内也有一些工具:

  1. 百度文心一言也提供了token计算器来在线计算文心大模型的字符转token数。网址:https://console.bce.baidu.com/support/#/tokenizer
  2. 阿里通义千问也有:https://dashscope.console.aliyun.com/tokenizer

所以,一个汉字所占的 Token 数量具体取决于分词器的设计。通常情况下,一个Token平均会占用约 1.5 至 2 个 汉字。这是因为分词器在处理文本时,会根据预定义的规则和算法,将文本拆分成模型可以理解的最小单元。不同的分词器在处理汉字时可能会有不同的策略,从而影响每个汉字对应的 Token 数量。

目前的各种tokenization技术,涉及到将文本分割成有意义的单元,以捕捉其语义和句法结构,如字级、子字级(例如,使用字节对编码或 WordPiece)或字符级。根据特定语言和需求场景,每种技术都有自己的优势和权衡。比如Qwen-7B采用UTF-8字节级别的BPE tokenization方式,并依赖OpenAI开源的tiktoken软件包执行分词。

  • 字节对编码(BPE):为AI模型构建子词词汇,用于合并出现频繁的字符/子字对。
  • 子词级tokenization:为复杂语言和词汇划分单词。将单词拆分成更小的单元,这对于复杂的语言很重要。
  • 单词级tokenization:用于语言处理的基本文本tokenization。每个单词都被用作一个不同的token,它很简单,但受到限制。
  • 句子片段:用习得的子词片段分割文本,基于所学子单词片段的分段。
  • 分词tokenization:采用不同合并方法的子词单元。
  • 字节级tokenization:使用字节级token处理文本多样性,将每个字节视为令牌,这对于多语言任务非常重要。
  • 混合tokenization:平衡精细细节和可解释性,结合词级和子词级tokenization。

对于普通用户来说,Token这个概念可能比较难以理解,因为它隐藏在模型内部。对于普通使用者来说,采用包月方式更为常见,而Token计价方式主要针对开发者,希望通过API方式进行调用,封装自己的应用。

来源:AI技术研习社

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号