当前位置: 首页 > news >正文

BertTokenizerFast 和 BertTokenizer 的区别

BertTokenizerFastBertTokenizer 都是用于对文本进行标记化的工具,主要用于处理和输入文本数据以供 BERT 模型使用。它们都属于 HuggingFace 的 transformers 库。

主要区别

  1. 底层实现

    • BertTokenizer: 这是一个使用纯 Python 实现的标记器,底层通常是由 tokenizers 库中的 BPETokenizerWordPieceTokenizer 实现。
    • BertTokenizerFast: 这是一个使用 Rust 实现的标记器,底层由 HuggingFace 的 tokenizers 库中的 BertWordPieceTokenizerFast 实现。Rust 实现的标记器更快,也更高效。
  2. 速度

    • BertTokenizerFast 明显比 BertTokenizer 快。这是因为 Rust 的底层实现使得分词过程更高效,尤其是对于大数据集或需要快速处理的大规模文本任务时,性能改进会更明显。
  3. 兼容性和功能

    • BertTokenizerFast 提供所有 BertTokenizer 中的功能,并且引入了一些额外的特性,如更详细的字符对齐和处理方法,这对需要字符级别对齐的任务(如 NER)特别有用。
    • BertTokenizer 在功能上稍微少一些,更多的基础功能和兼容性。

代码示例

下面是如何使用这两种标记器的示例代码:

from transformers import BertTokenizer, BertTokenizerFast# 初始化tokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')
fast_tokenizer = BertTokenizerFast.from_pretrained('bert-base-uncased')text = "Hello, how are you?"# 使用BertTokenizer进行标记化
tokens = tokenizer(text)
print("BertTokenizer tokens:", tokens)
# BertTokenizer tokens: {'input_ids': [101, 7592, 1010, 2129, 2024, 2017, 1029, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1]}# 使用BertTokenizerFast进行标记化
fast_tokens = fast_tokenizer(text)
print("BertTokenizerFast tokens:", fast_tokens)# BertTokenizerFast tokens: {'input_ids': [101, 7592, 1010, 2129, 2024, 2017, 1029, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1]}

选择哪一个?

  • 效率优先:如果你需要处理大量数据并且对处理速度有较高要求,BertTokenizerFast 是更好的选择。
  • 兼容性和稳定性:如果你习惯使用并且已经在项目中集成了 BertTokenizer,可以继续使用它;不过除非特别需要,一般建议迁移到 BertTokenizerFast 以利用更高的性能和更多的功能。

总结来说,BertTokenizerFast 通常是更好的选择,因为它速度更快,功能更强大,因此更适合大多数应用场景。

相关文章:

BertTokenizerFast 和 BertTokenizer 的区别

BertTokenizerFast 和 BertTokenizer 都是用于对文本进行标记化的工具,主要用于处理和输入文本数据以供 BERT 模型使用。它们都属于 HuggingFace 的 transformers 库。 主要区别 底层实现: BertTokenizer: 这是一个使用纯 Python 实现的标记器&#xff…...

【update 更新数据语法合集】.NET开源ORM框架 SqlSugar 系列

系列文章目录 🎀🎀🎀 .NET开源 ORM 框架 SqlSugar 系列 🎀🎀🎀 文章目录 系列文章目录前言 🍃一、实体对象更新1.1 单条与批量1.2 不更新某列1.3 只更新某列1.4 NULL列不更新1.5 无主键/指定列…...

测试人员面试需要掌握的内容

测试人员面试需要掌握的内容 1、在公司的测试流程是什么? 产品经理确认本次版本的需求,召开需求评审会,进行估时排期,需求和时间都确定之后,UI出设计图,开发人员进行开发,测试人员编写测试用例…...

git 新建分支并推到远程分支

在git或者码云上创建一个项目管理,已经存在主分支,现在需要创建一个其他分支; 具体操作: 1. 查看分支情况 git branch 2. 查看分支状态 git status 3. 一次性创建并切换到本地分支 git checkout -b dev 分步骤创建和切换&…...

【Uniapp-Vue3】showLoading加载和showModal模态框示例

一、showLoading加载 uni.showLoading({ title:"标题", // 其他配置 }); uni.hideLoading(); showLoading开启后不会自动关闭,只能手动配置uni.hideLoading() 来关闭加载框。 二、showModel模态框 uni.showModel({ title:"标题", // 其他配置 …...

PythonOpenCV图片识别

在windows下面,使用python opencv 进行识别,获取到坐标。 依赖安装: pip install opencv-python pip install numpy pip install pyautogui pip install pywin32代码: import cv2 import numpy as np import pyautogui import o…...

构建优雅、高效的 Nodejs 命令行工具 - Archons

目录 项目简介安装基本用法样例创建一个简单的命令行工具使用archons上下文创建进度条 最后 项目地址: https://github.com/noctisynth/archons Bug反馈或功能请求:https://github.com/noctisynth/archons/issues 项目简介 Archons意思是“执政官”,我使…...

你喜欢用什么编辑器?

电脑工作者和程序员所使用的文本编辑器通常需要具备高效率、易用性以及对代码友好等特点,包括语法高亮、自动完成、多文件同时编辑、查找替换、版本控制集成等功能。以下是几个广受开发者欢迎且实用性较强的文本编辑器: Visual Studio Code(V…...

鸿蒙报错Init keystore failed: keystore password was incorrect

报错如下: > hvigor ERROR: Failed :entry:defaultSignHap... > hvigor ERROR: Tools execution failed. 01-13 16:35:55 ERROR - hap-sign-tool: error: Init keystore failed: keystore password was incorrect * Try the following: > The key stor…...

【Flink】Flink内存管理

Flink内存整体结构图: JobManager内存管理 JVM 进程总内存(Total Process Memory)Flink总内存(Total Flink Memory):JVM进程总内存减去JVM Metaspace(元空间)和JVM Overhead(运行时开销)上图解释: JVM进程总内存为2G;JVM运行时开销(JVM Overh…...

JVM:ZGC详解(染色指针,内存管理,算法流程,分代ZGC)

1,ZGC(JDK21之前) ZGC 的核心是一个并发垃圾收集器,所有繁重的工作都在Java 线程继续执行的同时完成。这极大地降低了垃圾收集对应用程序响应时间的影响。 ZGC为了支持太字节(TB)级内存,设计了基…...

Docker常用命令大全

Docker容器相关命令: 创建并启动容器: docker run:创建一个新的容器并运行一个命令。例如:docker run -d -p 8080:80 nginx这将后台(-d)运行一个Nginx容器,并映射宿主机的8080端口到容器的80端口。 列出容器&#x…...

(12)springMVC文件的上传

SpringMVC文件上传 首先是快速搭建一个springMVC项目 新建项目mvn依赖导入添加webMoudle添加Tomcat运行环境.在配置tomcat时ApplicationContext置为"/"配置Artfact的lib配置WEB-INF配置文件(记得添加乱码过滤)配置springmvc-servlet文件&…...

在Linux系统中无网络安装Nginx并配置负载均衡

在Linux系统中无网络安装Nginx并配置负载均衡 在现代的Web开发和运维中,Nginx作为一个高性能的HTTP和反向代理服务器,被广泛应用于负载均衡、静态资源服务、SSL终端等场景。然而,在某些特殊环境下,服务器可能无法访问互联网&…...

Android车机DIY开发之软件篇(三)编译Automotive OS错误(1)

Android车机DIY开发之软件篇(三)编译Automotive OS错误(1) 问题 FAILED: out/soong/build.ninja cd “KaTeX parse error: Expected EOF, got & at position 49: …soong_build")" &̲& BUILDER"PWD/KaTeX parse error: Expected EOF, got & …...

基于网络爬虫技术的网络新闻分析【源码+文档+部署讲解】

目 录 1 绪论 1.1 论文研究背景与意义 1.2 论文研究内容 2 系统需求分析 2.1 系统需求概述 2.2 系统需求分析 2.2.1 系统功能要求 2.2.2 系统IPO图 2.2 系统非功能性需求分析 3系统概要设计 3.1 设计约束 3.1.1需求约束 3.1.2设计策略 3.1.3 技术实现 3.3 模块…...

uniapp区域滚动——上划进行分页加载数据(详细教程)

##标题 用来总结和学习,便于自己查找 文章目录 一、为什么scroll-view?          1.1 区域滚动页面滚动?          1.2 代码? 二、分页功能?          2.1 如何实现&#xff…...

机器学习(1):线性回归概念

1 线性回归基础 1.1 什么是线性 例如:汽车每小时60KM,3小时可以行使多长距离?已知汽车的速度,则汽车的行使距离只与时间唯一相关。在二元的直角坐标系中,描出这一关系的图是一条直线,所以称为线性关系。 线…...

关于编写测试用例的细枝末节

这里写目录标题 故障判别类-边界考虑示例1.0:若A>20.3且持续时间≥15ms时(判故周期为1000Hz),输出B为1,否则输出B为0。 故障判别类-不可恢复测试示例1.1:若A>20.3且持续时间≥15ms时…...

《计算机网络》课后探研题书面报告_了解PPPoE协议

PPPoE协议的工作原理与应用分析 摘 要 PPPoE(Point-to-Point Protocol over Ethernet)是一种广泛应用于宽带接入的网络协议,特别是在DSL(数字用户线路)和光纤网络中具有重要的应用价值。PPPoE结合了PPP协议的认证、加…...

Tftpd32/Tftpd64不止是TFTP!手把手教你玩转它的DHCP和Syslog服务器功能

Tftpd32/Tftpd64:解锁DHCP与Syslog服务的隐藏潜力当大多数人提起Tftpd32/Tftpd64时,第一反应往往是它作为TFTP服务器的功能。这款轻量级工具确实在文件传输领域表现出色,但它的能力远不止于此。今天,我们将深入探索这款软件中两个…...

Airtest Poco实战:5分钟搞定微信小程序自动化测试环境搭建与元素抓取

Airtest Poco实战:5分钟搞定微信小程序自动化测试环境搭建与元素抓取微信小程序作为轻量级应用的代表,已经渗透到电商、社交、工具等各个领域。随着小程序功能的日益复杂,自动化测试成为保障产品质量的重要手段。本文将带你快速搭建微信小程序…...

为Claude Code配置稳定API源并解决访问限制

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为Claude Code配置稳定API源并解决访问限制 Claude Code 作为一款强大的 AI 编程辅助工具,其原生服务在某些情况下可能…...

基于ESP8266与MQTT的家庭水压自动控制系统设计与实现

1. 项目概述与核心需求解析家里水压不稳、供水时断时续,这大概是很多朋友都遇到过的烦心事。我所在的城市供水情况就很不理想,为了解决这个问题,我不得不自己动手,搭建了一套基于ESP8266微控制器的家庭水压增压与储水自动控制系统…...

Unity项目DrawCall降不下来?试试用Mesh Baker合并贴图集,保姆级图文教程

Unity性能优化实战:用Mesh Baker合并贴图集降低DrawCall全流程解析当你的Unity项目帧率开始卡顿,Profiler里DrawCall数字居高不下时,合并贴图集往往是解决问题的关键一步。本文将以一个实际项目为例,带你从零开始使用Mesh Baker的…...

别再只用递归了!用C语言栈实现非递归快速排序,内存效率提升实战

从递归到迭代:C语言栈实现非递归快速排序的工程实践 在嵌入式开发和大规模数据处理场景中,递归实现的快速排序常常面临栈溢出风险。当排序10万个元素的数组时,递归深度可能达到log₂100000≈17层,在仅有2KB栈空间的STM32F103上极易…...

ComfyUI-Manager完全指南:掌握AI工作流管理的核心技术

ComfyUI-Manager完全指南:掌握AI工作流管理的核心技术 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custo…...

Taotoken的稳定性与低延迟在实时对话应用中的实际体验

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken的稳定性与低延迟在实时对话应用中的实际体验 在开发需要快速响应的AI聊天应用时,后端API的稳定性和延迟表现是…...

掌握OpenCore Legacy Patcher:3步让老旧Mac焕发新生的实用指南

掌握OpenCore Legacy Patcher:3步让老旧Mac焕发新生的实用指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher OpenCore Legacy Patcher是一款开源…...

AI 如何改变软件工程:Martin Fowler 视角 + 实战洞见

AI 如何改变软件工程:Martin Fowler 视角 实战洞见 AI(尤其是 LLM)是软件工程自高级语言(从汇编到 C/Fortran)以来最大的转变。它引入了非确定性(Non-deterministic)编程,改变了从编…...