使用BERT预训练模型+微调进行文本分类

本文记录使用BERT预训练模型,修改最顶层softmax层,微调几个epoch,进行文本分类任务。BERT源码首先BERT源码来自谷歌官方tensorflow版:https://github.com/google-research/bert注意,这是tensorflow 1.x 版本的。BERT预训练模型预训练模型采用哈工大讯飞联合实验室推出的WWM(Whole Word Ma...
摘要由CSDN通过智能技术生成

本文记录使用BERT预训练模型,修改最顶层softmax层,微调几个epoch,进行文本分类任务。

BERT源码

首先BERT源码来自谷歌官方tensorflow版:https://github.com/google-research/bert

注意,这是tensorflow 1.x 版本的。

BERT预训练模型

预训练模型采用哈工大讯飞联合实验室推出的WWM(Whole Word Masking)全词覆盖预训练模型,主要考量是BERT对于中文模型来说,是按照字符进行切割,但是注意到BERT随机mask掉15%的词,这里是完全随机的,对于中文来说,很有可能一个词的某些字被mask掉了,比如说让我预测这样一句话:

原话: ”我今天早上去打羽毛球了,然后又去蒸了桑拿,感觉身心愉悦“

MASK:”我[MASK]天早上去打[MASK]毛球了,然后[MASK]去蒸了[MASK]拿,感觉身心[MASK]悦“

虽然说从统计学意义上来讲这样做依然可以学得其特征,但这样实际上破坏了中文特有的词结构,那么全词覆盖主要就是针对这个问题,提出一种机制保证在MASK的时候要么整个词都不MASK,要么MASK掉整个词。

WWM MASK:”我今天早上去打[MASK][MASK][MASK]了,然后又去蒸了[MASK][MASK],感觉身心愉悦“

例子可能举得不是很恰当,但大概是这个意思,可以参考这篇文章:

https://www.jiqizhixin.com/articles/2019-06-21-01

修改源码

首先看到下下来的项目结构:

 

可以看到run_classifier.py文件,这个是我们需要用的。另外,chinese开头的文件是我们的模型地址,data文件是我们的数据地址,这个每个人可以自己设置。

在run_classifier.py文件中,有一个基类DataProcessor类,这个是我们需要继承并重写的:

class DataProcessor(object):
  """Base class for data converters for sequence classification data sets."""

  def get_train_examples(self, data_dir):
    """Gets a collection of `InputExample`s for the train set."""
    raise Not
  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值