bert-base-uncased模型的tokenizer.json和vocab.txt的区别和联系

说在前面

突然发现这两个文件是由区别的,之前傻傻的把两个文件都下载到模型里面了,transformers工具包使用bert加载分词器时并不是都需要这两个文件的,而是工具加载器类型类具体决定的。

vocab.txt 的作用

  • 词汇表文件,通常是一个纯文本文件,其中列出了模型使用的所有词汇(Token)。
  • BERT 和类似的模型中,vocab.txt 是必需的,因为它包含了从输入文本到模型输入的映射(即词汇到 ID 的映射)。
    • 例如,对于一个分词器,它会将 "hello" 映射到一个 ID(如 1012),并通过这种方式来执行文本的分词。
  • vocab.txt 是传统的分词器(如 BertTokenizer)的核心文件,加载分词器时,分词器会根据这个词汇表来进行分词。

tokenizer.json 的作用

  • tokenizer.json 文件通常是由 Fast Tokenizer(如 BertTokenizerFast)生成的,它包含了分词器的详细配置信息。
    • tokenizer.json 包含的不仅仅是词汇表,还包括分词器的一些算法配置、特殊字符的映射、字节对编码(BPE)相关的合并规则等。
    • Fast Tokenizer 使用 tokenizers 库,它是一个专为高效文本处理设计的库,能加速分词的过程。
    • 当你使用 BertTokenizerFast 这样的 Fast 版本时,tokenizer.json 会被生成,并且通常会保存为一个文件。

加载分词器时使用哪个文件?

  • 对于传统的 BertTokenizer(非 Fast 版本),加载分词器时,主要使用 vocab.txt 文件。这个文件是必须的,它包含了词汇和其对应的 ID。
    • BertTokenizer 加载时,不会使用 tokenizer.json,因为传统版本的分词器只依赖于 vocab.txt
  • 对于 BertTokenizerFast(Fast 版本),它会使用 tokenizer.json 文件,且这个文件是通过 tokenizers 库生成的。虽然它也会依赖 vocab.txt 文件来获取词汇信息,但 tokenizer.json 文件则包含了更多细节(如合并规则、特殊字符处理等)。

为什么你训练后的模型没有 tokenizer.json 文件?

  • 如果你使用的是传统的 BertTokenizer 进行训练,模型保存后就不会包含 tokenizer.json,只会包含 vocab.txt 和其他一些配置文件。
  • 如果你希望生成 tokenizer.json,你需要使用 Fast Tokenizer,比如 BertTokenizerFast,这种情况下,分词器会在保存时自动生成 tokenizer.json 文件。

是否需要同时使用 tokenizer.jsonvocab.txt

  • 不需要同时使用 tokenizer.jsonvocab.txt,它们的作用不同,且它们通常并不同时存在于一个模型的保存目录中。
    • 传统的 BertTokenizer 只需要 vocab.txt
    • Fast Tokenizer(如 BertTokenizerFast)需要 tokenizer.json,但也会使用 vocab.txt

加载分词器时的代码

无论你是否有 tokenizer.json 文件,加载分词器的代码都类似,区别在于你使用的是哪种类型的分词器:

  • 对于传统的 BertTokenizer

    from transformers import BertTokenizertokenizer = BertTokenizer.from_pretrained("bert-base-uncased")  # 加载词汇表和配置文件
    
  • 对于 BertTokenizerFast(如果使用了 Fast 版本)

    from transformers import BertTokenizerFasttokenizer = BertTokenizerFast.from_pretrained("bert-base-uncased")  # 加载tokenizer.json及vocab.txt
    

Fast Tokenizer 的情况下,tokenizer.json 会被自动加载,但你仍然需要确保保存了 vocab.txt 文件,因为它包含了词汇表。

总结:

  • vocab.txt 是传统分词器(如 BertTokenizer)所必需的文件,加载时会使用该文件。
  • tokenizer.jsonFast Tokenizer(如 BertTokenizerFast)的核心文件,包含更多的配置和细节,但不是必需的(只有 Fast Tokenizer 才会使用)。
  • 如果你训练的是传统的 BertTokenizer,那么只有 vocab.txt 文件即可,没有 tokenizer.json 文件也没有问题。
  • 如果你希望生成 tokenizer.json 文件,需要使用 Fast Tokenizer(如 BertTokenizerFast)。

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

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

相关文章

华为NPU服务器昇腾Ascend 910B2部署通义千问Qwen2.5——基于mindie镜像一路试错版(三)

文章目录 前言纯模型推理启动服务后面干什么?这可咋整啊?愁死了!总结前言 这是咱这个系列的第三个文章了。 毕竟,这是我好几天摸索出的经验,能帮助各位在几个小时内领会,我觉得也算是我的功劳一件了。 所以,一是希望大家耐心看下去,耐心操作下去;而是恳请各位多多关…

linux静态链接和动态链接

静态链接的特点 程序独立性高 静态链接是在程序编译时,将所有需要的目标文件以及它们所依赖的库文件中的代码和数据链接成一个可执行文件。一旦链接完成,这个可执行文件就包含了运行所需的全部内容,不依赖外部的库文件。例如,一个…

Android学习8 -- NDK2--练习2(Opencv)

以下是一个简单的安卓项目示例,通过NDK调用OpenCV来处理图像(例如,将彩色图像转换为灰度图像)。 开发环境 安装 Android Studio(支持NDK开发)。配置NDK和CMake(通过Android Studio的SDK Manage…

Pixtral Large开源:Mistral AI的1240亿参数多模态模型超越GPT-4o等竞争对手

Pixtral Large是什么 Pixtral Large是由法国人工智能初创公司Mistral AI开发的超大多模态模型,拥有1240亿参数,2024年11月18日正式对外发布。它基于Mistral Large 2开发而成,具备1230亿参数的多模态解码器和10亿参数的视觉编码器。这个模型能…

阿里云整理(二)

阿里云整理 1. 访问网站2. 专业名词2.1 域名2.2 域名备案2.3 云解析DNS2.4 CDN2.5 WAF 1. 访问网站 用户使用浏览器访问网站大体分为几个过程: 用户在浏览器输入域名URL,例如www.baidu.com。 不过,浏览器并不知道为该域名提供服务的服务器具…

【联表查询】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

【分布式】分布式缓存

一、什么是分布式缓存 分布式缓存是一种将缓存数据存储在多个节点上的缓存方案。它通过将数据分散存储在多个节点的内存中,以提高系统的读取性能、降低数据库压力和提高系统可扩展性。 二、分布式缓存的优点 优点明细提高性能:分布式缓存可以将数据缓…

创建子类对象时,会创建父类对象吗

一、查询网上的结论: 创建子类对象时, 会先调用子类构造方法对子类对象进行初始化,子类构造方法的第一行又会调用父类构造方法对父类进行初始化(不会创建父类对象, 但是会在子类对象的内存空间中开辟一块被包含的内存空间存储父类…

标贝科技受邀出席2024东湖国际人工智能高峰论坛并入选数据要素合作伙伴名单

近日,备受瞩目的2024东湖国际人工智能高峰论坛在中国光谷科技会展中心隆重召开。会议以“智联世界,共创未来”为主题,省市相关单位、专家学者、产学研各界百余家联合体单位齐聚一堂,共话人工智能领域的最新技术及产业发展趋势。会…

[Python] 进阶之路:模块、包和异常处理

在掌握了Python的类与对象后,下一步是深入理解模块化开发和异常处理。模块与包帮助我们组织代码,增强代码的可维护性和重用性,而异常处理则是编写健壮代码的重要技能。本文将系统讲解Python中模块、包和异常处理的核心概念与实用技巧。 一、模…

使用AI工具Screenshot to Code将UI设计图翻译成代码

一、获取openAI apikey。 一般有两种方式,一种是到openAI官网注册账号,付费申请GPT4的apikey。另一种是某宝买代理。我这里采用第二种。 二、安装Screenshot to Code 1.到github下载源码。 2.启动,两种方式:源码启动和docker启动…

SpringBoot mq快速上手

1.依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> 2.示例代码 基础信息配置 package com.example.demo.config;import org.springframework.amqp.co…

Rust学习笔记_07——枚举和范围

Rust学习笔记_04——引用 Rust学习笔记_05——控制流(1) Rust学习笔记_06——控制流(2) 文章目录 1. 枚举1.1基础1.2 给枚举变体起个“别名”1.3 枚举与匹配&#xff08;match&#xff09; 2. 范围2.1 介绍2.2 半开区间范围2.3 包含范围的语法糖2.4 步长范围&#xff08;Range …

VMware Workstation Pro安装教程 (全图文保姆级)

一、前言 系统&#xff1a;Windows 11时间&#xff1a;2024/12/04需求&#xff1a;注册&#xff1a;broadcom&#xff08;邮箱&#xff09;难点&#xff1a;在官网找到下载链接 二、说明 建议前往官网&#xff08;https://www.vmware.com&#xff09;下载&#xff0c;可能加…

前端开发 之 15个页面加载特效下【附完整源码】

文章目录 十二&#xff1a;铜钱3D圆环加载特效1.效果展示2.HTML完整代码 十三&#xff1a;扇形百分比加载特效1.效果展示2.HTML完整代码 十四&#xff1a;四色圆环显现加载特效1.效果展示2.HTML完整代码 十五&#xff1a;跷跷板加载特效1.效果展示2.HTML完整代码 十二&#xff…

protobuf实现Hbase数据压缩

目录 前置HBase数据压缩效果获取数据(反序列化) 前置 安装说明 使用说明 HBaseDDL和DML操作 HBase数据压缩 问题 在上文的datain中原文 每次写入数据会写入4个单元格的内容&#xff0c;现在希望能对其进行筛减&#xff0c;合并成1格&#xff0c;减少存储空间&#xff08;序列…

Svn如何切换删除账号

记录Svn清除切换账号 1.首先打开小乌龟的设置如下图 打开设置后单击已保存数据&#xff0c;然后选择清除 接上图选择清除后&#xff0c;就可以打勾选择清除已保存的账号&#xff0c;我们再次检出的就可以切换账号了 &#x1f449;总结 本次记录Svn清除切换账号 如能帮助到你…

正点原子imx6ull配置MQTT客户端上传数据到Ubuntu MQTT服务器

目录 使用QT自带的MQTT模块部署客户端创建一个class专门用于MQTT客户端通讯使用QT在ui界面上生成按钮在Windows上订阅相应主题测试在imx6ull上订阅Windows发布的消息 在上一篇中介绍了在Ubuntu22.04的Docker中部署MQTT服务器&#xff0c;然后在window上测试订阅和发布&#xff…

Linux的用户和权限【Linux操作系统】

文章目录 Linux的用户切换用户普通用户暂时以root用户的权限执行指令如何把一个普通用户加入白名单? 新建用户 Linux权限权限的组成更改权限文件/目录权限的表示方法&#xff1a; umask粘滞位添加粘滞位的方法 Linux的用户 Linux下有两种⽤⼾&#xff1a;超级用户&#xff08…

clang和gcc的区别

​ 1.Clang采用的license是BSD&#xff0c;而GCC是GPLv3&#xff1b;GCC支持许多语言扩展&#xff0c;其中有些Clang不能实现。 2.GCC&#xff1a;GNU(Gnu’s Not Unix)编译器套装(GNU Compiler Collection&#xff0c;GCC)&#xff0c;指一套编程语言编译器&#xff0c;以GPL…