背景:
一些竞赛给的是脱敏数据,中文竞赛一般将汉字表示为一个整数,汉字间用空格分割,在这样的数据集上想要预训练一个自己的模型,可以参考这个文章。
首先介绍本文参考的文章:
1、别人做的该任务的总结
2、官方tokenizer

训练tokenizer

注:这里我使用的是wordlevel的,和参考文档中wordpiece的不同,因为我认为脱敏得到的数字前缀没有意义。

import pandas as pd
from tokenizers import decoders, models, normalizers, pre_tokenizers, processors, trainers, Tokenizer
from transformers import BertTokenizerFasttokenizer = Tokenizer(models.WordLevel())tokenizer.normalizer = normalizers.BertNormalizer(lowercase=True)
tokenizer.pre_tokenizer = pre_tokenizers.BertPreTokenizer()special_tokens = ["[UNK]", "[PAD]", "[CLS]", "[SEP]", "[MASK]"]
trainer = trainers.WordLevelTrainer(vocab_size=50000, special_tokens=special_tokens)dataset = open("/data/train_token.json")
batch_size = 10
def batch_iterator():result = []for l in dataset:result.append(l)if len(result)==batch_size:yield resultresult = []tokenizer.train_from_iterator(batch_iterator(), trainer=trainer)new_tokenizer = BertTokenizerFast(tokenizer_object=tokenizer)new_tokenizer.save_vocabulary("./tokenizer/")

最终在tokenizer文件夹下的内容如下:

训练模型

import sys
import os
import csv
from transformers import  BertTokenizer, WEIGHTS_NAME,TrainingArguments,BertForMaskedLM,BertConfig
import tokenizers
import torchos.environ["CUDA_VISIBLE_DEVICES"] = '4,5,6,7'
# from datasets import load_dataset,Dataset
from transformers import (CONFIG_MAPPING,MODEL_FOR_MASKED_LM_MAPPING,AutoConfig,AutoModelForMaskedLM,AutoTokenizer,DataCollatorForLanguageModeling,HfArgumentParser,Trainer,TrainingArguments,set_seed,LineByLineTextDataset
)## 加载tokenizer和模型
model_path='/data/share_v5/jupyter/outputs-23/'  ##如果是从头开始预训练,可以去huggingface下载一个模型。我此处是从上一次训练开始
token_path='/data/share_v5/jupyter/tokenizer/vocab.txt'
tokenizer =  BertTokenizer.from_pretrained(token_path, do_lower_case=True)
config=BertConfig.from_pretrained(model_path)
model=BertForMaskedLM.from_pretrained(model_path, config=config)
model.resize_token_embeddings(len(tokenizer))# 训练语料按行放置,并且空格间隔
train_dataset=LineByLineTextDataset(tokenizer=tokenizer,file_path='/data/share_v5/jupyter/5_7.txt',block_size=128)
data_collator = DataCollatorForLanguageModeling(tokenizer=tokenizer, mlm=True, mlm_probability=0.15)
# 训练参数
pretrain_batch_size=64
num_train_epochs=40
training_args = TrainingArguments(output_dir='/data/share_v5/jupyter/outputs-24', overwrite_output_dir=True, num_train_epochs=num_train_epochs, learning_rate=6e-5,per_device_train_batch_size=pretrain_batch_size,save_total_limit=10,logging_dir='/data/share_v5/jupyter/logs-24',          logging_steps=10000,no_cuda=False)# save_steps=10000
# 通过Trainer接口训练模型
trainer = Trainer(model=model, args=training_args, data_collator=data_collator, train_dataset=train_dataset)# 开始训练
trainer.train()
trainer.save_model('/data/share_v5/jupyter/outputs-24')

说明:
1、token_path指定的就是第一步训练得到的结果中的词典。
2、可以分批训练,使用阶段结果进行下游任务。

基于脱敏数据,使用huggingface的Transformers预训练模型相关推荐

  1. 使用huggingface的Transformers预训练自己的bert模型+FineTuning

    ① 将"softmax+交叉熵"推广到多标签分类问题 多分类问题引申到多标签分类问题(softmax+交叉熵) 作者苏剑林论述了将多分类任务下常用的softmax+CE的方式,推广 ...

  2. Transformers预训练模型使用:语言建模 Language Modeling

    语言建模是一个将模型拟合到一个语料库的任务,这个语料库可以是特定领域,也可以是通用领域.所有主流的.基于transformer的模型(跟这个包transformers不是一个东西)都使用了语言建模的变 ...

  3. Transformers预训练模型使用:文本摘要 Summarization

    文本摘要是一个将一个文档或文章总结成一小段文字的任务. 一个文本摘要任务的数据集叫CNN / Daily Mail dataset,包含长新闻文章和其对应的摘要. 使用pipeline 同样,我们可以 ...

  4. 解决HuggingFace加载预训练模型时报错TypeError: expected str, bytes or os.PathLike object, not NoneType

    完整报错: TypeError: expected str, bytes or os.PathLike object, not NoneType 解决方法 检查下载的组件: 步骤1:完整的下载组件,包 ...

  5. 基于tensorflow 1.x 的bert系列预训练模型工具

    向AI转型的程序员都关注了这个号

  6. 女性和少数族裔,正成为无监督预训练模型偏见的“受害者”

    图片出处:unsplash 本文作者:REN 随着机器学习技术的发展和普及,越来越多的科学家注意到这项技术背后隐藏着 "偏见" 和 "歧视". 它们与人类社会的 ...

  7. 多模态语义检索 | 基于 MetaSpore 快速部署 HuggingFace 预训练模型

    首先,附上 Github 链接MetaSpore:https://github.com/meta-soul/MetaSpore,可搜索公众号元灵数智,在底部菜单了解我们 - 用户交流获取官方技术交流群 ...

  8. bert中文预训练模型_HFL中文预训练系列模型已接入Transformers平台

    哈工大讯飞联合实验室(HFL)在前期陆续发布了多个中文预训练模型,目前已成为最受欢迎的中文预训练资源之一.为了进一步方便广大用户的使用,借助Transformers平台可以更加便捷地调用已发布的中文预 ...

  9. 刷新中文阅读理解水平,哈工大讯飞联合发布基于全词覆盖中文BERT预训练模型...

    作者 | HFL 来源 | 哈工大讯飞联合实验室(ID:rgznai100) 为了进一步促进中文自然语言处理的研究发展,哈工大讯飞联合实验室发布基于全词覆盖(Whole Word Masking)的中 ...

最新文章

  1. PubChemPy | 化合物数据库PubChem与Python结合
  2. 适配器模式和外观模式
  3. js修改style中某个属性_JS 和 CSS 交互的 5 种方法
  4. margin-top失效的解决办法
  5. 单行及多行文本溢出以省略号显示的方法总结
  6. [转]解决eclipse-helios中Errors running builder Java...
  7. ANSI C和Glib C区别(二)
  8. kali-TheFatRat木马生成工具安装及简单使用
  9. 用Python做证券指数的三种策略分析
  10. 哈特公社,在家也能轻创业
  11. 网上订餐python_网上订餐管理系统摘要.doc
  12. 啥是原神?女友说想要全角色语音+表情包,顺手用python把高清图也整下来了
  13. 使用js的方式设置点击按钮发送短信倒计时并且防止刷新
  14. 产品运营:如何激活沉默用户
  15. SOLIDWORKS零件与装配体模板制作
  16. conv2d原理、计算过程、pytorch使用
  17. 单板嵌入式计算机定义,用于嵌入式控制系统的单板计算机
  18. 【湍流】基于kolmogorov结合次谐波补偿的方法生成大气湍流相位屏附matlab代码
  19. 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比(一家之言)
  20. 国外域名注册商选择_如何在2020年选择最佳域名注册商(比较)

热门文章

  1. Django Model 定义语法
  2. 一个用户只能登录一次
  3. 涂涂乐 通过shader实现目标区域正交图片提取,移动端可用
  4. 沈航-数理统计-17-18B-有答案
  5. Java项目开发:学生社团管理系统
  6. 《算法竞赛中的初等数论》(六)正文 0x60 原根(ACM / OI / MO)(二十万字符数论书)
  7. 未来教育计算机三级数据库演示大题,2019年计算机三级数据库考试强化试题及答案003...
  8. adguard没有核心 core no_树莓派安装AdGuard Home屏蔽广告
  9. 功能篇------android 实现“摇一摇”功能
  10. 蚂蚁智能内容合规产品,提供一站式营销合规管控解决方案