摘要

针对赛题数据,本团队在数据处理部分采用数据去噪的方式保证了数据的整洁性;在模型构建部分使用了开源预训练模型,并通过预训练模型多层表示的动态权重融合方式对预训练模型进行修改,而后下接BILSTM和GRU两种异构模型来实现情绪识别;对于模型融合部分,用多异构单模的文字结果投票的方式融合,最终线上最高成绩为0.74537808,该成绩在线上的最终排名为第三名,与第一名的差距在十万分之4。

关键词

情感识别,多异构模型融合,预训练模型,动态融合

1 赛题分析

赛题要求从提供的给定微博ID和微博内容,设计算法对微博内容进行情绪识别,判断微博内容是积极的、消极的还是中性的,官方提供的数据中包含10万标注数据与90万无监督数据,其中数据字段如图1所示。

图1:数据字段

针对赛题数据集,本团队进行了较为详细的统计和分析。数据集中的文本长度分布如图2所示,其中文本最短长度为1,最大长度为241,平均长度为87。数据集中出现了部分噪音,包括一些HTML文字和特殊字符。

图2:验证集与测试集的文本长度分布

2 数据处理

2.1 无监督数据

因为经过去噪的无监督数据集99.9%的文本长度都在256以内,所以我们通过ROBERTA[1]预训练的方式,在ROBERTA-base模型的基础上,利用16G显存GPU对 从90W数据得到的最大长度为256的语料进行再次预训练,将其作为新的预训练模型,并用于后期构建异构单模。

2.2有监督数据

因为训练集和测试集的文本经过去噪处理之后,得到的数据都在200以内,基于微博内容最大长度为140的原则,我们将Max Len设置成150,覆盖了绝大多数微博的内容,且短文本也加快了训练与推断的速度。

3模型方法

笔者尝试使用得到的预训练模型与Roberta预训练模型,分别下接BiGRU与BILSTM三种结构来构建文本匹配模型。最后,我们采用异构单模的结果投票进行多模融合。

3.1 BERT-BiGRU与BERT-BiLSTM

BERT预训练模型学习到的token向量输入这两种模型结构进行进一步学习,让模型更好的理解文本的上下关系,最终通过average pooling层并softmax输出分类结构。模型结构如图3所示。

图3:BERT-BiGRU/BiLSTM-Average Pooling

3.2 BERT多层表示的动态权重融合

Ganesh Jawahar等人[2]通过实验验证了BERT[3]每一层对文本的理解都有所不同。为此,我们对BERT进行了改写,将BERT的十二层transformer生成的表示赋予一个权重,权重的初始化如公式(1)所示,而后通过训练来确定权重值,并将每一层生成的表示加权平均,再通过一层全连接层降维至512维如公式(2)所示,最后结合之前的Bi-GRU和Bi-LSTM模型来获得多种异构单模。BERT多层表示的动态权重融合结构如图4所示。其中

为BERT每一层输出的表示,
为权重BERT每一层表示的权重值。

最后,笔者通过实验发现,BERT的动态融合作为模型embedding的成绩会优于BERT最后一层向量作为模型的embedding。因此,本次比赛笔者使用的异构单模均是使用BERT的动态融合向量作为模型的embedding。

3.3HireBert模型结构

我们团队后期还采用了上海交大提出的HireBert模型[4]。我们在Bert的12层的transformer_encoder的输出旁边放置了2层双向GRU,每一层的输出进过双向GRU后输入至unit为1的全连接层,用来学习每一层向量的权重。对每一层的权重与输出的向量加权相加,得到Hire的隐藏信息。融合层通过两个不同的功能步骤将HIRE提取的隐藏信息与Transformer最终层的输出进行整合,形成一种精细的语境化语言表示。其中,整合方式如公式(3)所示,模型结构如图5所示。

其中o是 Hadamard积(对应位置相乘),[;]是最后一维度的拼接。R为bert最后一层结构,A为提取出来的每一层的输出乘以训练的权重相加成一个[batchsize,seq_len,max_len]。其中每一层的权重由两个参数共享的双向GRU决定。得到的语境化表示的向量再接2层双向GRU筛选重要信息,接unit=3的全连接层进行3分类。

图5 Hire-BERT

3.4多分类F1阈值搜索[5]

我们通过训练集数据进行统计发现,标签-1:0:+1的比例为3:12:5,存在样本不均衡情况,我们通过多分类F1搜索,将得到的模型对验证集进行预测,并将预测值与真实值进行阈值搜索,找出一个权重,用于测试集的预测。最终的结果对比如下表:

3.5 模型融合

通过前几节的介绍,我们得到了多种类别的异构模型,并通过投票的方式进行融合。

4总结与展望

本次比赛笔者将预训练模型,Bi-GRU和BI-LSTM多模异构融合,BERT多层表示动态融合与Hire-BERT等方法,最终在线上排名第3名。

针对当前方案,笔者未来希望在如下几个方面进行改进:

1) 笔者对ROBERTA预训练并不算充分,在未来条件允许的情况下,笔者将继续预训练长度为256的语料,让预训练模型学习得更加充分。

2) 对BERT模型进行剪枝和蒸馏,以降低模型的时间与空间复杂度。

求个赞

关注我的微信公众号【阿力阿哩哩】~不定期更新相关专业知识~

喜欢就点个赞吧~

致谢

感谢CCF提供的这次比赛机会,让我们在参赛的过程中不断进步成长,收获新的知识。感谢团队成员们的不懈努力,使得比赛有了一个较为圆满的结果。感谢DataFountain平台的工作人员努力为比赛营造了公平公正的竞赛环境。

参考文献

[1] Liu Y , Ott M , Goyal N , et al. RoBERTa: A Robustly Optimized BERT Pretraining Approach[J]. 2019.

[2] Ganesh Jawahar, Benoît Sagot, Djamé Seddah. What does BERT learn about the structure of language?. ACL 2019 - 57th Annual Meeting of the Association for Computational Linguistics, Jul 2019, Florence, Italy. ffhal-02131630

[3] Jacob Devlin, Ming-Wei Chang, Kenton Lee, and Kristina Toutanova. 2018. Bert: Pre-training of deep bidirectional transformers for language understanding. arXiv preprint arXiv:1810.04805.

[4] Yang J , Zhao H . Deepening Hidden Representations from Pre-trained Language Models for Natural Language Understanding[J]. 2019.

[5] 显著提分trick之指标优化. https://zhuanlan.zhihu.com/p/106766826

bert模型可以做文本主题识别吗_网民情绪识别TOP3分享----科技战疫·大数据公益挑战赛...相关推荐

  1. bert模型可以做文本主题识别吗_BERT如何融合主题模型-ACL2020

    首发公众号:[NLP从入门到放弃] 今天分享一个论文ACL2020-tBERT,论文主要融合主题模型和BERT去做语义相似度判定,在特定领域使用这个模型,效果更明显. 掌握以下几点: [CLS]向量拼 ...

  2. bert模型可以做文本主题识别吗_GitHub - jkszw2014/TextClassify_with_BERT: 使用BERT模型做文本分类;面向工业用途...

    TextClassify_with_BERT 使用BERT模型做文本分类:面向工业用途 自己研究了当前开源的使用BERT做文本分类的许多存储库,各有各的缺点.通病就是面向学术,不考虑实际应用. 使用t ...

  3. bert模型可以做文本主题识别吗_文本匹配方法系列––BERT匹配模型

    1.概述 在介绍深层次交互匹配方法之前,本文接着多语义匹配方法[1]介绍基于BERT模型实现文本匹配的方法.将其单独介绍主要因为BERT实现文本匹配操作方便且效果优秀,比较适用于工业应用场景.关于be ...

  4. bert模型可以做文本主题识别吗_NLP之文本分类:「Tf-Idf、Word2Vec和BERT」三种模型比较...

    字幕组双语原文:NLP之文本分类:「Tf-Idf.Word2Vec和BERT」三种模型比较 英语原文:Text Classification with NLP: Tf-Idf vs Word2Vec ...

  5. Bert模型做多标签文本分类

    Bert模型做多标签文本分类 参考链接 BERT模型的详细介绍 图解BERT模型:从零开始构建BERT (强推)李宏毅2021春机器学习课程 我们现在来说,怎么把Bert应用到多标签文本分类的问题上. ...

  6. 【项目】新冠肺炎疫情期间网民情绪识别——Python文本分类

    目录 任务描述 数据描述 读取数据 数据预处理 可视化 word2vec 模型框架及拟合 结果展示 改进与思考 说明 任务描述 2019新型冠状病毒(COVID-19)感染的肺炎疫情发生对人们生活生产 ...

  7. 疫情期间网民情绪识别比赛分享+top1~3解决方案

    0.前言 3.4月份的时候参加了datafounction的情绪识别比赛,最终获得了B榜第46名的成绩.虽然不太理想,但还是想记录一下自己的参赛历程,学习一下前排大佬的解决方案,在这里分享一下,希望对 ...

  8. 机器学习项目(四)疫情期间网民情绪识别

    机器学习项目(四)疫情期间网民情绪识别 (一):https://blog.csdn.net/qq_33357094/article/details/105148198?utm_medium=distr ...

  9. 【NLP】BERT 模型与中文文本分类实践

    简介 2018年10月11日,Google发布的论文<Pre-training of Deep Bidirectional Transformers for Language Understan ...

最新文章

  1. shell脚本自动执行,top命令无输出
  2. Asp.Net Core AsyncLocal 异步上下文
  3. awk脚本打印终端各种颜色的字体
  4. C++对象模型2——编译器生成构造函数的几种情况
  5. tomcat cpu占用过高,系统负载高问题跟踪
  6. 使用Docker Compose部署基于Sentinel的高可用Redis集群
  7. 大数据WEB阶段(八)Tomcat服务器安装与详解、HTTP协议详解
  8. LeetCode刷题记录(2)
  9. (数据库系统概论|王珊)第九章关系查询处理和关系优化-第一节:查询处理
  10. 吴恩达深度学习 —— 2.12 向量化的更多例子
  11. 查找目录下固定文件目录以及路径(自然排序)
  12. WCF项目中出现常见错误的解决方法:基础连接已经关闭: 连接被意外关闭
  13. Java生成唯一GUID UUID
  14. 面向对象第三单元(地铁)总结
  15. web和mysql连接并增删改查_Web界面实现数据库增删改查过程
  16. 数据库常用日期统计查询
  17. 算法训练Day25 | LeetCode216. 组合总和III(和77.组合很像!);LeetCode17. 电话号码的字母组合(不同集合中组合)
  18. 2022北京养老展(中国国际老年产业博览会)
  19. 《oracle数据库》基本查询语句
  20. motoxt 1085 android8,Moto(Moto)X XT1085/全网通手机系统介绍评测-ZOL中关村在线

热门文章

  1. STM32F407 独立看门狗 个人笔记
  2. Bootstrap 弹出框(Popover)插件
  3. 由查找算法工程的类图分析组合模式
  4. python多进程之间的通信:消息队列Queue
  5. Android中CursorLoader的使用、原理及注意事项
  6. 二进制,八进制,十进制,十二进制之间的转换!!!!!!!!!
  7. 数据库设计优化经验谈(转载)
  8. 自动化运维工具——ansible详解(一)
  9. jQuery slideToggler() 方法 -《狗嗨默示录》-
  10. 8 -- 深入使用Spring -- 5... Spring 3.1 新增的缓存机制