什么是Tokenizer

news/2025/3/2 1:04:57/文章来源:https://www.cnblogs.com/smartljy/p/18745702

什么是Tokenizer

内容

在自然语言处理(NLP)中,Tokenizer(分词器/令牌生成器) 是将原始文本转换为模型可处理的结构化数据的核心组件。它的核心任务是将句子拆分为更小的单元(Token),并将这些单元映射为数字ID,供机器学习模型(如BERT、GPT)理解和计算。


一、Token 是什么?

Token 是文本的最小处理单元,其形式取决于分词策略:

  1. 单词级(Word-level)
    将文本按空格或标点分割为完整单词。
    示例
    "Don't hesitate."["Don", "t", "hesitate", "."]
    缺点:词汇表庞大,无法处理未见过的新词(如专业术语)。

  2. 字符级(Character-level)
    将文本拆分为单个字符。
    示例
    "apple"["a", "p", "p", "l", "e"]
    缺点:序列过长,语义信息稀疏。

  3. 子词级(Subword-level)(主流方法)
    平衡单词和字符的优势,将词拆分为常见子词。
    示例(使用 Byte-Pair Encoding, BPE):
    "unhappy"["un", "happy"]
    优势:能处理未知词汇,词汇表更紧凑。


二、Tokenizer 的核心功能

  1. 文本标准化

    • 统一转为小写(可选)
    • 去除多余空格
    • 处理标点符号
    • 处理特殊字符(如Emoji)
  2. Token 拆分
    根据预定义规则(如BPE、WordPiece)分割文本。

  3. 映射为数字ID
    将Token转换为模型可理解的词汇表索引。
    示例

    tokenizer.encode("Hello world!") → [101, 7592, 2088, 102]  # BERT的输入ID
    
  4. 添加模型所需特殊Token

    • [CLS]:分类任务中表示句首(BERT)
    • [SEP]:分隔句子
    • <s> / </s>:标记文本开头和结尾(如GPT)

三、常见 Tokenizer 类型

类型 算法 代表模型 特点
WordPiece 贪心合并高频子词 BERT, DistilBERT 适合处理英文、德文等空格分隔语言
Byte-Pair Encoding (BPE) 统计合并高频字节对 GPT, RoBERTa 支持多语言,处理未知词能力强
SentencePiece 无损分词 T5, ALBERT 直接处理原始文本(包括空格、特殊符号)
Unigram 概率模型 XLNet 灵活调整词汇表大小

四、如何使用 Tokenizer?(代码示例)

以 Hugging Face Transformers 库为例:

  1. 加载预训练 Tokenizer

    from transformers import AutoTokenizer
    tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
    
  2. 文本 → Token ID

    text = "I love natural language processing!"
    encoded_input = tokenizer(text, padding=True, truncation=True, return_tensors="pt")
    # 输出:
    # {'input_ids': tensor([[101, 1045, 2293, 3019, 2653, 2738, 999, 102]]),
    #  'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1]])}
    
  3. Token ID → 文本

    decoded_text = tokenizer.decode(encoded_input["input_ids"][0])
    # 输出: "[CLS] i love natural language processing! [SEP]"
    

五、Tokenizer 的关键文件

  1. vocab.txt
    词汇表文件,每行对应一个Token及其ID。

    [PAD] 0
    [CLS] 1
    [SEP] 2
    hello 3
    world 4
    ...
    
  2. merges.txt(BPE 用)
    记录子词合并规则(从字符级逐步合并为子词)。

    e n
    t h
    i s
    ...
    

六、实际应用注意事项

  1. 匹配模型与 Tokenizer
    使用与模型配套的 Tokenizer(如 bert-base-uncased 模型对应同名的 Tokenizer)。

  2. 处理多语言文本
    选择支持多语言的 Tokenizer(如 xlm-roberta-base)。

  3. 自定义词汇表
    针对特定领域(如医学、法律)重新训练 Tokenizer:

    from tokenizers import BertWordPieceTokenizer
    tokenizer = BertWordPieceTokenizer()
    tokenizer.train(files=["data.txt"], vocab_size=32000)
    tokenizer.save_model("custom_tokenizer")
    
  4. 处理长文本
    设置 max_lengthtruncation 策略:

    encoded_input = tokenizer(text, max_length=512, truncation=True)
    

七、总结

Tokenizer 是 NLP 模型的“翻译官”,将人类语言转化为机器语言。理解其工作原理和正确使用方式,是构建高效 NLP 系统的关键步骤。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/891797.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【硬件测试】基于FPGA的256QAM基带通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR

1.算法仿真效果 本文是之前写的文章:《基于FPGA的256QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR》的硬件测试版本。在系统在仿真版本基础上增加了ila在线数据采集模块,vio在线SNR设置模块,数据源模块。硬件ila测试结果如下:(完整代码运行…

V90通过工艺对象在1200上的使用

配置CU参数打开V-Assistant,新建工程选择驱动选择电机型号选择控制模式V90伺服定位控制方式分为两种,一种是通过工艺对象,另外一种是通过EPOS标准块: a.如果选用工艺对象控制伺服电机,控制模式选用速度控制。报文选用标准报文3. b.如果选用EPOS标准块控制伺服电机,控制模式…

昆明理工大学25年冶金工程考研预计调剂145人

--冶金工程考研809冶金物理化学有色冶金学有色金属冶金冶金过程及设备F002钢铁冶金学

VSG虚拟同步发电机simulink建模与仿真

1.课题概述VSG虚拟同步发电机simulink建模与仿真,虚拟同步发电机(Virtual Synchronous Generator, VSG)技术是电力电子领域的一项重要创新,特别在可再生能源接入电网的应用中展现出巨大潜力。VSG通过先进的控制策略,使逆变器控制的电源系统(如光伏、风能系统)表现出与传…

基于贝叶斯优化的自适应马尔科夫链蒙特卡洛(Adaptive-MCMC)算法matlab仿真

1.程序功能描述 基于贝叶斯优化的自适应马尔科夫链蒙特卡洛(Adaptive-MCMC)算法matlab仿真.对比Kawasaki sampler,IMExpert,IMUnif以及IMBayesOpt。 2.测试软件版本以及运行结果展示MATLAB2022A版本运行 (完整程序运行后无水印) 3.核心程序% 以下部分(IMExpert, IM…

2025-03-01-telegram-message-sync-bot

Repo MetaWhy 過去用 logseq 一直搭配用一款插件 — logseq-inbox-telegram-plugin,用於摘取 TG 上轉發的內容。說不上好用 [1],後來我自己 Fork 了 一份,對主要特性修改了一些,即使仍然缺乏對超鏈接的支持,但也順手了很多。 可是問題仍然存在,爲了在小主機上運行這個服務…

【Linux基础】less命令查看日志

Less 命令简介 less 命令源于 more 命令,但是增加了反向导航和查找等功能。最重要的是,与 more 和 cat 不同,less 不必一次性读取整个文件。这对于大文件非常有用,因为用户可以立即开始浏览文件,而不需要等待文件完全加载。 基础用法 语法:less [参数] 文件 参数说明:-…

大数据原理、技术与实践

大数据基本概念 大数据通常指的是数据量巨大、增长速度快、类型繁多且无法通过传统的数据库管理工具处理的数据集合。 大数据的“4V”特征——数据量(Volume)、数据种类(Variety)、数据速度(Velocity)和数据价值(Value),是理解大数据的核心。 数据结构 大数据中数据种…

2025年2月文章一览

2025年2月编程人总共更新了17篇文章: 1.2025年1月文章一览 2.《Operating System Concepts》阅读笔记:p2-p8 3.《Operating System Concepts》阅读笔记:p9-p12 4.《Operating System Concepts》阅读笔记:p13-p16 5.《Operating System Concepts》阅读笔记:p17-p25 6.《Ope…

STM32的GPIO详解(HAL库)

STM32的GPIO详解(HAL库) 基础部分 GPIO全名为General Purpose Input Output,即通用输入输出。有时候简称为“IO口”。通用,说明它是常见的。输入输出,就是说既能当输入口使用,又能当输出口使用。端口,就是元器件上的一个引脚。输入模式和输出模式是GPIO的基本特性,当然GP…

步进电机在1200上的使用

配置轴步进主要控制的是脉冲和方向。配置1200端,用MC指令,先配置轴的常规和驱动器。此处若不填“使能输出”,可以在程序管脚填写。 步进电机的方向和脉冲输出点,如果是1200PLC,必须用PLC本体上的Q点。步进主动回原点,参考点上下侧和回原点方向要一致,不然原点开关得电后…

创建物体 更正物体位置

逻辑就是 ui是 按照1米比1米的比例 生成的时候是 嵌套两个循环生成 x 和y 两个循环 那么就是按照 x 和y的位置去生成 那么我们生成在父物体位置下 是以他中心为起始点 所以需要矫正