Bert预训练模型-中文文本分类

28 篇文章 2 订阅

Bert-用于文本分类

Github包含代码
之前在做文本分类任务,源于CCFBDCI汽车行业用户观点主题及情感识别任务,数据集(只有9000多的短文本)在Github上(README)可以下载。在这个数据集上用过TF-IDF特征、RNN还有Bert词向量+RNN(在自己设置的验证集上提高了3个点),可惜的是Bert词向量加RNN效果在官网提交的结果并没有提升。

但是在另一个数据集上,清华的新浪新闻数据集(十类各取了5000个文档级别的语料)上,效果直接从91.95%提升到93.59%(双向+Attention)以及97%(Bert词向量)。所以在汽车行业用户观点主题及情感识别任务上可能是由于数据集的问题,使得Bert词向量没有很好的提升(其实在自己设置的验证集上提高了3个点也不错了,可是官网提交的结果却不好),关于这点,也欢迎各位评论探讨原因。

下面就介绍一下该任务。

  • 用户对汽车的相关内容文本数据的评论作为训练集,对文本内容中的讨论主题进行提取
  • 分析用户对所讨论主题的偏好

数据集
在这里插入图片描述
在这里插入图片描述

  • 训练集数据中主题被分为10类,包括:动力、价格、内饰、配置、安全性、外观、操控、油耗、空间、舒适性。
  • 情感分为3类,分别用数字0、1、-1表示中立、正向、负向。
  • 情感词不作为评分依据。
  • 训练9948条,测试集2364条。

TDIDF这个特征在这里就不多说了,大家感兴趣可以自行查找。

RNN模型
在这里插入图片描述
最后训练得到的效果见下图:
在这里插入图片描述
可以看到到迭代到12轮左右的时候测试集的效果最好能够达到67%,下面引入Bert词向量,我们直接用Bert的词向量作为模型的输入,不微调。

Bert模型
1、直接用Bert的句向量+分类器(不微调),效果不是很好,见下图。但是收敛比较快,说明词向量确实是学习到了先验知识。
在这里插入图片描述

2、换成词向量,网络结构和RNN模型一致。这里的Bert模型引用了腾讯AI-Han Xiao博士的github,附上链接。可以看到模型在第六轮就收敛了,而且验证集的精度也提升了。可是把结果提交到官网的时候,分数和RNN的差不多,很奇怪。
在这里插入图片描述

最后在Github链接下有清华新浪新闻数据集的实现,效果可以提升至97%,但是训练速度很慢,八个小时才跑了300轮,batch_size设置的64,也就是说只跑了2w(乱序)的数据集(有5w),连一个epoch都没有跑到,但是效果已经很好了,还有一个缺点就是迭代300轮时腾讯AI-Han Xiao博士服务器就断了。下一步就是考虑不用服务器客户端的方式,直接用google的特征抽取,这样就不用担心服务器会断了,另外如何进行微调也是一个需要研究的地方。

博客如果有借鉴之处没有指出,或者有错误,欢迎大家批评指正,谢谢!

评论处的维度问题,按照以下代码解决
在这里插入图片描述
在这里插入图片描述
更多有趣MRC文章见:利用逆向思维的机器阅读理解。
相关文献
Bi-directional Cognitive Thinking Network for Machine Reading Comprehension 论文阅读
证据推理网络。
Hybrid Curriculum Learning for Emotion Recognition in Conversation

  • 11
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 41
    评论
使用BERT预训练模型进行中文文本分类是一种常见的应用。下面我将以基于PyTorch的方式进行介绍。 步骤一:准备数据 首先,我们需要准备用于训练和测试的文本数据集。可以选择一个适合任务的中文文本分类数据集,例如THUCNews等。将数据集划分为训练集和测试集。 步骤二:安装和导入依赖 在使用PyTorch进行BERT模型的文本分类之前,需要安装相关的软件包。首先安装transformers库,该库提供了许多预训练的BERT模型。另外,还需要安装torch和tqdm库用于训练和进度条显示。 步骤三:加载预训练模型 使用transformers库加载预训练的中文BERT模型,例如'bert-base-chinese'。可以通过以下代码进行加载: ``` from transformers import BertTokenizer, BertForSequenceClassification # 加载预训练模型 tokenizer = BertTokenizer.from_pretrained('bert-base-chinese') model = BertForSequenceClassification.from_pretrained('bert-base-chinese', num_labels=num_labels) ``` 这里需要根据具体的文本分类任务设置num_labels参数,表示分类的类别数。 步骤四:预处理数据 对训练集和测试集的文本进行预处理。这包括将文本转换为BERT模型所需的输入格式,即将文本转化为token ids,并将文本序列padding到相同的长度。 步骤五:定义训练和评估循环 定义训练和评估模型的循环。在每个训练batch中,将输入传递给BERT模型,获取模型的预测结果。然后计算损失并进行反向传播优化模型参数。 步骤六:训练模型 使用准备好的训练集对模型进行训练。根据任务需要选择合适的优化器和学习率,设置训练的epochs和batch size等参数。在训练过程中,可以通过打印损失和精度等指标来监控训练进展。 步骤七:评估模型 使用准备好的测试集对训练好的模型进行评估。计算模型在测试集上的准确率、精确率、召回率等指标,以评估模型的性能。 步骤八:保存和加载模型 可以选择保存训练好的模型以备后续使用。可以使用torch.save方法保存模型,并使用torch.load方法加载模型。 使用BERT预训练模型进行中文文本分类可以较好地捕捉词义和语义的特征,提升分类任务的性能。通过以上步骤,可以实现一个简单的中文文本分类模型。当然,根据实际需求,还可以进行模型调优、模型融合等进一步的优化操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彭伟_02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值