Transformer 通关秘籍2:利用 BERT 将文本 token 化

news2025/4/2 16:56:42

前面两节分别通过两个代码示例展示了模型将文本转换为 token 之后是什么样的,希望你可以对此有一个感性的认识。

本节来简要介绍一下将一个连续的文本转换为 token 序列的大致过程,这个过程被称为分词,也叫 tokenization。

在你没了解这方面的知识之前,如果让你实现一个类似的算法,你会如何来实现呢?我想你可能最先想到便是使用空格来进行分词。

Attention:全网最全的 AI 小白到 AI 大神的天梯成长学习路线,几十万原创专栏和硬核视频,点击这里查看:AI小白到AI大神的天梯之路

基于空格的分词

当然,这是一种最简单的分词方法。

它直接使用空格或者一些标点符号来切分文本。常用于处理那些单词之间以空格明显分隔的语言,如英语,这里给出一个基于空格的分词示例:

假设有下面一句话:

"I love learning new things about artificial intelligence and machine learning."

用空格分词后,就可以直接得到如下的 token 。

['I', 'love', 'learning', 'new', 'things', 'about', 'artificial', 'intelligence', 'and', 'machine', 'learning.']

这个很简单,也非常好理解。

这种分词方法可以用来处理一些简单的文本,但是在大型语言模型中几乎不会用到。因为太简单了,无法处理复杂的语境。

在大语言模型中,一般会使用更先进的分词方法,比如 BPE (Byte Pair Encoding)和 WordPiece 算法,这两个算法在前面两节展示 token 的时候曾经提到过,但未深入展开。

WordPiece/ BPE 的分词逻辑

WordPiece 是由 Google 开发的,后来被用在了 BERT 模型的分词过程中,而 BPE (Byte Pair Encoding,也叫字节对编码)最初是一种用于数据压缩的算法,后来才被应用到自然语言处理领域,GPT 系列的模型使用的便是 BPE 分词方法。

这两种方法对于文本的分词过程大致相同,下面通过一个例子来说明一下。

假设某文本中仅包含以下词汇:bug,debug,debugger。这里为了方便展示,假设以上词汇在文本中仅出现了一次,不考虑出现多次的情况。

首先,分词算法对以上单词进行拆分,拆分为独立的字符形式,如:

● “bug” → (“b”, “##u”, “##g”)
● “debug” → (“d”, “##e”, “##b”, “##u”, “##g”)
● “debugger” → (“d”, “##e”, “##b”, “##u”, “##g”, “##g”,“##e”, “##r”)

##代表该字符与前面的字符在拆分之前是一个完整的词。

然后,将拆分后的词汇进行汇总,得到拆分后的词汇表为:(“b”, “##u”, “##g”, “d”, “##e”, “##r”)

接下来,对上述词汇表中的词进行合并:通过一定的合并算法,将上述已拆分的子词合并。

比如,你可以使用统计的方法,经过统计发现,##u 和 ##g 在原始文本中成对出现的频率很高,那么就优先将 ##u 和 ##g 进行合并。

合并之后,最初的词汇表就变成了(“b”, “##ug”, “d”, “##e”, “##r”)。

在此基础上,还可以进一步合并,比如还可以将 b 与 ##ug进一步合并得到 bug,将d 和 ##e 进一步合并得到 de。

从而最终合并完的词汇表可能为:(“bug”, “de”, “#ger”)。

这种分词的方法,可以理解为是一种将文本拆分然后通过一定的算法再进行合并的过程,也就是说拆了又合,但是合并完和拆之前一般是不一样的。
在这里插入图片描述

WordPiece 以及 BPE 算法的不同,便是“一定的合并算法”的不同。

WordPiece 需要计算子词与子词之间的相关性分数来进行合并,而 BPE 则是单纯计算子词之间成对出现的频率来进行合并的。

但不管怎么样,两者有类似的地方:都是要先将原始词汇进行拆分,然后再进行合并,得到最终得到的词汇表(这是一个包含所有 token 的表,也可以认为是 token 的集合或者字典)。

这种方法不仅能够处理一些没有见过的词汇(因为已经把它们分解为已知的子词单元),还能优化词表的大小,从而提高语言模型的性能和效率。

需要说明的是,以上仅描述了分词的大致过程,分词并非本专栏的重要内容,在本专栏的知识架构下,你只需要了解一些常见的分词过程即可。

如果对于分词算法的细节感兴趣,可以查看一下这篇文章,写的比较详细:https://www.zhihu.com/question/64984731/answer/3183726323。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网络运维学习笔记(DeepSeek优化版) 024 HCIP-Datacom OSPF域内路由计算

文章目录 OSPF域内路由计算:单区域的路由计算一、OSPF单区域路由计算原理二、1类LSA详解2.1 1类LSA的作用与结构2.2 1类LSA的四种链路类型 三、OSPF路由表生成验证3.1 查看LSDB3.2 查看OSPF路由表3.3 查看全局路由表 四、2类LSA详解4.1 2类LSA的作用与生成条件4.2 2…

【云馨AI-大模型】自动化部署Dify 1.1.2,无需科学上网,Linux环境轻松实现,附Docker离线安装等

Dify介绍 官网:https://dify.ai/zh生成式 AI 应用创新引擎开源的 LLM 应用开发平台。提供从 Agent 构建到 AI workflow 编排、RAG 检索、模型管理等能力,轻松构建和运营生成式 AI 原生应用。 Dify安装脚本 目录创建 mkdir -p /data/yunxinai &&a…

CUDA 学习(2)——CUDA 介绍

GeForce 256 是英伟达 1999 年开发的第一个 GPU,最初用作显示器上渲染高端图形,只用于像素计算。 在早期,OpenGL 和 DirectX 等图形 API 是与 GPU 唯一的交互方式。后来,人们意识到 GPU 除了用于渲染图形图像外,还可以…

棱镜七彩受邀出席“供应链安全国家标准贯标应用深度行”活动并做主题分享

近日,“供应链安全国家标准贯标应用深度行”活动在北京顺利举办,此次活动汇聚了行业内的众多专家和企业代表,深入探讨了供应链安全国家标准的制定与实施路径。棱镜七彩副总裁黄浩东受邀出席,并发表了题为《国家标准实施路径下的企…

系统转换、系统维护、净室软件工程、构件软件工程(高软51)

系列文章目录 系统转换、系统维护、净室软件工程、构件软件工程 文章目录 系列文章目录前言一、系统转换二、系统维护三、净室软件工程四、基于构件的软件工程总结 前言 本节讲明遗留系统的系统转换、系统维护、净室软件工程、基于构件软件工程相关知识。 一、系统转换 就是讲…

联核防爆无人叉车:高危环境中的安全搬运守护者

联核防爆AGV无人叉车是专为易燃易爆环境设计的智能搬运设备,其特点、功能与应用场景均围绕“安全”与“智能”核心展开:联核科技官网-AGV叉车十大品牌-无人叉车厂家-自动化叉车-智能搬运码垛机器人-智能叉车系统解决方案专家 一、核心特点 防爆设计电气…

23种设计模式-责任链(Chain of Responsibility)设计模式

责任链设计模式 🚩什么是责任链设计模式?🚩责任链设计模式的特点🚩责任链设计模式的结构🚩责任链设计模式的优缺点🚩责任链设计模式的Java实现🚩代码总结🚩总结 🚩什么是…

Linux使用集群服务器查看已安装conda环境,且环境名无显示、系统环境混乱等问题

一、问题 在使用集群服务器前可以查看导入,module load不需要安装。我都是自己重新下载Anaconda3-2024.10-1-Linux-x86_64.sh,然后安装,导致混乱。下面是情况 1.创建的环境名跑到目录下了 2.多个base,且有个base无显示 二、解决办法 1.删…

python蓝桥杯刷题的重难点知识笔记

1、datetime模块 datetime.date:代表日期,包含年、月、日信息。datetime.time:代表时间,包含时、分、秒、微秒信息。datetime.datetime:结合了日期和时间,包含年、月、日、时、分、秒、微秒信息。datetime.…

Android平台毫秒级低延迟HTTP-FLV直播播放器技术探究与实现

一、前言 在移动互联网蓬勃发展的今天,视频播放功能已成为众多Android应用的核心特性之一。面对多样化的视频格式和传输协议,开发一款高效、稳定的视频播放器是许多开发者追求的目标。FLV(Flash Video)格式,尽管随着H…

极光优化PLO-Transformer-LSTM多变量时序

极光优化算法(PLO)于2024年8月发表于SCI期刊《Neurocomputing》,利用算法极光优化算法PLO优化Transformer-LSTM模型,同时提供与未优化模型的对比,包含柱状图、两张雷达图、二维散点图等等。 (一)LSTM模型LSTM是一种在时…

基于javaweb的SpringBoot智能无人仓库管理设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

python处理音频相关的库

1 音频信号采集与播放 pyaudio import sys import pyaudio import wave import timeCHUNK 1024 FORMAT pyaudio.paInt16 CHANNELS 1#仅支持单声道 RATE 16000 RECORD_SECONDS 3#更改录音时长#录音函数,生成wav文件 def record(file_name):try:os.close(file_…

网络爬虫-2:基础与理论

一.同步加载与异步加载 1.1同步加载定义: 页面所有内容一起加载出来,当某一个数据加载有问题,整个页面就不会加载出来(如HiFiNi音乐网站),所以又叫阻塞模式 1.2爬取步骤: 看netword->document 2.1异步加载定义: 数据是分开加载的,当某一份数据有异常时,不影响其他数据…

[项目]基于FreeRTOS的STM32四轴飞行器: 十一.MPU6050配置与读取

基于FreeRTOS的STM32四轴飞行器: 十一.MPU6050 一.芯片介绍二.配置I2C三.编写驱动四.读取任务的测试五.MPU6050六轴数据的校准 一.芯片介绍 芯片应该放置在PCB中间,X Y轴原点,敏感度131表示范围越小越灵敏。理想状态放置在地面上X,Y&#xf…

后端学习day1-Spring(八股)--还剩9个没看

一、Spring 1.请你说说Spring的核心是什么 参考答案 Spring框架包含众多模块,如Core、Testing、Data Access、Web Servlet等,其中Core是整个Spring框架的核心模块。Core模块提供了IoC容器、AOP功能、数据绑定、类型转换等一系列的基础功能,…

【赵渝强老师】在Docker中运行达梦数据库

Docker是一个客户端服务器(Client-Server)架构。Docker客户端和Docker守护进程交流,而Docker的守护进程是运作Docker的核心,起着非常重要的作用(如构建、运行和分发Docker容器等)。达梦官方提供了DM 8在Doc…

Python电影市场特征:AR模型时间序列趋势预测、热图可视化评分影响分析IMDb数据|附数据代码

原文链接:https://tecdat.cn/?p41214 分析师:Zhiheng Lin 在数字时代,电影产业的数据分析已成为洞察市场趋势与用户偏好的重要工具。本专题合集聚焦印度电影市场,通过IMDb数据集(IMDb Movies Dataset)的深…

扭蛋机小程序开发,潮玩娱乐消费风口下的机遇

随着Z世代消费能力的提升和盲盒经济的火爆,扭蛋文化正迎来爆发式增长。 扭蛋机作为一种充满惊喜感的消费模式,正从线下走向线上,并借助移动互联网实现了数字化转型。线上扭蛋机小程序不仅延续了传统扭蛋的趣味性,还通过数字化手段…

各类神经网络学习:(五)LSTM 长短期记忆(上集),结构详解

上一篇下一篇RNN(下集)待编写 LSTM(长短期记忆) 参考知乎文章《人人都能看懂的LSTM介绍及反向传播算法推导(非常详细) - 知乎》,部分图片也进行了引用。 参考视频教程《3.结合例子理解LSTM_哔哩…