预训练模型分词方式

news2025/8/12 12:41:16

BPE、WordPiece、SentencePiece

tokenize的目标是将输入的文本流, 切分成一个个子串,使得每个子串具有相对完整的语义,便于学习embedding表达和后续模型的使用。

tokenize三种粒度:word、subword、char

word/词:最自然的语言单元,中文需要分词算法。由于词汇表较大,存在长尾现象,词汇表可能超大。常规的词汇表,一般大小不超过5万。

char/字符:最基本的字符。字符的数量是少量有限的,由于字符数量太小,在为每个字符学习嵌入向量表示的时候,每个向量容纳太多的语义信息,学习困难。

subword/子词级别:介于字符和单词之间,平衡了词汇量和语义独立性常用词应该保持原状,生僻词应该拆分成子词以共享token压缩空间

常用tokenize算法

  • BPE(Byte-Pair Encoding)
  • WordPiece
  • SentencePiece
ModelType of Tokenizer
BERTWordPiece
GPT-2BPE
XLNetSentencePiece
ALBERTSentencePiece
T5SentencePiece

BPE:字节对编码。核心思想在于将最常出现的子词对合并,直到词汇表达到预定大小时停止。

  • 依赖于预分词器pretokenizer完成初步的切分。pretokenizer可以是简单基于空格,也可以基于规则
  • 分词后,统计每个词的词频
  • 建立基础词汇表,包括所有的字符
  • 根据规则,分别考察2-gram, 3-gram的基本字符组合。将高频的n-gram组合依次加入到词汇表中,直到词汇表达到预定大小停止
  • 最终词汇表的大小 = 基础字符词汇表大小 + 合并串的数量(例如:GPT, 40478 = 478(基础字符) + 40000(merges))

WordPiece

子词粒度的tokenize算法subword tokenization algorithm。例如BERT、DistilBERT、Electra均使用它。

其原理同BPE接近,在做合并之时,不是根据最高频的组合,而是寻找最大化训练数据似然的merge。

Unigram

与BPE或者WordPiece不同, Unigram的算法思想从一个巨大的词汇表出发,再逐渐删除trimdown其中的词汇,直到size满足预定义。

初始的词汇表采用所有预分词器分出来的词,再加上所有高频的子串。每次从词汇表中删除词汇的原则是使预定义的损失最小。训练时,计算loss的公式为:Loss = -\sum_{i = 1}^{N} log(\sum_{x \in S(x_{i})}^{} p(x))

SentencePiece

将一个句子看作一个整体,再切分成片段,而没有保留天然的词语的概念。

空格space也当作一种 特殊字符来处理,再用BPE或者Unigram算法来构造词汇表。

SentencePiece与Unigram算法联合使用, 例如ALBERT、XLNet、Marian、T5

切分实例与代码分析

BertTokenizer / WordPiece

【BertTokenizer, 基于WordPiece算法, base版本的词汇表大小为21128】

from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')
tokens = tokenizer.encode("我是一个好人")
  • 在BertTokenizer中,用##符号表示非开头的子词
  • 标点符号、生僻字等未出现的token被[UNK]代替
  • 中文基本拆分成了字的形式

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

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

相关文章

Flutter高仿微信-第35篇-单聊-视频通话

Flutter高仿微信系列共59篇,从Flutter客户端、Kotlin客户端、Web服务器、数据库表结构、Xmpp即时通讯服务器、视频通话服务器、腾讯云服务器全面讲解。 详情请查看 效果图: 目前市场上第三方视频接口的价格高的吓人 视频通话价格: 标清&…

代码随想录算法训练营day55 | 392.判断子序列,115.不同的子序列

392.判断子序列 参考代码随想录算法训练营第五十五天 |392. 判断子序列、115. 不同的子序列 - 掘金 暴力解法: Time Complexity: O(M*N) Space Complexity: O(N) class Solution:def isSubsequence(self, s: str, t: str) -> bool:start 0 #used to make sur…

[附源码]java毕业设计医院网上预约系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

Docker(9)DockerFile

文章目录什么是DockerFile构建过程执行DockerFile大致流程常用保留字DockerFile小案例创建dockerfile文件dockerfile内部脚本执行命令虚悬镜像什么是DockerFile DockerFile 使用来构建Docker镜像的文本文件,是由一条条构建镜像所需要的指令和参数组成脚本 构建过程…

CSDN Markdown 编辑器的目录与页内跳转功能

CSDN Markdown 编辑器的目录与页内跳转功能 文章目录CSDN Markdown 编辑器的目录与页内跳转功能 目录 页内跳转 正文内容跳转到标题正文内容跳转到正文内容结语目录 CSDN Markdown 编辑器的目录功能使用[TOC](你想要显示的目录总标题)格式,其中默认可省略括号及括…

2022-11-06 网工进阶(三十五)---PIM-SM工作原理(组播分发树的形成、ASM、SSM)

PIM-DM的局限性 中大型组播网络中由于网络较大,如果依然使用PIM-DM会遇到诸多问题: 1 使用“扩散-剪枝”方式需要全网扩散组播报文,对于网络有一定冲击。 2 所有组播路由器均需要维护组播路由表,即使该组播路由器无需转发组播数…

ARM-A架构入门基础(一)预备知识

14天学习训练营导师课程:周贺贺《ARMv8/ARMv9架构-快速入门》 1. 背景 ARM全称: Advanced RISC Machines。 ARM处理器: 基于ARM公司设计的架构而研发的处理器,包含arm core和外设。ARM公司本身不生产处理器,只出售技…

RNA-seq 详细教程:分析流程介绍(1)

学习目标 了解从 RNA 提取到获取基因表达矩阵, 既RNA-seq 分析的整个流程。 1. workflow 进行差异表达基因分析的前提是,获取代表基因表达水平的矩阵。因此在进行分析前,必须知道基因表达矩阵是如何产生的。 在本教程中,将会简要的…

基于JAVA的鲜花店商城平台【数据库设计、源码、开题报告】

数据库脚本下载地址: https://download.csdn.net/download/itrjxxs_com/86427660 摘要 在互联网不断发展的时代之下,鲜花软件可以为鲜花企业带来更多的发展机会,让企业可以挖掘到更多的潜在用户,同时结合企业的优势就能够为用户…

【单目标优化求解】粒子群混沌混合蝴蝶优化算法求解最优目标问题(HPSOBOA)【含Matlab源码 1538期】

⛄一、遗传算法简介 1 算法的种群初始化 设D维搜索空间中,随机生成初始解的表达式为: 式中,Xi表示蝴蝶群体中第i只蝴蝶(i 1, 2, 3, …, N)空间位置,N表示初始解的个数;Lb, Ub分别表示搜索空间的上界和下界&#xff…

Linux vmware 编译模块失败。 Vmware player Unable to install all modules.

Vmware player Unable to install all modules. See log for details ubuntu下的vmware play经常会让更新模块。一起点击确认就可以正常编译更新。 而且一定要编译后才能打开虚拟机系统 但是奇怪的是,最近一次点击 更新,报错: 显示的英文…

STM32F103的FSMC模块驱动LCD屏幕

以下内容为对正点原子的STM32F103STM32F103STM32F103精英板的FSMCFSMCFSMC模块驱动LCDLCDLCD屏幕例程的学习。做一个记录来加强对模块的认知。 FSMCFSMCFSMC的全称是FlexiblestaticmemorycontrollerFlexible\quad static\quad memory\quad controllerFlexiblestaticmemory…

【Python+Appium】开展自动化测试(四)使用weditor进行元素定位

目录 前言 一,weditor的安装与使用 二,遇到的问题 结语 前言 上一篇我们讲到了如何通过编写一个简单的Python脚本完成了登录app的操作,如何断言,如何编写一条完整的用例。那么今天继续我们的自动化测试第四天,使用…

【Java进阶篇】第五章 集合(下)--Map集合

文章目录1、概述2、Map接口中的常用方法3、Map集合的遍历4、哈希表的数据结构5、Map集合的存取6、hashCode()和equals()的重写7、一些小零散的东西8、HashMap和Hashtable的区别9、Properties类10、TreeMap11、自定义类实现Comparable接口12、二叉树13、Comparator接…

Caffeine《一》

《Caffeine(Java顶级缓存组件)一》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《Caffeine(Java顶级缓存组件)》《Caffeine(Java顶级缓存组件)一》1. Caffeine缓存概念1.1 缓存的分…

【MyBatis】一、概述

框架 框架就是对通用代码的封装,提前写好了一堆接口和类,我们可以在做项目的时候直接引入这些接口和类,基于这些现有的接口和类进行开发,提高开发效率。 框架一般以jar包形式存在 三层架构 表现层(UI)&am…

数字化助力生产管理:计件工资管理系统

目前因市场经济的发展,企业为求发展同时为防止消极怠工的情况,常把员工工资与产量结合起来。为了增加工人的劳动积极性,秉持多劳多得的科学管理理念,许多生产类型企业均实现了计件工资制。所谓的计件工资制是指按照生产的合格品的…

python之opencv人脸识别快速体验

目录 1、灰度转换 2、引用opencv官方提供的人脸训练模型 3、绘制方框(用于框住人脸) 4、效果及完整代码: 5、检测多张人脸: 学习链接: 1、灰度转换 # 灰度转换gary cv.cvtColor(img,cv.COLOR_BGR2GRAY) 2、引…

图解:Elasticsearch 8.X 如何求解环比上升比例?

1、企业级Elasticsearch 8.X 实战问题 问题描述:有个聚合的需求,问下大家,一个索引中有时间字段 要求 计算本月和上月相比的环比上升比例?——来自GPVIP群 2、问题释义 2.1 啥叫环比? 环比是统计学术语&#xff0c…

LabVIEW使用Deskto pExecution Trace工具包

LabVIEW使用Deskto pExecution Trace工具包 可以使用桌面执行跟踪工具包来调试和优化大型LabVIEW应用程序,包括具有多个循环的应用程序、客户端-服务器架构、动态加载VI等。该工具包从本地或远程计算机桌面上运行的应用程序捕获执行事件,并在表窗格中显…