tokenizer.tokenize(), tokenizer.encode() , tokenizer.encode_plus() 方法介绍及其区别

这篇具有很好参考价值的文章主要介绍了tokenizer.tokenize(), tokenizer.encode() , tokenizer.encode_plus() 方法介绍及其区别。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

测试代码

from transformers import BertTokenizer
# BertTokenizer
tokenizer = BertTokenizer.from_pretrained('bert-base-uncased')  # bert分词器

sentence = "i am overheat"
encode_ids = tokenizer.encode(sentence) # encode 默认为True 加[CLS][SEP]
encode_words = tokenizer.convert_ids_to_tokens(tokenizer.encode(sentence))   # encode 默认为True 加[CLS][SEP]


print(f"word_list   : {sentence.split()}")                 # 单词列表 (不进行分词)
print(f"tokenize    : {tokenizer.tokenize(sentence) }")    # 单词列表 (进行分词)
print(f"encode_words: {encode_words}")                     # 单词列表 (进行分词) [CLS]+sentence+[SEP]
print(f"encode_ids  : {tokenizer.encode(sentence)}")       # 词id列表 进行分词   101 + ids + 102
print(f"encode_plus : {tokenizer.encode_plus(sentence)}")  # dict 类型 三个key:value, {input_ids:词id列表(进行分词) token_type_ids:分句列表0(分句) attention_mask:掩码列表1(掩码)}
print("=" * 100)

encode_words_true =  tokenizer.encode(sentence, add_special_tokens=True)    # encode 默认为True 加[CLS][SEP]
encode_words_false = tokenizer.encode(sentence, add_special_tokens=False)  # encode False    不加[CLS][SEP]
print(f"encode_words_true : {encode_words_true}")
print(f"encode_words_false: {encode_words_false}")

运行结果:
tokenizer.tokenize(), tokenizer.encode() , tokenizer.encode_plus() 方法介绍及其区别

1. 总结

三个方法的输入都是字符串: "i am overheat"

1.1 tokenizer.tokenize() 方法

输入: str 字符串
输出: str_list 词列表(进行了wordpiece分词的)

['i', 'am', 'over', '##hea', '##t']  

1.2 tokenizer.encode() 方法

输入: str 字符串
输出: int_list id列表 开始和末尾分别添加了[CLS] [SEP]的词id 101, 102

[101, 1045, 2572, 2058, 20192, 2102, 102]

可以通过tokenizer.convert_ids_to_tokens转化为token列表 str_list

['[CLS]', 'i', 'am', 'over', '##hea', '##t', '[SEP]']

add_special_tokens=True 默认为True 表示加不加[CLS][SEP]这两个词id

1.3 tokenizer.encode_plus() 方法

输入: str 字符串
输出: 字典 input_ids就是encode的返回值, token_type_ids用于分句, attention_mask 用于掩码

{'input_ids': [101, 1045, 2572, 2058, 20192, 2102, 102], 'token_type_ids': [0, 0, 0, 0, 0, 0, 0], 'attention_mask': [1, 1, 1, 1, 1, 1, 1]}

’input_ids: 是单词在词典中的编码
‘token_type_ids’:区分两个句子的编码(上句全为0,下句全为1)
‘attention_mask’:指定对哪些词进行self-Attention操作
offset_mapping:记录了 每个拆分出来 的内容(token)都 对应着原来的句子的位置

2.区别

2.1 tokenizer.tokenize() 和 tokenizer.encode() 区别

tokenizer.tokenize() 返回词列表 默认首尾不加 [CLS] [SEP]
okenizer.encode() 返回词id列表 默认首尾加 [CLS] [SEP]对应的词id

2.2 tokenizer.encode() 和 tokenizer.encode_plus() 区别

返回类型不同
tokenizer.encode() 返回 词id列表
tokenizer.encode_plus() 返回 dict类型 其中input_ids 就是 tokenizer.encode() 的返回值, 还有用于分句和掩码的其他两个id

参考博客: https://blog.csdn.net/qq_25850819/article/details/115355858文章来源地址https://www.toymoban.com/news/detail-423911.html

到了这里,关于tokenizer.tokenize(), tokenizer.encode() , tokenizer.encode_plus() 方法介绍及其区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 拼多多TOKEN安卓登录方法

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:拼多多TOKEN登录到安卓模拟器或者安卓真机: 相信很多朋友有这样的需求,需要把手头的拼多多TOKEN登录到网页、安卓模拟器、甚至安卓真机中去。 提示:以下是本篇文章正文内容,下面案例可供

    2024年02月05日
    浏览(17)
  • Jwt(Json web token)——使用token的权限验证方法 & 用户+角色+权限表设计 & SpringBoot项目应用

    1.认证鉴权服务,注册中心,认证中心,鉴权中心; 2.用户,角色,权限表设计,数据库视图的使用; 3.项目中的应用,使用自定义注解+拦截器; 4.枚举类型的json化, @JsonFormat(shape = JsonFormat.Shape.OBJECT) @Getter https://gitee.com/pet365/springboot-privs-token 用户和权限之间关系(多对多

    2024年02月14日
    浏览(70)
  • python中应用requests库模拟postman请求携带token,使用get和post方法请求头携带token

    实际开发中, Python程序中需要调用后台接口 ,充当前端, 后端规定请求头需要携带token postman中 form-data、x-www-form-urlencoded的区别_叫我峰兄的博客-CSDN博客 python requests 带请求头Token发起http请求_python request token_软件测试李同学的博客-CSDN博客 python发送requests请求时,使用登录的

    2024年02月16日
    浏览(46)
  • HttpURLConnection中请求头中携带Token的使用方法

    一般会在头部添加认证信息,如token值或BasicAuth认证的 Authorization值

    2024年02月05日
    浏览(41)
  • 【SpringSecurity】十一、SpringSecurity集成JWT实现token的方法与校验

    添加JWT的maven依赖: application.yaml中配置密钥的值,方便代码中引用和后续更改: 这里的命名改为JWTService好点,Utils命名似乎偏静态方法一点。 再贴一下下统一结果类的定义: 下面是安全用户类,用于在数据库的用户对象类SysUser和返给框架的官方对象类UserDetails之间做过渡转

    2024年02月10日
    浏览(41)
  • 视频推拉流平台EasyDSS点播文件播放请求添加token验证的实现方法

    EasyDSS视频直播点播平台可提供一站式的视频推拉流、转码、点播、直播、播放H.265编码视频等服务,搭配RTMP高清摄像头使用,可将设备的实时流推送到平台上,实现无人机视频推流直播等应用。今天我们来介绍下EasyDSS系统点播文件播放请求添加token验证的实现方法。 1)首先

    2024年02月04日
    浏览(33)
  • 微信小程序二维码生成及access_token获取方法详解

    本文介绍了微信小程序如何生成二维码(wxacode.get接口)以及如何通过auth.getAccessToken接口获取全局唯一的后台接口调用凭据(access_token),为开发者提供了详细的API调用指南和代码示例。 Keywords (关键词):

    2024年02月07日
    浏览(46)
  • K8S集群Token过期处理方法以及Kubectl命令无法使用的问题解决

    使用Kubeadm方式部署的K8S集群,在初始化的时候生成的Token的有效期为1天,当过期之后Token就无法使用了,也就意味着,在Node节点执行 kubeadm join 命令加入K8S集群时就会失败,可以通过下面的方法重新生成Token。 1)创建Token

    2024年02月16日
    浏览(37)
  • nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token ‘xxx‘错误的详细解决方法

    今天写好 导入hive表 的接口,如下代码所示: 同时,使用 Ajax 调用 导入hive表 的接口,如下代码所示: 启动项目后,使用 chrome 浏览器测试,却报出如下错误: 即 nested exception is com.fasterxml.jackson.core.JsonParseException: Unrecognized token \\\'hiveTableName\\\': was expecting (\\\'true\\\', \\\'false\\\' or \\\'null\\\')

    2024年02月04日
    浏览(48)
  • 若依前后端分离版:增加新的登录接口,用于小程序或者APP获取token,并使用若依的验证方法

    登录校验 ——AppLoginService类  具体代码  具体代码  具体代码 此时运行时,会有冲突!!! 需要在 xxx-framework/src/main/java/....../SecurityConfig中条件 如图:  此时启动项目不会报冲突的错 千万千万要添加!!! 下图中的LongUser类要添加东西  要在public String getPassword(){}中添加

    2024年02月07日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包