向AI转型的程序员都关注了这个号????????????

机器学习AI算法工程   公众号:datayx

面对疫情抗击,疫情知识问答应用得到普遍推广。如何通过自然语言技术将问答进行相似分类仍然是一个有价值的问题。如识别患者相似问题,有利于理解患者真正诉求,帮助快速匹配准确答案,提升患者获得感;归纳医生相似答案,有助于分析答案规范性,保证疫情期间问诊规范性,避免误诊。

达摩院联合医疗服务机构妙健康发布疫情相似句对判定任务。比赛整理近万条真实语境下疫情相关的肺炎、支原体肺炎、支气管炎、上呼吸道感染、肺结核、哮喘、胸膜炎、肺气肿、感冒、咳血等患者提问句对,要求选手通过自然语言处理技术识别相似的患者问题。成果将作为原子能力助力疫情智能问答应用技术精准度提升,探索下一代医疗智能问答技术,具有广泛的技术和公益价值。

代码及运行教程  获取:

关注微信公众号 datayx  然后回复  相似句  即可获取。

AI项目体验地址 https://loveai.tech

1. 算法说明

本解决方案使用了基于病名\药名的数据增强+模型融合+训练时-测试时增强+伪标签的解决方案

  • 基于病名\药名的数据增强 Data augmentation

根据比赛组织方的信息,总共肺炎”、“支原体肺炎”、“支气管炎”、“上呼吸道感染”、“肺结核”、“哮喘”、“胸膜炎”、“肺气肿”、“感冒”、“咳血”十个病种,但是在train和dev数据集中仅仅出现了八个病种,其他的两个“肺结核”与“支气管炎”病种并没有出现,推测在test中包括了剩下的两个病种,是这次比赛的一个关键信息。

本次比赛需要模型学习的内容主要包括以下几个点:匹配语义信息,病名信息,药名信息,病理信息,我们需要针对这四个点来进行数据增强。

在测试集中,“肺结核”和“支气管炎”两个病种的测试数据中显然含有我们已有标注数据没有的病名、药名信息,但是这些信息是较为易得的;对于语义匹配信息和病理信息,1. 其生成难度要远远高于前两者,2.且很可能改变原数据集中的语义匹配和病理信息,出于这两点考虑,本解决方案采取了替换原数据中病名\药名的数据增强。

在实现过程中,挑选了病理与“肺结核”、“支气管炎”较为接近的“支原体肺炎”与“哮喘”标注数据中的部分样本,作病名替换,添加到原始标注数据中作为训练数据集。LB上升1.9个千分点(96.10->96.29)

  • 模型融合 models fushion

本解决方案使用了ernie + bert_wwm_ext + roberta_large_pair的融合模型,对最后的结果使用平均值。具体的来源和下载地址见参考资料。提升2.5个千分点(95.75->96.10)

  • 训练时-测试时增强 train-test time augmentation

本解决方案中,在预测时,首先用原测试集预测一遍标签;然后将原测试集的query1和query2字段交换,再次预测一遍;最后将两个结果相加作为最后的预测结果。出于训练时模型拟合方向的偏差考虑,在训练时也训练了两种模型,分别用于预测正序\逆序时的数据集,这一做法的提高非常稳定。

这样的技巧是为了让模型在学习\预测过程中看到数据的更多方面,结合数据中包含的边角信息。LB上升2个千分点(95.59->95.75)

注:这个地方的提升不仅是添加了train-test time augmentation, 另外考虑时间因素移除了pseudo_label, 故估计实际上升为2个千分点左右。

  • 伪标签 pseudo label

在预测完成后,使用预测结果和原训练集一起作为新的训练集再次训练一个模型做预测。LB上升1个万分点(96.29->96.30)

主要提升的过程

题外话

  • 基本没调参,roberta-large-pair稍微调了一下,但是毕竟dev不是特别可信... 中间一段时间(3.10~3.17)提升比较多,然后最后10天开始玩杂技,比较想通过数据增强来获得更多的提升,一直没有提升...毕竟猜到测试集里的语义匹配信息以及病例信息难度过高...最后2天幡然悔悟调了调参,dev上暴涨3个千分点,然后LB暴跌了3个千分点。。。还是头太铁了,调参绝非一日之功。

  • 没有用K折的原因:因为使用train-test time augmentation已经6个模型了,太多了我心里过意不去也不好调,故放弃了K折,实际上我的train-test time augmentation也有一定的去随机性作用,其实可以考虑加个3折比较合适。

  • 没有用fgm & pgd的原因:纯菜。看了大佬们的post后试了一下,pgd效果爆棚,已经在这个github里更新了这两个算法和相关的参数。

  • 本人第一次打nlp的比赛,打过两次feature-based,都被吊打。。。奇淫技巧实在不会,所以在一开始的时候就把重心放在数据上,毕竟对新手比较友好,提升的机会更大。

  • 由于数据集正负比例尚可,没有使用focal loss

  • 实际上一直有考虑将病种信息编码并作为特征之一,但是考虑到存在OOV的病种,是一大问题。如果使用增强后(包含OOV病种的数据)数据,然后将类别信息编码为one-hot形式,然后与bert模型输出pool进行concat然后再dropout接fc也是思路之一,但是后面一段时间一直纠结数据去了。

  • 尝试了特征工程,效果不是特别好。具体表现为,使用ernie得到的pool结果作为特征,在训练集上五折可以得到96+的oof acc,但是在验证集上仍然只有94左右的acc,严重不对齐,遂放弃。

  • 尝试了使用textrank提取两个query中的keyword及其pr值,然后设计公式来使两个query的(keyword,pr)二元组列表交互来产生特征,效果也很一般。也尝试过一些其他chip2019 top1解决方案中的特征,都不太好。

  • 尝试了将待预测数据中的病名替换为已知病名来进行增强,效果比较差。事实证明,病名与其病理之间存在较强联系。

  • 尝试了根据已知标签比例修正logits转为标签的阈值,效果也不好。

  • 尝试使用多轮伪标签,效果也不好。

  • 尝试使用多次迭代的伪标签,每次使用预测信心最高的60%测试集样本加入训练集,效果更差。。。实际上根据测试,每次预测信心最高的60%测试样本的正确率为99+,基本相当于训练样本了。推测是因为加入大量同类型(简单)样本改变了数据集结构导致模型性能下滑。

  • 尝试了将病种名直接拼接进问句对,效果很一般

  • 尝试了将两个query中的最长公共子字符串去掉,效果下跌比较严重。

  • 有一个想法是在预测时对测试数据进行pgd和fgm扰动(单纯扰动),感觉会有挺好的效果

  • 通过判别模型来筛选增强数据

  • multidrop

  • 通过kl散度来判别与原始分布的距离


阅读过本文的人还看了以下文章:

TensorFlow 2.0深度学习案例实战

基于40万表格数据集TableBank,用MaskRCNN做表格检测

《基于深度学习的自然语言处理》中/英PDF

Deep Learning 中文版初版-周志华团队

【全套视频课】最全的目标检测算法系列讲解,通俗易懂!

《美团机器学习实践》_美团算法团队.pdf

《深度学习入门:基于Python的理论与实现》高清中文PDF+源码

特征提取与图像处理(第二版).pdf

python就业班学习视频,从入门到实战项目

2019最新《PyTorch自然语言处理》英、中文版PDF+源码

《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码

《深度学习之pytorch》pdf+附书源码

PyTorch深度学习快速实战入门《pytorch-handbook》

【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》

《Python数据分析与挖掘实战》PDF+完整源码

汽车行业完整知识图谱项目实战视频(全23课)

李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材

笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!

《神经网络与深度学习》最新2018版中英PDF+源码

将机器学习模型部署为REST API

FashionAI服装属性标签图像识别Top1-5方案分享

重要开源!CNN-RNN-CTC 实现手写汉字识别

yolo3 检测出图像中的不规则汉字

同样是机器学习算法工程师,你的面试为什么过不了?

前海征信大数据算法:风险概率预测

【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类

VGG16迁移学习,实现医学图像识别分类工程项目

特征工程(一)

特征工程(二) :文本数据的展开、过滤和分块

特征工程(三):特征缩放,从词袋到 TF-IDF

特征工程(四): 类别特征

特征工程(五): PCA 降维

特征工程(六): 非线性特征提取和模型堆叠

特征工程(七):图像特征提取和深度学习

如何利用全新的决策树集成级联结构gcForest做特征工程并打分?

Machine Learning Yearning 中文翻译稿

蚂蚁金服2018秋招-算法工程师(共四面)通过

全球AI挑战-场景分类的比赛源码(多模型融合)

斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)

python+flask搭建CNN在线识别手写中文网站

中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程

不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  


机大数据技术与机器学习工程

 搜索公众号添加: datanlp

长按图片,识别二维码

新冠疫情相似句对判定,快速匹配准确答案相关推荐

  1. 新冠疫情,或加速银行数字化服务转型

    根据麦肯锡最新个人金融服务(PFS)调研显示: 1.亚太新兴和发达市场的消费者都在积极使用数字银行,特别是在新冠疫情期间,人们加速广泛使用数字银行的服务.在2021年,亚太地区数字银行的活跃用户较20 ...

  2. 关于新冠疫情,美国专家们终于认定了这9大事实

    全文共4366字,预计学习时长11分钟 图源:unsplash 半年多前,美国疾控中心公布了美国第一例确诊的新冠肺炎病例,几天后发出警告称,"这是非常严重的公共健康威胁".然而,卫 ...

  3. 新冠疫情对AI技术发展的影响

    1.疫情的现况 随着新冠病毒在2020年初被发现,迄今为止,新冠病毒遍布全球,国内已经基本控制,但是国外的形势依旧很严峻,特别是欧美地区.如今,新冠病毒产生了变异,形势变得愈发紧张,又让人们产生了未有 ...

  4. 2022年认证杯SPSSPRO杯数学建模C题(第一阶段)污水流行病学原理在新冠疫情防控方面的作用求解全过程文档及程序

    2022年认证杯SPSSPRO杯数学建模 C题 污水流行病学原理在新冠疫情防控方面的作用 原题再现:   2019 年新型冠状病毒肺炎疫情暴发至今已过两年,新型冠状病毒历经多次变异,目前已有 11 种 ...

  5. 新冠疫情防控背后有哪些鲜为人知的技术?

    1. 前言 从2019年末从武汉市发现新冠肺炎病毒确诊病例开始,到现在已经有两年多的时间了.在这两年中,从最初的恐慌变得自信,从开始的逃离疫区.抢购物资.扎堆就医,到现在配合流调.主动检测.积极接种疫 ...

  6. 新冠疫情反复期间,物联网技术可以如何应用

    新冠疫情肆虐的2年多时间,影响了我们生活的方方面面.居家办公.商场冷清似乎已经成了常态.在新冠疫情的打击下,企业的生存更加艰难,在这种时候,物联网技术就显得格外重要,能通过各种功能助力传统企业进行数字 ...

  7. Python小白的数学建模课-A3. 12个新冠疫情数模竞赛赛题与点评

    新冠疫情深刻和全面地影响着社会和生活,已经成为数学建模竞赛的背景帝. 收集了与新冠疫情相关的的数学建模竞赛赛题,关注收藏本文或者在评论区留下邮箱,送你赛题分析点评及优秀论文. 『Python小白的数学 ...

  8. 新冠疫情中的区块链应用

    本文汇总整理在抗击新冠疫情的公开报道中的7个区块链应用案例. 1.山东财经大学:区块链疫情采集检测系统 山东财经大学基于蚂蚁区块链服务平台开发,用于实时在线采集 全校学生和教职工健康状态数据.外出情况 ...

  9. Yolov5:强大到你难以想象──新冠疫情下的口罩检测

    初识Yolov5是看到一个视频可以检测街道上所有的行人,并实时框选出来.之后学习了CNN卷积神经网络,在完成一个项目需求时,发现卷积神经网络在切割图像方面仍然不太好用.于是我想到了之前看到的Yolov ...

最新文章

  1. ADAS摄像头20个技术挑战
  2. python中gil锁和线程锁_Python线程——GIL锁、线程锁(互斥锁)、递归锁(RLock)...
  3. Delphi 的消息机制浅探三
  4. python爬虫新手项目-33个Python爬虫项目实战(推荐)
  5. 既约分数蓝桥杯c语言,2021蓝桥杯C++第二届省赛
  6. 你所了解到的Web攻击技术
  7. Bootstrap3 栅格系统之自定义mixin和变量
  8. vc6下usb编程_5款免费的C/C++语言编程器
  9. Java Web学习笔记07:数据源、JavaBean与MVC模式
  10. Spring Boot 模板引擎FreeMarker集成
  11. php把数据表格数据,php怎样把数据添加到数据表
  12. hfs文件服务器打开显示空白,解决Adobe Creative Cloud打开界面一直显示空白的方法...
  13. 怎么才能获取NTFS for mac注册码呢?
  14. putty-gns3
  15. Windows的资源监视器
  16. Excel卡死无响应问题
  17. 误码率matlab,关于误码率的问题 急!!!!!
  18. Java项目:SSH学生请假管理系统
  19. 团体程序设计天梯赛 -- 练习集 (L1合集)
  20. windows11微软官方安装介质制作

热门文章

  1. 菜鸟学Linux 第100篇笔记 tomcat 之 java
  2. 前端清单之Vue.js篇
  3. 微信开发——带参数二维码的使用
  4. 30个php操作redis常用方法代码例子
  5. 仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表中为标识列指定显式值问题...
  6. 感谢大家对《软件性能测试与Loadrunner实战》的支持
  7. VS2015搭建汇编语言环境和代码高亮插件AsmDude
  8. unity3d 求两个点长度_Unity3D实现体积光
  9. linux备份能压缩吗,Linux备份与压缩命令
  10. 员工转正申请书_网站建设人员的转正的申请书