开发者社区> 游客6353rto7knxbm> 正文

天池NLP赛道top指南

简介: 天池NLP赛道top指南
+关注继续查看

2020年初,新冠疫情席卷全球。除了“待在家,不乱跑”,我想还能从哪为抗击疫情出点微薄之力呢?


碰巧室友推送了一个阿里天池“新冠疫情相似句对判定大赛”链接,于是秉持“重在参与”的心态参加了比赛。经过半个月的努力,最终结果勉强不错(第6),收获了证书和一台Kindle。


image


2021年1月,疫情形势依然严峻,幸运的是国家不仅及时稳住了疫情,还研发出有效的疫苗。借助疫情主题的比赛,我希望帮助更多读者,入门自然语言处理的基本任务——文本相似匹配


一、数据分析



任务背景非常直观,主办方给定了“肺炎”、“支气管炎”、“上呼吸道感染”等医疗背景下的用户真实提问,要求选手通过算法识别任意2个问题,是否想表达同一个意思。举例:


问题1: “轻微感冒需不需要吃药?”
问题2: “轻微感冒需要吃什么药?”


问题1关心“是否得吃药”,问题2关心“该吃什么药”,侧重点不同所以意思不同,用label=0表示句子不相似。


数据集样本都是三元组(query1, query2, label)。为了降低难度,每一个问题的长度被控制在20字以内。


image


数据集demo

比赛的训练集、验证集分别包含8746、2001条三元组。我们从dev中随机保留了800条样本作为最终dev,其余均加入训练。


数据增强


拿到数据简单分析后,我发现数据集已经过清洗,竟然异常的干净整齐(没有杂乱的符号、不通顺的句子),label分布几乎也接近1 : 1。


再观察数据,相同的query1总是按顺序排列在一起,随后跟着不同的query2。这种分布很容易想到一种数据增强策略:相似传递性


image


相同query1总是相邻排列


A <-> B 相似 and A <-> C 相似 => B <-> C 相似


最终我额外获得了5000条高质量的数据,比赛准确率因此提升了0.5%


实体替换


此外,我们也尝试了训练一个NER模型挖掘文本中的医疗实体,如“胸膜炎”、“肺气肿”,再通过word2vec查找最接近的实体进行替换。


但这种方式并没有提升最终结果。我觉得原因有2个:


  • 1W条样本规模偏小,NER模型识别误差较大
  • 词向量没有针对医疗场景训练,包含的医疗实体很少


二、匹配方法实现



文本匹配有非常多简单又实用的方法,例如:


  • 基于字符统计:字符串匹配、编辑距离、Jaccards距离
  • 基于语言模型:word2vec/glove词向量、BERT
  • 基于神经网络:孪生网络、TextCNN、DSSM、ESIM、FastText等


由于比赛需要尽可能获得高分,这里主要介绍基于神经网络和BERT的文本匹配算法。

BERT[1]是一种预训练语言模型,通过海量文本、Transformer架构和MLM训练任务在众多NLP任务上取得了优异成果。对BERT不了解的读者,可以参考我之前的文章:从BERT、XLNet到MPNet,细看NLP预训练模型发展变迁史


比赛中我们测试了5-6种不同的神经网络方法,并最终选择了3种在dev上表现最好的模型加权融合。具体可以参考代码中的 image 文件。


文本CNN(TextCNN)


TextCNN是Yoon Kim[2]在2014年提出的用于句子分类的卷积神经网络。文本匹配任务本质上可以理解成二分类任务(0:不相似,1:相似),所以一般的分类模型也能满足匹配需求。


image


TextCNN模型结构


与图像中的二维卷积不同,TextCNN采用的是一维卷积,每个卷积核的大小为 image (h为卷积核窗口,k为词向量维度)。文中采用了不同尺寸的卷积核,来提取不同文本长度的特征。


然后,作者对卷积核的输出进行最大池化操作,只保留最重要的特征。各个卷积核输出经MaxPooling后拼接形成一个新向量,最后输出到全连接层分类器(Dropout + Linear + Softmax)实现分类。


我们知道,文本中的关键词对于判断2个句子是否相似有很大影响,而CNN局部卷积的特效能很好的捕捉这种关键特征。同时TextCNN还具有参数量小,训练稳定等优点。


文本RNN(TextRCNN)


相比TextCNN,TextRCNN的模型结构看起来复杂一些。


image


TextRCNN模型结构

简单浏览论文后,会发现它的思路其实简单,粗暴。

首先通过词向量获得字符编码 image ,随后将其通过双向RNN学习上下文特征,编码得到 imageimage


再将词向量 imageimageimage 拼接得到新向量,输入经tanh函数激活的全连接网络。最后,将网络的输出最大池化,并输入另一个全连接分类器完成分类。

RNN模型对于长文本有较好的上下文“记忆”能力,更适合处理文本这种包含时间序列的信息。


BERT + MLP (fine-tune)


最后一种方法,直接用语言模型BERT最后一层Transformer的输出,接一层Dense实现文本匹配。


image


BERT-finetune

实验中我们发现,对最终输出的每个token特征取平均(MeanPooling)效果好于直接使用首字符“[CLS]”的特征。


模型权重上,崔一鸣等人[4]发布的中文roberta_wwm_ext_large模型效果要好于BERT_large。


image


最后,我们根据这三种模型在dev上的准确率设置了不同比重,通过自动搜索找到最优权重组合,在线上测试集取得了96.26%的准确率。


三、涨分trick



做一个深度学习主导的算法比赛,除了分析数据与模型,一些trick也是获得高分的重要因素。这里罗列了一些常用策略。


  • 数据增强[5]
  • 标签平滑
  • 自蒸馏
  • 文本对抗训练[6]
  • 模型融合
  • 特征筛选
  • 使用多个学习率[7]


针对这次文本匹配任务,数据增强、标签平滑、模型融合、多学习率都被证明是有效的。


四、总结



过去将近1年的天池“新冠疫情相似句对判定大赛”,任务并不复杂,是入门NLP项目实战,提升编程能力的很好锻炼机会。


image


比赛虽然结束了,疫情犹在。愿每位读者出门多加防护,一定要保护好自己哦!


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23524 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
22224 0
如何设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云安全组设置详细图文教程(收藏起来) 阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程。阿里云会要求客户设置安全组,如果不设置,阿里云会指定默认的安全组。那么,这个安全组是什么呢?顾名思义,就是为了服务器安全设置的。安全组其实就是一个虚拟的防火墙,可以让用户从端口、IP的维度来筛选对应服务器的访问者,从而形成一个云上的安全域。
18585 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
11975 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
21935 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
14689 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,云吞铺子总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系统盘、创建快照、配置安全组等操作如何登录ECS云服务器控制台? 1、先登录到阿里云ECS服务器控制台 2、点击顶部的“控制台” 3、通过左侧栏,切换到“云服务器ECS”即可,如下图所示 通过ECS控制台的远程连接来登录到云服务器 阿里云ECS云服务器自带远程连接功能,使用该功能可以登录到云服务器,简单且方便,如下图:点击“远程连接”,第一次连接会自动生成6位数字密码,输入密码即可登录到云服务器上。
36347 0
29
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载