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

huggingface实战bert-base-chinese模型(训练+预测)

文章目录

  • 前言
  • 一、bert模型词汇映射说明
  • 二、bert模型输入解读
    • 1、input_ids说明
    • 2、attention_mask说明
    • 3、token_type_ids说明
    • 4、模型输入与vocab映射内容
  • 二、huggingface模型数据加载
    • 1、数据格式查看
    • 2、数据dataset处理
    • 3、tokenizer处理dataset数据
  • 三、huggingface训练bert分类模型
    • 1、huggingface训练bert分类模型主函数解读
    • 2、huggingface的bert分类模型加载构建
  • 四、huggingface推理bert分类模型
  • 五、填空bert模型构建
    • 1、数据构建
    • 2、模型构建
    • 3、loss计算
    • 4、模型预测
  • 六、完整代码链接
  • 总结


前言

Hugging Face是一家人工智能公司,致力于提供自然语言处理(NLP)模型和工具的开源库。他们的开源库包括了BERT等各种预训练模型的实现,以及用于训练、微调和部署这些模型的工具。在本文中,我们将探讨如何使用Hugging Face的库来构建一个BERT分类模型,该模型能够对文本进行分类,例如情感分析、文本分类等任务。我们将介绍如何使用Hugging Face提供的transformers库来构建、训练和评估BERT分类模型。通过本文的学习,您将能够掌握使用Hugging Face构建BERT分类模型的关键步骤和技巧,为NLP任务提供强大的解决方案。同时,我也将介绍掩码mask预测模型方法。最终,我也将数据、模型文件、代码等内容公开。


一、bert模型词汇映射说明

在BERT中,和是特殊的词元(token),用于在输入序列中标记特定的位置和边界。

:它是表示序列开头的特殊词元,全称为"classification"。在BERT中,输入序列的第一个位置被标记为,用于表示整个序列的概括信息。在训练过程中,BERT模型学习使用位置的表示来进行各种分类任务,例如文本分类、情感分析等。在编码后的表示中,位置的向量通常用作整个序列的汇总表示。

:它是表示序列分割的特殊词元,全称为"separator"。在BERT中,输入的文本序列可以由多个片段(segments)组成,例如两个句子或一个问题和一个回答。为了将这些片段分隔开,词元用于标记不同片段的边界。它出现在片段之间和序列的末尾,用于告知BERT模型输入序列的结构。

:它表示填充(padding)的词元,在输入序列中用于填充长度不足的片段或序列。填充是为了使所有输入序列具有相同的长度,以便进行批量处理。

:它表示掩蔽(mask)的词元,在预训练阶段用于生成掩蔽语言模型(Masked Language Model,MLM)任务。在训练过程中,输入序列中的一部分词元会被随机选择并替换为词元,模型需要预测被掩蔽的词元。

5 :它表示未知(unknown)的词元,用于表示在预训练期间未见过的词汇。当输入序列中出现未登录词(out-of-vocabulary)时,这些词元将被替换为词元。
博客链接:这里

二、bert模型输入解读

在这里,我们假设有个句子“这位姐姐对这本书几近痴迷。我不好这一口,没有耐心看它。纯粹表扬一下这次送书的效率和质量。起码书的品相不错,好过我前两次购书。希望以后能保持。”,包含标点符号。我们探讨该句子在模型中的输入或映射ids与vocab.txt对应关系。同时,也再次说明input_ids与attention_mask的含义。

1、input_ids说明

这里可以从input_ids看到tokenizer的输出是将你的文本根据模型的词汇表转化为对应的id。同时观察到所有句子都以101开头,102结尾,这两个id分别对应 [CLS], [SEP] token。

2、attention_mask说明

attention_mask有id的地方取值为1,没有id地方取值为0,表示模型需要处理token,在有掩码训练可根据这个决定哪些token不训练,如训练过程中的掩码率是15%。

3、token_type_ids说明

token_type_ids这里主要表示是否是两个句子拼接在一起,如果不是拼接的句子,那么这个值则全为0,若2个句子需要拼接,第二个句子为的token_type_ids为全1 ,如[[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1]],0是第一个句子位置,1是第二个句子位置。

4、模型输入与vocab映射内容

该模型是个文本分类模型,标签只有2个类0或1,模型输入input_ids、attention_mask、token_type_ids、token_type_ids,我已在上面做了解释。这几个变量都为[batch,max_length],表示batch与文本长度,不足需pad填充,一般为0,其具体结果如下:

sents[0]= 这位姐姐对这本书几近痴迷。我不好这一口,没有耐心看它。纯粹表扬一下这次送书的效率和质量。起码书的品相不错,好过我前两次购书。希望以后能保持。
input_ids[0]= [ 101 6821  855 1995 1995 2190 6821 3315  741 1126 6818 4590 6837  5112769  679 1962 6821  671 1366 8024 3766 3300 5447 2552 4692 2124  5115283 5122 6134 2813  671  678 6821 3613 6843  741 4638 3126 4372 14696574 7030  511 6629 4772  741 4638 1501 4685  679 7231 8024 1962 68142769 1184  697 3613 6579  741  511 2361 3307  809 1400 5543  924 2898511  102    0    0    0    0    0    0    0    0    0    0    0    00    0    0    0    0    0    0    0    0    0    0    0    0    00    0]
attention_mask[0]= [1 1 1 1 1 1 1 1 1 
http://www.lryc.cn/news/276302.html

相关文章:

  • CCS安装和导入项目及编译教程
  • 在React里面使用mobx状态管理详细步骤
  • 1.6PTA集练7-5~7-24、7-1、7-2,堆的操作,部落冲突(二分查找)
  • uniapp向上拉加载,下拉刷新
  • 目标检测脚本之mmpose json转yolo txt格式
  • 大数据技术在民生资金专项审计中的应用
  • 视觉SLAM十四讲|【四】误差Jacobian推导
  • 「实战应用」如何用DHTMLX Gantt构建类似JIRA式的项目路线图(一)
  • 【习题】应用程序框架
  • java基于ssm的线上选课系统的设计与实现论文
  • 汽车雷达:实时SAR成像的实现
  • 《C++语言程序设计(第5版)》(清华大学出版社,郑莉 董渊编著)习题——第2章 C++语言简单程序设计
  • 2023年生成式AI全球使用报告
  • 安全防御之漏洞扫描技术
  • SPON世邦 IP网络对讲广播系统 多处文件上传漏洞复现
  • Python综合数据分析_RFM用户分层模型
  • 【C++进阶04】STL中map、set、multimap、multiset的介绍及使用
  • 在 Linux 中开启 Flask 项目持续运行
  • 考研个人经验总结【心理向】
  • 如何在CentOS安装SQL Server数据库并通过内网穿透工具实现公网访问
  • jupyter内核错误
  • 设计模式的艺术P1基础—2.3 类之间的关系
  • 工业无人机行业研究:预计2025年将达到108.2亿美元
  • PCA主成分分析算法
  • Hyperledger Fabric 权限策略和访问控制
  • Day28 回溯算法part04 93. 复原IP地址 78. 子集 90. 子集 II
  • Linux系统常用的安全优化
  • Vue-4、单向数据绑定与双向数据绑定
  • 【Flutter 开发实战】Dart 基础篇:常用运算符
  • C++:ifstream通过getline读取文件会忽略最后一行空行