【NLP竞赛方案分享】2022全球人工智能技术创新大赛实体识别赛道第7名方案分享

​ 距离初赛结束仅为一周时,只是抱着实战学习NLP的态度来了解比赛,幸运的是,遇到了两位超级强力的队友,我们一起坚持到最后,拿到了复赛的第7名,现在把方案分享出来,欢迎各位同学参考和讨论。

代码后续开源

比赛回顾

​ 引用官方介绍:京东商品标题包含了商品的大量关键信息,商品标题实体识别是NLP应用中的一项核心基础任务,能为多种下游场景所复用,从标题文本中准确抽取出商品相关实体能够提升检索、推荐等业务场景下的用户体验和平台效率。本赛题要求选手使用模型抽取出商品标题文本中的实体。

​ 首先感谢各路大佬的无私分享。初赛阶段,在baseline(0.806+)基础上,根据大佬们的分享,进行修改并实验,成功进入复赛(0.8144+,36名)。复赛初期,花费了较多精力在模型尝试、调参等,但线上提分效果不明显。

​ 经过与队友的反思与总结,结合赛题的数据的以下特点:

  • 京东商品标题文本的实体密度高、实体粒度细。

  • 商品标题内部的实体之间联系并不紧密,实体类别极其不均衡。

  • 商品标题文本之间的分类信息可能对实体抽取有帮助,不同分类的商品标题文本可能标注方式不一致。

​ 我们主要从数据增强、模型结构、特征工程三个方向出发,尝试各种优化方法或者各种组合,不断地寻找更优解,我们在未使用伪标签数据的情况下,达到0.8179+,获得了复赛第7名。

数据

  • 对实体内部空格替换,仅针对实体内部空格替换效果要好于全部空格替换。
  • 将商品标题文本使用jieba分词后的结果与原文本拼接后喂入模型。
  • 数据增强:
    • 训练集中相同实体类型的实体抽取出来,拼接成句,加入到训
      练集,让模型学习到相同实体类型的内部的分类信息。

模型

【NLP竞赛方案分享】2022全球人工智能技术创新大赛实体识别赛道第7名方案分享_第1张图片
  1. 拼接文本,将商品标题文本使用jieba分词后的结果与原文本拼接。期望模型学习到样本的分词信息
  2. 使用Nezha-base模型对拼接之后的文本进行Embedding
  3. 每个token都加上cls的token,补充标题类别信息
  4. 依次喂入3层CNN,进行N-gram的特征提取。使用CNN是因为考虑到N-gram和任务特点:商品标题内部的上下文信息很有限,而CNN的缺点就是不擅长学习上下文信息,期望CNN学习到实体内部的一些特征。
【NLP竞赛方案分享】2022全球人工智能技术创新大赛实体识别赛道第7名方案分享_第2张图片

左边是将预测的标签进行Embedding作为特征输入,右边是将真实标签进行Embedding作为特征输入,两个一同预测标签,进行训练

  1. 将上述得到的每一层的输出当成特征进行拼接
  2. 新增判断数字还是字母等的特征Embedding
  3. 判断边界和实体类型

特征工程

  • 把数字,字母,文字等字符区分开,进行额外编码。考虑到某些实体类别可能存在数字,字母,文字的组合的规律,比如
  • 加入词频,偏旁部首,实体的长度等特征,(提升效果明显,但跟数据增强结合后,需要较大变动,舍弃了这些特征)

其他优化策略

预训练
  • 动态MASK 策略:可以每次迭代都随机生成新的mask文本,增强模型泛化能力。
  • Mask概率设置为0.5,尝试加大训练难度
  • N-gram 掩码策略:以Mask掩码概率选中token,为增加训练难度,选中部分以70%、20%、10%的概率进行1-gram、2-gram、3-gram片段的mask(选中token使用[MASK]、随机词、自身替换的概率和原版Bert一致)
多任务学习
  • 采用了多任务学习,把预测实体的边界和类型两个任务加进模型。

  • 优化了多任务学习,将模型预测的多任务标签和真实标签进行联合对抗学习

对抗学习
  • 使用FGM,通过一些embedding层添加微小扰动来进行对抗学习,以提升模型的泛化能力。
其他有效的优化方法

AdamW、Dropout 、EMA 、分层学习率 、 Grad Clip 、weight decay、early stop等。

舍弃的Tricks

  • 使用了针对训练标签比例失衡的Focal_Loss和Dice_Loss,线上无提升。猜测可能是由于训练和测试数据同分布,修改Loss反而改变了模型学习到的分布。
  • 使用了针对类内类外不同损失计算的对比学习Contrastive_loss,线下有提升,但是线上提升不大,此外,加上以后训练时长几乎翻倍,时间成本过高,故舍弃。-
  • gp全指针网络的修改,对于实体strat和end矩阵的特征抽取,原包是用爱因斯坦乘法,现在补充了直接相加的方法,但是提升不大
  • 尝试用了R-Drop、mixup、warnup学习率,提升不大。

结束语

​ 作为一个刚刚入门深度学习的菜鸡,在这比赛过程中,看到各种各样的tricks,仿佛自己是在琳琅满目的货架上挑选衣服,那些网红爆款的可能也未必是适合自己,那些过时老款也可能穿上更加精神。真的适合什么,可能真的需要试了才知道。

​ 最后,祝大家都能找到最适合自己的“衣服”。

你可能感兴趣的:(NLP竞赛,人工智能,自然语言处理,机器学习)