适合多种语言的BPE(Byte-Pair Encoding)编码

文章目录

  • 前言
  • BPE
  • 参考

前言

因为最近在看T5,里面讲到一些分词的方法如BEP,因为现在都是在玩大模型,那么语料也就都很大,而且还需要适配不同的语言,而不同的语言又不一定像英文那样按空格切分就行,例如咱们的中文,所以就需要一些适用性更广的方法了。

不仅如此,当我们遇到未知词汇时,如果使用常规的词汇表,那么未知词汇通常为 < UNK >,此时未知词汇之间就没有任何区分,而如果我们使用subword来创建词汇表,即将语料中连着出现频率高的字符串作为衍生的字词,此时面对未知词汇时就有可能使用到部分字词的语义,作出一定的区分,同时使用这样的方法也能够缓解词汇表过大的问题,同时也能保证一定的语义表示效果。

BPE

BPE(Byte-Pair Encoding)编码,就是一种根据频率切分语料的方法,能够将原始语料切分为subword,输入也不受限制,应该是字符就行。
在这里插入图片描述
例如我们的语料为最左边的那些,(2 bed 表示语料中出现了2次bed这个词)我们先按照字符级全都切分,就得到了初始的词汇字典

然后我们开始寻找出现频率最多的pair(字符对)
在这里插入图片描述
可以看到语料中频率最高的pair为st,此时就可以将这个pair合成一个字符,加入词汇字典里,然后继续。
在这里插入图片描述
然后发现未处理的pair中e 和 st这对pair是频率是最高的,此时将est加入到词汇字典中
然后发现未处理的pair中b 和 e这对pair是频率是最高的,此时将be加入到词汇字典中
然后会发现剩下的pair频率没有超过一次了,那么可以结束运算了。
此时就得到了我们的subword字典了。

此时我们的pair表就完成了,当进入一个新词时,例如best,我们就通过pair table进行字词的划分,从频率从高到低来进行划分。
首先best开始的时候分为b e s t四个字符
然后对着最右边的表,发现s和t可以合并为一个字符,此时就变为b e st
继续,发现e和st可以合并,此时就变为b est
继续,发现不能并了,就结束了
但是为了我们能够方便地还原初始词,我们可以在字词后面(除了最后一个之外)加入一些特定的字符
例如我们加入@@
那么最后best就划分为b@@ est两部分了。

那么我们得到了字词字典,就弄个embedding来表示字词,词语切分为字词后就能够被表示出来,实验证明这种方法,即能够很好的限制字典大小,也能保证性能正常。

参考

https://www.bilibili.com/video/BV1714y1W7d5/?spm_id_from=333.337.search-card.all.click&vd_source=f57738ab6bbbbd5fe07aae2e1fa1280f

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

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

相关文章

小程序学习-19

Vant Weapp - 轻量、可靠的小程序 UI 组件库 ​​​​​ Vant Weapp - 轻量、可靠的小程序 UI 组件库 安装出现问题&#xff1a;rollbackFailedOptional: verb npm-session 53699a8e64f465b9 解决办法&#xff1a;http://t.csdnimg.cn/rGUbe Vant Weapp - 轻量、可靠的小程序…

【C++干货铺】C++11新特性——lambda表达式 | 包装器

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 C98中的排序 lambda表达式 lambda表达式语法 表达式中的各部分说明 lambda表达式的使用 基本的使用 [var]值传递捕捉变量var ​编辑 [&var]引用传递捕…

VC++中使用OpenCV进行颜色检测

VC中使用OpenCV进行颜色检测 在VC中使用OpenCV进行颜色检测非常简单&#xff0c;首选读取一张彩色图像&#xff0c;并调用函数cvtColor(img, imgHSV, COLOR_BGR2HSV);函数将原图img转换成HSV图像imgHSV&#xff0c;再设置好HSV三个分量的上限和下限值&#xff0c;调用inRange函…

在WIN从零开始在QMUE上添加一块自己的开发板(二)

文章目录 一、前言往期回顾 二、CPU虚拟化&#xff08;一&#xff09;相关源码&#xff08;二&#xff09;举个例子&#xff08;三&#xff09;测试 三、内存虚拟化&#xff08;一&#xff09;相关源码&#xff08;二&#xff09;举个例子测试 参考资料 一、前言 笔者这篇博客…

雷盛红酒LEESON分享葡萄酒也有“社会责任感”?

葡萄酒文化从来都不仅仅是感官体验&#xff0c;一瓶佳酿的背后不但蕴含着风土人情、历史传承和文化交流&#xff0c;更反映了时代社会的变迁以及体现的社会责任意识。 目前葡萄酒生产商追求酒瓶越来越轻就是葡萄酒市场上的一个趋势&#xff0c;因为任何一个行业都在追求与世界共…

c语言算法——大数相加

C数据类型 类型与描述1基本数据类型 它们是算术类型&#xff0c;包括整型&#xff08;int&#xff09;、字符型&#xff08;char&#xff09;、浮点型&#xff08;float&#xff09;和双精度浮点型&#xff08;double&#xff09;。2枚举类型&#xff1a; 它们也是算术类型&am…

Vue2的双向数据绑定

Vue2的双向数据绑定 Observer&#xff1a;观察者&#xff0c;这里的主要工作是递归地监听对象上的所有属性&#xff0c;在属性值改变的时候&#xff0c;触发相应的watcher。 Watcher&#xff1a;订阅者&#xff0c;当监听的数据值修改时&#xff0c;执行响应的回调函数&#x…

Spring:StopWatch

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 目录 一、输出总耗时 二、输出所有任务的耗时和占比 总结 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、输出总耗时 public void stopWatc…

ERP进出库+办公用品管理系统

系统架构 简介系统架构部分页面结构图UML逻辑图办公用品入出库 简介 本系统适用于ERP企业公司职员关于系统化的申请相关办公用品&#xff0c;提高整体系统整合行&#xff0c;加大上下级之间的联系&#xff0c;规避因人员过多&#xff0c;而浪费人力在简单重复的工作中&#xf…

conda国内加速

1、配置国内源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/ 2、显示源地址 conda config --set show_channel_urls yes

【MongoDB】下载安装、指令操作

目录 1.下载安装 2.指令 2.1.基础操作指令 2.2.增加 2.3.查询 2.4.修改 2.5.删除 前言&#xff1a; 关于MongoDB的核心概念请移步&#xff1a; 【文档数据库】ES和MongoDB的对比-CSDN博客 1.下载安装 本文以安装Windows版本的mongodb为例&#xff0c;Linux版本的其实…

30岁的路口,这些90后选择离开大城市

#第一批90后今年34岁了#【30岁的路口&#xff0c;这些90后选择离开大城市】#第一批90后现状如何# 据惊蛰研究所&#xff1a;第一批90后今年34岁了。假如从2012年踏入职场&#xff0c;第一批90后如今已在职场摸爬滚打十年。十年之前&#xff0c;他们意气风发来到大城市&#xff…

go语言(十一)----面向对象继承

一、面向对象继承 写一个父类 package mainimport "fmt"type Human struct {name stringsex string }func (this *Human) Eat() {fmt.Println("Human.Eat()...") }func (this *Human) Walk() {fmt.Println("Human.Walk()...") }func main() {h…

开源项目_大模型应用_Chat2DB

1 基本信息 项目地址&#xff1a;https://github.com/chat2db/Chat2DBStar&#xff1a;10.7K 2 功能 Chat2DB 是一个智能且多功能的 SQL 客户端和报表工具&#xff0c;适用于各种数据库。 对于那些平时会用到数据库&#xff0c;但又不是数据库专家的程序员来说&#xff0c;…

CISSP 2024年考试大纲中文版

2024 CISSP详细内容大纲及权重最终版(仅供公众使用) 最后编辑于2023年8月18日-生效日期2024年4月15日 分类 域/任务/子任务 权重 域1 安全和风险管理 16% 1.1 理解、坚持和促进职业道德(2-4项) 1.1.1 ISC2职业道德守则 1.1.2 组织道德守则 1.2 理解并应用安全概…

【MATLAB源码-第119期】基于matlab的GMSK系统1bit差分解调误码率曲线仿真,输出各个节点的波形以及功率谱。

操作环境&#xff1a; MATLAB 2022a 1、算法描述 GMSK&#xff08;高斯最小频移键控&#xff09;是一种数字调制技术&#xff0c;广泛应用于移动通信&#xff0c;例如GSM网络。它是一种连续相位调频制式&#xff0c;通过改变载波的相位来传输数据。GMSK的关键特点是其频谱的…

华为FusionStorage Block、OceanStor 100D、OceanStor pacific的区别

华为FusionStorage Block、OceanStor 100D、OceanStor pacific的区别&#xff1f; 华为块存储到底是叫什么呢&#xff1f; 有接触过华为块存储产品的小伙伴肯定都有疑惑&#xff0c;在FusionStorage 、FusionStorage Block、OceanStor 100D、OceanStor pacific等等的名词中&a…

【JSON2WEB】01 WEB管理信息系统架构设计

WEB管理信息系统分三层设计&#xff0c;分别为DataBase数据库、REST2SQL后端、JSON2WEB前端&#xff0c;三层都可以单独部署。 1 DataBase数据库 数据库根据需要选型即可&#xff0c;不需要自己设计开发&#xff0c;一般管理信息系统都选关系数据库&#xff0c;比如Oracle、…

Docker(四)操作容器

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; 操作 Docker 容器 容器是 Docker 又一核心概念。 简单的说&#xff0c;容器是独立运行的一个或一组应用&#xff0c;以及它们的运行态环境…

matlab appdesigner系列-常用14-树(复选框)

之前系列常用9&#xff0c;为单个复选框。树&#xff0c;就是多个复选框形成的选项组 示例&#xff1a;列举湖北省的几个城市 湖北省 武汉 宜昌 襄阳 荆州 1&#xff09;将树&#xff08;复选框&#xff09;拖拽到画布上&#xff0c;方式1就是&#xff1a;文字可以在右侧…