因为某种原因阻止文本引擎初始化_【NLP】Bert文本分类

各位小伙伴,google在2018年提出的NLP最强兵器Bert,目前也有提供可直接使用的预训练Model,下方链结就是我使用的Bert模型,详细的内容可以参考下面的链结

pytorch-pretrained-bert​pypi.org
4583afe2a9fac708986265532d7eb9b7.png

下面我开始测试这个bert模型有多好用吧!!

1. 新闻的分类

我准备的数据是新闻的标题、新闻的内容、以及新闻标题与内容的相关性(最不相关为0~最相关3)

b70a388dd1eb3e74f07487869a9d775d.png

首先先将新闻的数据整理,因为文本太长超过Bert的512个字符的长度,需要截取部份

df_train 

2. 数据整理成Bert可读取的torch资料

将资料整理成三部份

  1. tokens_tensor:每一个单字的字符代号
  2. segments_tensor:两文本的分类(0代表第一个文本,1代表第二个文本)
  3. label_tensor:训练的文本产出(最不相关为0~最相关3)
from 

3. Trainset整理成mini-batch

将资料整理成mini-batch,并且整理每个batch的数据

  1. 所有的序列都变成同一个长度,不足的部份将补0
  2. 增加masks_tensors,让有文本的部份的数据为1,让补0的部份设定为0,避免模型训练时将过多文本补0的值考虑进去计算
  3. 因为我的GTX 1080 Ti 测试后BATCH_SIZE最多只能放7个训练样本(因为我设定的文本约500个字符),需要自行逐步测试才知道自己的显卡能塞多少数据进去
"""

4. 文本分类的种类设定

因为我的文本有4种种类(0~3),所以设定为4种分类

# 載入一個可以做中文多分類任務的模型,n_class = 4

5. 取得初始化模型預測結果以及分類準確度

因为我有两张显卡(骄傲抬头),所以我把这个模型训练放在cuda:1中,若小伙伴只有一张显卡,要调整成cuda:0才能进行训练

"""

可以看一下最初使用Bert预测的结果,.......恩@@, 还没训练前的效很差,准确率只有28.88%

1c9415b867b7e43729af82d4205cec7c.png

因为我们还没有针对这个文本进行二次训练,让Bert了解我想要的文本分类需求,下面就进行模型的再次训练吧

6. 设定模型参数

设定Adam的模型分类参数

def 

7. 模型开始训练

设定模型训练20次

import 

下面开始训练的20次的情况,准确率有明显的提升83.36% (撒花!!)

0da9ced6029b212e6416ca319bf1ef1a.png

8. 画图来看一下准确率

# 绘制训练的准确率图形

8f4e2b8801e5a191e57172fd396d4df4.png

可以看出Bert做文本分类效果有显著的提升, Bert其实还可以做情感分析,只需要将分类的类别调整成2种即可,有兴趣的小伙伴可以自己测试看!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值