位置: IT常识 - 正文

BertTokenizer的使用方法(超详细)(bert multihead)

编辑:rootadmin
BertTokenizer的使用方法(超详细) 导入from transformers import BertTokenizerfrom pytorch_pretrained import BertTokenizer

推荐整理分享BertTokenizer的使用方法(超详细)(bert multihead),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:bert tokenizer 原理,bert tokenizer 原理,bert tokenizer,bert中的token,berttokenizer.from_pretrained,bert tokenize,bert tokenize,bert tokenize,内容如对您有帮助,希望把文章链接给更多的朋友!

以上两行代码都可以导入BerBertTokenizer,transformers是当下比较成熟的库,pytorch_pretrained是google提供的源码(功能不如transformers全面)

加载tokenizer = BertTokenizer.from_pretrained('bert_pretrain')数据

首先定义一些数据:

sents = [ '人工智能是计算机科学的一个分支。', '它企图了解智能的实质。', '人工智能是一门极富挑战性的科学。',]tokenize

将句子拆分为token,并不映射为对应的id

token = tokenizer.tokenize(sents[0])print(token)# 输出:['人', '工', '智', '能', '是', '计', '算', '机', '科', '学', '的', '一', '个', '分', '支', '。']convert_tokens_to_idsBertTokenizer的使用方法(超详细)(bert multihead)

将token映射为其对应的id(ids是我们训练中真正会用到的数据)

ids = tokenizer.convert_tokens_to_ids(token)print(ids)#输出:[8, 35, 826, 52, 10, 159, 559, 98, 147, 18, 5, 7, 27, 59, 414, 12043]

同理convert_ids_to_tokens,就是上述方法的逆过程

encode(从此方法开始,只有transformers可以实现)

convert_tokens_to_ids是将分词后的token转化为id序列,而encode包含了分词和token转id过程,即encode是一个更全的过程,另外,encode默认使用basic的分词工具,以及会在句子前和尾部添加特殊字符[CLS]和[SEP],无需自己添加。从下可以看到,虽然encode直接使用tokenizer.tokenize()进行词拆分,会保留头尾特殊字符的完整性,但是自己也会额外添加特殊字符。

token = tokenizer.tokenize(sents[0])print(token)ids = tokenizer.convert_tokens_to_ids(token)print(ids)ids_encode = tokenizer.encode(sents[0])print(ids_encode)token_encode = tokenizer.convert_ids_to_tokens(ids_encode)print(token_encode)# 输出结果:#['人', '工', '智', '能', '是', '计', '算', '机', '科', '学', '的', '一', '个', '分', '支', '。']#[8, 35, 826, 52, 10, 159, 559, 98, 147, 18, 5, 7, 27, 59, 414, 12043]#[1, 8, 35, 826, 52, 10, 159, 559, 98, 147, 18, 5, 7, 27, 59, 414, 12043, 2]#['[CLS]', '人', '工', '智', '能', '是', '计', '算', '机', '科', '学', '的', '一', '个', '分', '支', '。', '[SEP]']

从运行结果可以看到encode确实在首尾增加了特殊词元[cls]和[sep]也就是1和2

encode_plus

返回更多相关信息:

ids = tokenizer.encode_plus(sents[0])print(ids)# {'input_ids': [1, 8, 35, 826, 52, 10, 159, 559, 98, 147, 18, 5, 7, 27, 59, 414, 12043, 2], #'token_type_ids': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], #'attention_mask': [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]}

相关参数介绍:

out = tokenizer.encode_plus( text=sents[0], text_pair=sents[1], #当句子长度大于max_length时,截断 truncation=True, #一律补零到max_length长度 padding='max_length', max_length=30, add_special_tokens=True, #可取值tf,pt,np,默认为返回list return_tensors=None, #返回token_type_ids return_token_type_ids=True, #返回attention_mask return_attention_mask=True, #返回special_tokens_mask 特殊符号标识 return_special_tokens_mask=True, #返回offset_mapping 标识每个词的起止位置,这个参数只能BertTokenizerFast使用 #return_offsets_mapping=True, #返回length 标识长度 return_length=True,)for k, v in out.items(): print(k, ':', v)#input_ids : [1, 8, 35, 826, 52, 10, 159, 559, 98, 147, 18, 5, 7, 27, 59, 414, 12043, 2, 380, 258, 429, 15, 273, 826, 52, 5, 79, 207, 12043, 2]#token_type_ids : [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]#special_tokens_mask : [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]#attention_mask : [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]#length : 30batch_encode_plus

以 batch 的形式去编码句子

ids = tokenizer.batch_encode_plus([x for x in sents])print(ids)# {#'input_ids': [[1, 8, 35, 826, 52, 10, 159, 559, 98, 147, 18, 5, 7, 27, 59, 414, 12043, 2], [1, 380, 258, 429, 15, 273, 826, 52, 5, 79, 207, 12043, 2], [1, 8, 35, 826, 52, 10, 7, 232, 456, 595, 1373, 267, 92, 5, 147, 18, 12043, 2]], #'token_type_ids': [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]], #'attention_mask': [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]]}
本文链接地址:https://www.jiuchutong.com/zhishi/292321.html 转载请保留说明!

上一篇:格林内尔湖,蒙大拿州冰川国家公园 (© Pung/Shutterstock)(格林湖人)

下一篇:拉韦尔泰佐附近一条河里的石头,瑞士塞斯卡山谷 (© Robert Seitz/Offset by Shutterstock)(拉尔韦橡)

  • 代销商品的手续费税率是多少
  • 公司成立之初做哪些
  • 税法收入确认的时间
  • 公司报销房租还能扣税吗
  • 五联普通发票盖章要求
  • 合并抵消分录的原理是什么
  • 申报查询里面找不到才申报的个税
  • 委外加工税点
  • 技改贴息资金的财务、会计及税收处理
  • 企业清算需要什么
  • 高速公路通行费发票可以抵扣增值税吗
  • 公司会计怎么做
  • 固定报销额度算工资吗
  • 应收账款资产减值损失转回和核销的区别
  • 复利现值是什么意思
  • 企业销售现金折扣
  • 营改增后非增值税应税项目包括哪些
  • 机动车发票抵扣联有什么用
  • 怎么查核定征收额度
  • 河道维护费所有权归属
  • 工程已完工又发生了成本怎么处理
  • 电子发票真伪查询
  • 小公司发工资怎么做账
  • 生产企业出租设备如何开票
  • 将自产产品用于职工福利的账务处理
  • 购货申请书
  • windows11怎么设置默认应用
  • 苗木发票抵扣政策2021
  • 第36届大众电影百花奖直播回放
  • php 字符串函数
  • PHP:class_uses()的用法_spl函数
  • php 数组定义
  • 水煮鱼的做法和步骤 家常
  • 生产成本分配表模板
  • 取得的进项税发票抵扣
  • 粒子效果大全
  • 转销坏账准备的会计分录有一个还是两个
  • 财务费用为负数是好事还是坏事
  • Joomla调用系统自带编辑器的实现方法
  • 什么叫相机标定
  • 全网最详细的李白解说来了
  • php怎么转go
  • 林场苗圃工作有哪些
  • 专用发票费率
  • 农民专业合作社是什么性质
  • 银行账户收费开什么发票
  • 在建工程应交税金怎么算
  • 银行承兑汇票是商业汇票吗
  • SQLServer 2008 :error 40出现连接错误的解决方法
  • mysql修改密码的命令
  • 累计折旧贷方余额怎么算
  • 交易性金融资产的账务处理
  • 验资费如何做账务处理
  • 实收资本印花税最新政策2023年
  • 出口报关成功
  • 营业税暂行实施细则
  • 公司注销其他应付款法人借款
  • 公司收入和开支比例
  • 滞纳金一般什么时候交
  • 工会筹备金该按什么计算
  • 小规模纳税人申请一般纳税人流程
  • win10系统怎么手机投屏到电脑
  • openbabel安装
  • freebsd中文手册
  • task host windows解决
  • windows中输入法的安装步骤
  • win7控制面板有哪些功能
  • win7提示计算机内存不足
  • win7 32位旗舰版电脑城下载
  • windows8安装程序
  • perl tr函数
  • 微信小程序模板框架
  • macos 升级python
  • [置顶]游戏名:chivalry2
  • shell脚本实现文件管理
  • 税务局和国税
  • 多张发票怎么粘贴在a4纸上面
  • 车辆购置印花税需入固定资产吗
  • 江苏房产税如何计算公式
  • 国家税务总局上海税务局(个人)
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设