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

python transformers库笔记(BertTokenizerFast类)

BertTokenizerFast类

1、特点

        速度快:底层使用Rust实现,比纯python的BertTokenizer快得多(尤其是批量处理的时候),且支持多线程使用。

        功能一致:与BertTokenizer的API完全兼容,可以直接替换使用。支持所有的BERT变体。

        额外功能:提供更丰富的后处理选项(如截断、填充的精细控制)。支持直接返回token_type_ids、attention_mask等张量。

2、基本用法

from transformers import BertTokenizerFast# 初始化分词器,以chinese-bert-wwm模型为例
tokenizer = BertTokenizerFast.from_pretrained('chinese-bert-wwm')# 单条文本分词
text = ‘你好,明天!’
encoded_input = tokenizer(text, return_tensors='pt')  # 返回pytorch张量
"""
输出结果:
{'input_ids': tensor([[101, 3209, 1921, 8024, 872, 1962, 8013, 102]]),'token_type_ids': tensor([[0, 0, 0, 0, 0, 0, 0, 0]]),'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1]])
}
"""
# 批量文本分词
texts = ['明天,你好!', '你好,明天!']
batch_encoded = tokenizer(texts, padding=True, truncation=True, return_tensors='pt')
"""
输出结果:
{'input_ids': tensor([[101, 3209, 1921, 8024, 872, 1962, 8013, 102], [101, 872, 1962, 8024, 3209, 1921, 8013, 102]]),'token_type_ids': tensor([[0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0]]),'attention_mask': tensor([[1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1]])
}
"""

3、关键参数

参数名作用
padding=True自动填充到批次中最长序列长度
trunction=True自动截断到模型最大长度(512)
return_tensors='pt'返回pytorch张量(可选"tf"为TensorFlow或"np"为numpy)
max_length=128显式指定最大长度
add_special_tokens是否添加[cls]和[sep],默认为True
return_offsets_mapping返回每个token在原始文本中的字符集起始和结束位置
skip_special_tokens在解码(将Token ID转回文本)时跳过特殊token(如[CLS]、[SEP]、[PAD]等),默认值为False,设为True后输出更干净的文本

 4、自定义tokens

tokenizer.add_tokens(['亚马逊', '速卖通'])  # 添加新的token
model.resize_token_embeddings(len(tokenizer))  # 调整模型嵌入层

5、偏移量映射(用于命名实体识别任务)

encoded_input = tokenizer(text, return_offsets_mapping=True)
print(encoded_input["offset_mapping"])  # 输出每个token在原文中的位置

6、快速解码

decoded_text = tokenizer.decode(encoded_input["input_ids"][0], skip_special_tokens=True)

相关文章:

  • 阳台光伏配套电表ADL200N-CT/D16-Wf-1
  • 如何用4 种可靠的方法更换 iPhone(2025 年指南)
  • 8N65-ASEMI工业自动化领域专用8N65
  • Bean对象不同的方式注入,是不同的annotation接口描述
  • Volta 管理 Node 版本最佳实践教程
  • SpringBoot深度解析:从核心原理到最佳实践
  • Redis的string的底层实现原理
  • 使用 C/C++ 和 OpenCV DNN 进行人体姿态估计
  • [MSPM0开发]之七 MSPM0G3507 UART串口收发、printf重定向,循环缓冲解析自定义协议等
  • 编译,多面体库
  • 如何高效地管理延时任务队列( Zset 分片分桶 保证幂等性)
  • Mysql死锁排查及优化方案
  • wpa p2p指令
  • 《Attention Is All You Need》解读
  • python爬虫简便框架,附带百度操作完整案例
  • 5、Spring AI(MCPServer+MCPClient+Ollama)开发环境搭建_第一篇
  • OpenCV——图像平滑
  • 如何刷新缓冲区(c++、c、linux)
  • RPG27.命中时慢动作
  • druid 数据库密码加密
  • rar在线解压缩网站/深圳百度公司地址在哪里
  • 网站备案需要提交什么资料/中文搜索引擎有哪些平台
  • 网站外链怎么看/百度下载app下载安装
  • 专题活动是在官方网站还是在其他网站做/近期10大新闻事件
  • 做网站开发学什么内容/360优化大师最新版的功能
  • 新加坡 网站建设/广东互联网网络营销推广