首页 > 其他分享 >transformer 中 tokenizer 的那些事

transformer 中 tokenizer 的那些事

时间:2022-11-18 15:47:34浏览次数:64  
标签:transformer tokenizer mask list ids 那些 token True

我们使用bert的时候经常会用到huggingface中的tokenizers 进行文本分词,其中有很多函数,tokenizer.tokenizetokenizer,convert_tokens_to_idstokenizer.encodetokenizertokenizer.encode_plustokenizer.pad 在使用的时候经常会傻傻分不清楚,希望在这里对常用到的函数进行说明。

# 导入
from transformers import BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-chinese')

我们使用tokenizer的目的分为两种,一个是分词,一个是编码。输入的内容分为两种,一种是纯文本,一种是已经分好词的token id list

如果你传入的是纯文本

  1. 分词
  • 两步,转为token id list(不带cls 和 sep)
# 不带 cls 和sep 
token_list=tokenizer.tokenize("你好!中国科学院。")  # 只分词 ['你', '好', '!', '中', '国', '科', '学', '院', '。'] 
tokenizer.convert_tokens_to_ids(token_list)  # 转为token id list [872, 1962, 8013, 704, 1744, 4906, 2110, 7368, 511] 
  • 一步直接转为token id list (带cls 和sep,带truncation,带padding)
tokenizer.encode(text="你好!中国科学院。", max_length=15, pad_to_max_length=True, truncation=True, return_special_tokens_mask=True)
# [101, 872, 1962, 8013, 704, 1744, 4906, 2110, 7368, 511, 102, 0, 0, 0, 0] ,101是cls,102是sep
  1. 编码
tokenizer(text="你好!中国科学院。", max_length=15, pad_to_max_length=True, truncation=True, return_special_tokens_mask=True)
"""
生成的文本可以直接送入bert
{'input_ids': [101, 872, 1962, 8013, 704, 1744, 4906, 2110, 7368, 511, 102, 0, 0, 0, 0], 
'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
'special_tokens_mask': [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1], 
'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]}
"""

如果你传入的是已经分好词的token list

  1. 编码:和对文本tokenizer的结果是一致的
token_list=tokenizer.tokenize("你好!中国科学院。")
b=tokenizer.encode_plus(text=token_list, max_length=15, pad_to_max_length=True, truncation=True, return_special_tokens_mask=True)
"""
生成的文本可以直接送入bert
生成的文本可以直接送入bert
{'input_ids': [101, 872, 1962, 8013, 704, 1744, 4906, 2110, 7368, 511, 102, 0, 0, 0, 0], 
'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], 
'special_tokens_mask': [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1], 
'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0]}
"""
  1. 转换为tensor
d=tokenizer.pad({'input_ids':b['input_ids'],'token_type_ids':b['token_type_ids'], 'attention_mask':b['attention_mask']}, return_tensors="pt", padding=False)

标签:transformer,tokenizer,mask,list,ids,那些,token,True
From: https://www.cnblogs.com/carolsun/p/16903276.html

相关文章

  • record_transformer插件的作用?
    在fluentd的配置文件中,有如下的配置: #http://<ip>:9880/myapp.access?json={"event":"data"}<source>@typehttpport9880</source><filtermyapp.**>@ty......
  • 【ARXIV2207】LightViT: Towards Light-Weight Convolution-Free Vision Transformers
    【ARXIV2207】LightViT:TowardsLight-WeightConvolution-FreeVisionTransformers论文地址:https://arxiv.org/abs/2207.05557代码地址:https://github.com/hunto/Li......
  • 异构计算与Transformer综述
    异构计算与Transformer综述英伟达最强异构平台NVIDIAGraceHopperSuperchip架构是第一个真正的异构加速平台,适用于高性能计算(HPC)和AI工作负载。它利用GPU和CPU......
  • Linux设备驱动那些事
    目的初步了解linux设备驱动框架模型初步了解设备驱动模型有哪些元素设备驱动模型元素的说明及解释设备驱动模型元素的工作原理设备驱动模型的小例子对整体有个粗......
  • 关于rm的那些事
    1四分位数解释的很好的一个网站:四分位数2.直方图数学乐是什么神奇的网站,直方图的解释也有!直方图3.运行图4.滞后图作用:观测自相关性5.Q-Qplot作用:比较两个数......
  • ERP系统能给企业带来的那些好处
    ERP系统能给企业带来的那些好处   如下是从几个不同的角度来阐述实施ERP系统之后能给企业带来的好处。   【角度一】 笼统而言,ERP系统给企业带来的好处是......
  • 10 分钟带你了解鉴权那些事
     10分钟带你了解鉴权那些事  前言:鉴权是自动化测试路上的拦路虎,相信大部分同学都深有体会,今天我们就讲一讲这个鉴权到底是怎么回事。一、什么是鉴权,为什么......
  • 【ECCV2022】AMixer: Adaptive Weight Mixing for Self-Attention Free Vision Transf
    1、Motivation这个论文来自于清华大学鲁继文老师团队,核心是attention和MLP-mixer思想的结合。建议用2分钟时间学习一下谷歌公司的MLP-Mixer「MLP-Mixer:Anall-ML......
  • Transformer/BERT/Attention面试问题与答案
    from: https://blog.csdn.net/weixin_40633696/article/details/121810403文章目录1.Self-Attention的核心是什么?2.不考虑多头的原因,self-attention中词向量不乘QKV参......
  • 37、记录使用 Swin Transformer主干网络去实现分类,并转化NCNN、TNN、MNN模型以及部署
    基本思想:最近手中有个swimtransformer模型,想移植手机端进行推理一下,随手记录一下遇到的问题涉及简单的转ncnntnnmnn的流程性问题一、首先我fork了大佬的代码​​https:/......