基于脱敏数据,使用huggingface的Transformers预训练模型
背景:
一些竞赛给的是脱敏数据,中文竞赛一般将汉字表示为一个整数,汉字间用空格分割,在这样的数据集上想要预训练一个自己的模型,可以参考这个文章。
首先介绍本文参考的文章:
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预训练模型相关推荐
- 使用huggingface的Transformers预训练自己的bert模型+FineTuning
① 将"softmax+交叉熵"推广到多标签分类问题 多分类问题引申到多标签分类问题(softmax+交叉熵) 作者苏剑林论述了将多分类任务下常用的softmax+CE的方式,推广 ...
- Transformers预训练模型使用:语言建模 Language Modeling
语言建模是一个将模型拟合到一个语料库的任务,这个语料库可以是特定领域,也可以是通用领域.所有主流的.基于transformer的模型(跟这个包transformers不是一个东西)都使用了语言建模的变 ...
- Transformers预训练模型使用:文本摘要 Summarization
文本摘要是一个将一个文档或文章总结成一小段文字的任务. 一个文本摘要任务的数据集叫CNN / Daily Mail dataset,包含长新闻文章和其对应的摘要. 使用pipeline 同样,我们可以 ...
- 解决HuggingFace加载预训练模型时报错TypeError: expected str, bytes or os.PathLike object, not NoneType
完整报错: TypeError: expected str, bytes or os.PathLike object, not NoneType 解决方法 检查下载的组件: 步骤1:完整的下载组件,包 ...
- 基于tensorflow 1.x 的bert系列预训练模型工具
向AI转型的程序员都关注了这个号
- 女性和少数族裔,正成为无监督预训练模型偏见的“受害者”
图片出处:unsplash 本文作者:REN 随着机器学习技术的发展和普及,越来越多的科学家注意到这项技术背后隐藏着 "偏见" 和 "歧视". 它们与人类社会的 ...
- 多模态语义检索 | 基于 MetaSpore 快速部署 HuggingFace 预训练模型
首先,附上 Github 链接MetaSpore:https://github.com/meta-soul/MetaSpore,可搜索公众号元灵数智,在底部菜单了解我们 - 用户交流获取官方技术交流群 ...
- bert中文预训练模型_HFL中文预训练系列模型已接入Transformers平台
哈工大讯飞联合实验室(HFL)在前期陆续发布了多个中文预训练模型,目前已成为最受欢迎的中文预训练资源之一.为了进一步方便广大用户的使用,借助Transformers平台可以更加便捷地调用已发布的中文预 ...
- 刷新中文阅读理解水平,哈工大讯飞联合发布基于全词覆盖中文BERT预训练模型...
作者 | HFL 来源 | 哈工大讯飞联合实验室(ID:rgznai100) 为了进一步促进中文自然语言处理的研究发展,哈工大讯飞联合实验室发布基于全词覆盖(Whole Word Masking)的中 ...
最新文章
- PubChemPy | 化合物数据库PubChem与Python结合
- 适配器模式和外观模式
- js修改style中某个属性_JS 和 CSS 交互的 5 种方法
- margin-top失效的解决办法
- 单行及多行文本溢出以省略号显示的方法总结
- [转]解决eclipse-helios中Errors running builder Java...
- ANSI C和Glib C区别(二)
- kali-TheFatRat木马生成工具安装及简单使用
- 用Python做证券指数的三种策略分析
- 哈特公社,在家也能轻创业
- 网上订餐python_网上订餐管理系统摘要.doc
- 啥是原神?女友说想要全角色语音+表情包,顺手用python把高清图也整下来了
- 使用js的方式设置点击按钮发送短信倒计时并且防止刷新
- 产品运营:如何激活沉默用户
- SOLIDWORKS零件与装配体模板制作
- conv2d原理、计算过程、pytorch使用
- 单板嵌入式计算机定义,用于嵌入式控制系统的单板计算机
- 【湍流】基于kolmogorov结合次谐波补偿的方法生成大气湍流相位屏附matlab代码
- 初探使用iOS 7 Sprite Kit与Cocos2d开发游戏的对比(一家之言)
- 国外域名注册商选择_如何在2020年选择最佳域名注册商(比较)
热门文章
- Django Model 定义语法
- 一个用户只能登录一次
- 涂涂乐 通过shader实现目标区域正交图片提取,移动端可用
- 沈航-数理统计-17-18B-有答案
- Java项目开发:学生社团管理系统
- 《算法竞赛中的初等数论》(六)正文 0x60 原根(ACM / OI / MO)(二十万字符数论书)
- 未来教育计算机三级数据库演示大题,2019年计算机三级数据库考试强化试题及答案003...
- adguard没有核心 core no_树莓派安装AdGuard Home屏蔽广告
- 功能篇------android 实现“摇一摇”功能
- 蚂蚁智能内容合规产品,提供一站式营销合规管控解决方案