大模型token和字符串的关系

embedded/2025/3/16 18:13:03/

一 主要区别

  • token 是使用分词器拆分后的最小单位不同的分词方式会导致同样的字符具有不同的token数量。如你好,可以拆分为【你、好】两个token, 【你好】一个token。

  • 同一个文本的 Token 数量可能远少于字符数(英文)或 接近字符数(中文)。


在自然语言处理中,token 是文本处理的基本单元,而字符是书写系统的最小单位。二者的关系取决于具体的分词方法:

  1. 字符级分词
    每个字符直接作为 token。对于中文“你好”(2个字符),会被分为 2个token(“你”和“好”)。

  2. 子词分词(如BPE、WordPiece)

    • 如果“你好”在训练数据中频繁出现,可能合并为 1个token

    • 否则会被拆分为 2个token(常见于多语言模型,如GPT系列)。

  3. 实际验证(以OpenAI为例)
    使用GPT-3/GPT-4的tiktoken分词器测试,“你好”通常被分为 2个token,因为中文字符常被单独编码。

总结

  • 在大多数情况下(尤其是多语言模型),“你好”对应 2个token

  • 特定中文优化模型可能合并为1个token,需具体测试分词器。

二 字符(Character)

定义
  • 字符是书写系统中的最小单位,代表一个可见的符号或控制符号。

  • 例如:

    • 英文:aB?空格 等。

    • 中文:(逗号)等。

    • 数字或符号:1$% 等。

  • 每个字符在计算机中通常对应一个编码(如 Unicode)。

特点
  • 原子性:字符不可再拆分。

  • 直观性:直接对应文本的视觉形态。

  • 长度固定:例如,“你好”包含 2 个字符。

例子
  • 句子 Hello, 世界! 的字符分解:

    H, e, l, l, o, ,,  , 世, 界, !

    共 10 个字符(包括空格和标点)

三 Token(词元)

定义
  • Token 是自然语言处理(NLP)中文本处理的基本单元,是模型输入的最小单位。

  • 如何生成 Token? 取决于分词方法(Tokenization):

    1. 词级别分词(Word-based)
      将文本按词语分割。例如:“我爱编程” → ["我", "爱", "编程"](3 tokens)。

    2. 子词分词(Subword-based)
      将复杂词拆分为常见子词。例如:“unhappy” → ["un", "happy"](2 tokens)。

    3. 字符级别分词(Character-based)
      每个字符直接作为 Token。例如:“你好” → ["你", "好"](2 tokens)。

特点
  • 灵活性:Token 的粒度可粗(词)可细(字符)。

  • 模型依赖性:不同模型使用不同的分词规则(如 GPT 用 BPE,BERT 用 WordPiece)。

  • 功能导向:Token 的目的是让模型高效学习和处理文本。

例子
  • 英文"ChatGPT is powerful!"
    使用子词分词(BPE)可能分解为:

["Chat", "G", "PT", " is", " powerful", "!"] → 6 tokens

中文“自然语言处理”
使用子词分词可能分解为:

["自然", "语言", "处理"] → 3 tokens

或者字符分词:

["自", "然", "语", "言", "处", "理"] → 6 tokens

四 Token 和字符的关系

特征字符(Character)Token
定义书写系统的最小单位NLP 处理的基本单元
拆分规则固定(按 Unicode 编码)灵活(由分词算法决定)
粒度绝对最小(不可再分)可粗(词)可细(字符或子词)
用途文本存储、显示模型训练、推理、文本分析
例子“A”“你”“1”“!”“Chat”“##GP”“你好”

五 如何计算 Token 数量?

  • 英文:通常 1 个单词 ≈ 1-2 个 Token。

  • 中文:通常 1 个汉字 ≈ 1-2 个 Token(取决于是否被合并为子词)。

  • 实际工具
    使用模型对应的分词器直接测试。例如:

    • OpenAI 的 tiktoken 库:

python">import tiktoken
enc = tiktoken.get_encoding("cl100k_base")  # GPT-4 的分词器
text = "你好"
print(len(enc.encode(text)))  # 输出 2(2个Token)

六 总结

  • 字符是固定的视觉单位,直接对应文本的书写形式。

  • Token 是灵活的逻辑单位,服务于模型的高效处理。

  • 同一个文本的 Token 数量可能远少于字符数(英文)或 接近字符数(中文)。


http://www.ppmy.cn/embedded/173126.html

相关文章

Langchian构建代理

文章目录 概要ReAct 代理 ReAct 使用ReAct基本用法提示词模板内存使用迭代使用返回执行每一步情况限制输出行数设置运行超时时间 不使用代理下LLM如何结合工具案例案例2 概要 单靠语言模型无法采取行动 - 它们只输出文本。 LangChain 的一个重要用例是创建 代理。 代理是使用大…

MySQL进阶——数据备份与恢复(超详细!!!)

本文将详细介绍 MySQL 数据备份与恢复的相关知识点。 本文目录 1. 备份类型2. 备份策略设计3. 恢复方法4. 备份工具对比5. 逻辑备份6. 恢复 1. 备份类型 逻辑备份:导出数据库的逻辑结构,以SQL语句的形式呈现,可读性强。适用于小数据量或跨版…

【论文阅读方法】沐神课程:如何读论文

一篇论文的一般结构 titleabstractintroductionmethodexperienceconclusion 三明治论文阅读法 第一遍:海选 titleabstractconclusion——确定要不要读第二遍:精读 对整个文章过一遍,知道每一块在做什么 可以从标题开始读到最后,注…

RabbitMQ (Java)学习笔记

目录 一、概述 ①核心组件 ②工作原理 ③优势 ④应用场景 二、入门 1、docker 安装 MQ 2、Spring AMQP 3、代码实现 pom 依赖 配置RabbitMQ服务端信息 发送消息 接收消息 三、基础 work Queue 案例 消费者消息推送限制(解决消息堆积方案之一&#…

iOS底层原理系列04-并发编程

在移动应用开发中,流畅的用户体验至关重要,而并发编程是实现这一目标的关键技术。本文将深入探讨iOS平台上的并发编程和多线程架构,帮助你构建高性能、响应迅速的应用程序。 1. iOS线程调度机制 1.1 线程本质和iOS线程调度机制 线程是操作…

【Java】——数据类型和变量

个人主页:User_芊芊君子 🎉欢迎大家点赞👍评论📝收藏⭐文章 文章目录: 1.Java中的注释1.1.基本规则1.2.注释规范 2.标识符3.关键字4.字面常量5.数据类型6.变量6.1变量的概念6.2语法6.3整型变量6.3.1整型变量6.3.2长整…

Java构造方法详解:从入门到实战

目录 一、什么是构造方法? 二、构造方法的作用 三、构造方法分类与使用 1. 默认构造方法 2. 有参构造方法 3. 构造方法重载 四、注意事项(避坑指南) 五、经典面试题解析 六、实战应用场景 七、总结 一、什么是构造方法? …

2025-03-15 学习记录--C/C++-PTA 练习3-4 统计字符

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻 一、题目描述 ⭐️ 练习3-4 统计字符 本题要求编写程序,输入10个字符,统计其中英文字母、空格或回车、…