码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Transformers 源码阅读之BertTokenizerFast分词模型


    数据集准备

    从bert-base-chinese下载预训练语言模型及其他词表,由于使用的是pytorch,因此下载pytorch_model.bin即可。

    如果要使用英文模型,就下载能区分大小写的或者是不能区分大小写的,对于uncased,初始化时必须要把lower设为true。

    特殊符号

    BERT在执行分词任务时会生成以下几种特殊符号:

    • [CLS]:第一个句子的首位,如果要对整个句子进行分类,通常会取其对应的输出向量作为句子的表示(认为它融合了整个句子的信息,所以它对应的单词不是start而是classification)
    • [SEP]:两个句子的分隔符
    • [UNK]:未知字符
    • [PAD]:不足长度的字符填充,也就是padding操作
    • [MASK]:字符遮掩

    直观理解

    在深入模型细节之前,我们先用一个简单的例子看一看BertTokenizerFast究竟是用来干什么的,需要什么样的输入,又会给出怎样的输出。

    tokenizer = BertTokenizerFast.from_pretrained("./bert-base-chinese/",
                                                  do_lower_case=True)
    text = "hello,世界"
    text2 = "你好,world"
    tokens = tokenizer.tokenize(text)
    tokens2 = tokenizer.tokenize(text2)
    encodes = tokenizer.encode_plus([tokens, tokens2],
                                    add_special_tokens=True,
                                    return_offsets_mapping=True,
                                    max_length=16,
                                    truncation=True,
                                    padding="max_length",
                                    is_split_into_words=True,
                                    return_tensors="np")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    在这里插入图片描述
    在这里插入图片描述

    • tokens很简单,就是对文本进行分词,可以看到对中英文混合的情况处理得非常好
    • input_ids也很好理解,就是根据词表建立起了分出的token到id的映射,101对应[CLS],只在开头出现一次;102对应[SEP],会出现两次;由于max_length是16,因此最后要补五个0对应的[PAD];其他就很简单了,比如8701对应着"hello",这意味着如果你打开vocab.txt这个文件,可以在第8702行找到它。
    • token_type_ids用于标识当前token属于哪一个句向量,前六个就是第一句,后五个就是第二句,其他就是0
    • attention_mask:[PAD]对应0,其他对应1,其实就是反映了句子的实际长度
    • offset_mapping:每一个token具体占了几个char,中文都是一个char,英文就看单词的长度,[PAD]全都是0
  • 相关阅读:
    JSP在Scriptlet中编写java代码的形式
    AHU 汇编 实验二
    计算机毕业设计SSM订餐系统【附源码数据库】
    Node.js 是如何处理请求的
    南美阿根廷市场最全分析开发攻略,收藏一篇就够了
    使用Java和NLP技术实现AI伪原创文章自动生成:一个详细的编程指南
    SpringMVC基础:拦截器
    【公众号开发】图像文字识别 · 模板消息推送 · 素材管理 · 带参数二维码的生成与事件的处理
    玩机搞机-------安卓修改apk apk的组成和编译 一
    thinkphp6开启Trace调试模式
  • 原文地址:https://blog.csdn.net/jining11/article/details/125557677
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号