第二届海南大数据创新应用大赛 - 算法赛道冠军比赛攻略_海南新境界队

news2024/9/24 13:19:45

关联比赛:  第二届海南大数据创新应用大赛 - 智能算法赛

第二届海南大数据创新应用大赛 - 算法赛道冠军比赛攻略

首先很幸运能拿到这次初赛冠军,本着积极学习和提升自我的态度,团队成员通力合作是获胜关键,再次感谢。

赛题背景分析和理解

本次大赛是海南省大数据管理局成立后,联合阿里天池举办的比赛,旨在提升海南大数据应用水平和支撑海南自由贸易港建设。大赛提供了2000份脱敏之后的中文人才简历数据和标注数据,参赛选手通过人工智能技术构建预测模型预测简历中涉及的18个标注类别字段。即给定PDF格式的简历标注出涉及标注类别字段的内容。

看了赛题描述,称构建以人为主题的人才知识图谱库,形成人与人、人与企业、人与学校等之间的关联关系,一开始以为是知识图谱,其实这是一道信息抽取ERE的问题。ERE是个级联任务,主要分为实体抽取和关系抽取两个子任务,从样本分析可以看出一个类别多实体的问题,可以将其转换成联合抽取实体+关系的”三元组”信息抽取,即“一对多”抽取+分类任务。

提供数据

几类常见非标准简历格式模板的人工构造数据,共2000份训练数据。

标注类别包括:姓名、出生年月、性别、电话、最高学历、籍贯、落户市县、政治面貌、毕业院校、工作单位、工作内容、职务、项目名称、项目责任、学位、毕业时间、工作时间、项目时间共18个字段。

18个字段共分为三类,分别是:
普通字段: 姓名、出生年月、性别、电话、最高学历、籍贯、落户市县、政治面貌;
普通列表字段: 学位、毕业时间、工作时间、项目时间;
字符级列表字段: 毕业院校、工作单位、工作内容、职务、项目名称、项目责任;

评估指标:Macro Weighted F1

$$ P_i=\frac{TP_i}{TP_i+FP_i} $$

$$ P_{weighted}=\sum\limits_{i={1}}^{n}P_i×ω_i $$

$$ R_i=\frac{TP_i}{TP_i+FN_i} $$

$$ R_{weighted}=\sum\limits_{i={1}}^{n}R_i×ω_i $$

$$ MacroWeighted F1=\frac{2×P_{weighted}×R_{weighted}}{P_{weighted}+R_{weighted}} $$

普通字段和普通列表字段均使用字段级别的F1值;字符级列表字段使用字符级别的F1值进行计算,会首先依据最长公共子序列与真实label进行匹配,再进行F1值的计算。所有字符串均会去除空格后与标准答案进行比对。

样本特点

通过人工观察样本情况,发现特点如下:

  1. 从一份PDF简历中抽取关于18个类别的内容,且只处理抽取任务,不做推理,不额外添加信息;关于简历中出现的单个“男”“女”依然认为是性别的有效信息;考虑从三元组入手处理,每份简历中s为姓名,p为18个类别,o为内容。

  2. 样本中列表的抽取结果是“一个s、多个(p, o)”的形式,比如(李冠光,毕业院校,北京师范大学),(李冠光,毕业院校,北京林业大学)。

  3. 通过观察样本PDF包含的几种常见非标准简历格式,发现折行和竖排问题,需要从PDF中抽取正确的文本顺序,才能保证后面的抽取任务的准确度。

核心思路

从样本特点可以看出,除了要正确处理PDF内容,其它为信息抽取任务的常见特点,通过简单的调研PDF抽取工具和信息抽取模型、方法,我们设计PDF抽取。

PDF折行和竖排问题

模型训练和预测有时间限制,为保证效率,我们使用PDFminer提取出文本坐标,并根据以下算法进行抽取:

  1. 先根据文本中的划线分隔符,区分文本是左右结构还是非左右结构。先使当前Y坐标大于当前行的Y坐标,然后重新遍历每个字到当前字的位置止,找出X最大坐标的字,判断当前的字的X坐标是否大于X最大坐标字的X坐标;
  2. 对于非左右结构的文本,则以从左到右、从上到下的方式进行遍历;
  3. 对于左右结构的文本,则先对左边的文本以非左右结构的方式进行遍历,并判断当前字是否在块内,遍历完左边块之后,再以相同的方式遍历右边块内容;
  4. 在遍历的过程中同样需要判断前后字是否在同一行,即判断当前的Y坐标是否和上一个Y坐标相同,相同即同行,不相同则看后面的字的Y坐标是否相同,相同同行,如果还是不相同,则看后面字的Y坐标在当前行Y坐标和当前字的Y坐标区间内,且后面字的Y坐标和行坐标是否差10个点行间距,反之不同行。

抽取出正确顺序的文本,可以进入正常的信息抽取环节了。

整体思路

简单关系抽取流程

模型设计

目前BERT大热,效果惊人,所以这次比赛中我们也没有过多的思考,直接选BERT。只是因为BERT处理长度受限于512个字节,对于长文本的处理,最终还需借助CNN+Attention结构。在比赛群里交流,发现一个有意思的现象,大家线下都是验证集99%的准确率,线上就翻车了,开始我们也遇到这个问题,主要原因还是训练数据集是官方造的几种类型的简历模板,线下过拟合了,线上测试还存在550余份真实简历数据,也就是说在测试集会出现unseen的样本。针对这种情况,我们引入外部简历数据采用半监督和对抗训练的方式,进行了一些实体替换增强。我们还尝试切分不同训练集对模型进行加权融合,线上效果没有得到提升。刚好比赛结束前几天,Electra模型发布,基于硬件限制,我们最终将模型换成Electra模型,性能提升1%左右。

Trick

  1. 此次比赛任务提分的一个关键是需要解决PDF竖排和折行问题。大道至简,我们通过引入是否左右结构和是否位于同一行的判断,解决了这个问题。

  2. 针对较长文本,借助半标注-半指针模型完成信息对症抽取。

  3. 引入外部数据半监督学习增加训练数据量,通过前程无忧爬取、从公司HR手上收集到的简历,使用比赛中的原始数据构建筛选模型(Bert+Dense),然后对外部简历数据进行预测,针对p关系的o编码向量位置替换实体。这里我们还通过PDF文本坐标信息进行了规则修正。

  4. 引入对抗训练。

    目标:

enter image description here

D代表训练集,x代表输入,y代表标签,θ是模型参数,L(x,y;θ)是单个样本的loss,Δx是对抗扰动,Ω是扰动空间。这个统一的格式首先由论文[《Towards Deep Learning Models Resistant to Adversarial Attacks》提出。

  • 保证“看起来一样的结果”下,L(xx,y;θ)越大越好,尽可能让现有模型的预测出错。

  • 针对这种对抗方式找到最小化loss去更新θ,也就是找到最鲁棒的模型参数去防御。

Fast Gradient Method(FGM):

enter image description here

《对抗训练浅谈:意义、方法和思考(附Keras实现) 》[Blog post]. Retrieved from 对抗训练浅谈:意义、方法和思考(附Keras实现) - 科学空间|Scientific Spaces

  1. 多模型融合,通过训练集五折交叉验证两个BERT模型,进行加权求平均。

    模型融合

  2. 引入轻量预训练模型,将共享编码层Bert模型更换成Electra模型,准确度提升1%左右。

比赛经验总结和感想

  • 此次比赛任务解决PDF竖排和折行问题后,使用普通的BERT预训练模型便可达到78+的准确度量级,并且该算法迁移到其它项目中同样具有落地性。
  • 数据增强和模型融合是有效的提升手段,模型融合这块线下预测acc有提高,线上预测性能没有提升,还需进一步探究。
  • 准确度和时间复杂度不可兼得,如何满足现实中速度和性能的平衡,还需进一步探究。
  • 作为海南本土的互联网企业,抱着积极学习和提升自我的态度,希望能在比赛中将公司多年积累的技术经验运用在人才数据智能服务体系的实际项目中,验证其落地性和实用性。希望可以为海南自由贸易港的快速发展、全省信息化大数据的创新建设贡献一份力量。

查看更多内容,欢迎访问天池技术圈官方地址:第二届海南大数据创新应用大赛 - 算法赛道冠军比赛攻略_海南新境界队_天池技术圈-阿里云天池

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2053536.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

gpio的使用----->4412的裸机的使用(第三节)

这一节主要是 4412 的裸机的使用 0 4412 的硬件原理图 数据手册 然后是数据手册的解析: 每一组都有这几个 寄存器。 需要注意: 1、 4412 的中断是 与输入,输出在同一个级别的,与stm32不同。 2、 我是在uboot 上进行编程的&#x…

重头开始嵌入式第二十二天(Linux系统编程 进程)

进程 目录 进程 1.进程的概念 2.PCB(process control block) 3.进程和程序有什么区别? 4.进程的内存分布 5.进程的分类 守护进程 6.进程的作用 7.进程的状态 8.进程的调度 9.查询进程的相关指令 1.ps aux 2.top 3.kill和killa…

12 Text 组件

12 Text 组件 Tkinter 是 Python 的标准 GUI 库,而 Text 组件是其中用于显示和编辑多行文本的控件。以下是对 Text 组件的详细说明和一个使用案例。 Text 组件属性 基本属性 width: 文本框的宽度,通常以字符数为单位。height: 文本框的高度&#xff…

亚世光电:消费电子年度表演

机圈风云再起,消费电子乘风而起? 今天我们来聊——亚世光电 最近,华为mate60突然降价,被大家怀疑是为新品上市做准备,算算时间,下半年的消费电子大战也即将拉开帷幕,而亚世光电所在的光电显示领…

sklearn-线性回归

文章目录 一、sklearn-线性回归介绍二、线性回归1.一元线性回归2.多元线性回归模型3.最小二乘法 三、一元线性回归应用1.导入库2.绘制散点图3.建立回归模型并进行训练4.模型评估与数据查看5.模型测试 四、多元线性回归应用1.导入库2.计算相关性3.数据预处理4.训练评估模型5.模型…

iOS 18.1 Beta 2评测:新变化与体验升级

苹果公司近日向开发者推送了iOS 18.1 Beta 2更新,这一版本基于beta1版本进行多个方面优化和改进,为用户带来了更加流畅和个性化的使用体验。作为一位热衷于体验新系统的用户,小编也是第一时间升级了Beta 2版本,并对其进行了全面的…

Java二十三种设计模式-状态模式(20/23)

本文深入探讨了状态模式,一种允许对象根据其内部状态变化而改变行为的软件设计模式。文章从定义、组成部分、实现方式、使用场景、优缺点分析、与其他模式的比较,到最佳实践和建议,全面介绍了状态模式的各个方面。通过Java语言的实现示例和实…

2024前端面试题-篇章一(个人向)

1.vue2生命周期(省略) 2.vue3生命周期(省略) 3.vue2页面生命周期与组件生命周期执行顺序: 一般是 页面先创建,然后准备再准备挂载,挂载的时候发现有组件再执行组件的生命周期,组件…

数字影像技术是如何改变我们看待世界的方式呢?

在当今的科技时代,数字影像技术正以惊人的速度改变着我们的生活和视觉体验。那么,什么是数字影像技术呢? 数字影像技术是指通过数字化手段对图像和视频进行获取、处理、存储、传输和展示的一系列技术。 它利用各种数字设备,如数…

msf+proxychains组合搭建socks5隧道 | 内网穿透

实验环境 网络拓扑: kali: VMnet1(公网)192.168.52.134 win10: VMnet1(公网)192.168.52.135VMnet2(内网)192.168.72.133 win2008: VMnet2&#xff08…

【数据结构初阶】二叉树--基本概念

hello! 目录 一、树 1.1 树的概念和结构 1.2 树的相关术语 1.3 树的表示 1.4 树形结构实际应用场景 二、二叉树 2.1 概念和结构 2.2 特殊的二叉树 2.2.1 满二叉树 2.2.2 完全二叉树 2.3 二叉树的存储结构 2.3.1 顺序结构 2.3.2 链式结构 …

转行到大模型,完整版攻略从大模型零基础到大模型精通,我是这样过来的

在当今这个日新月异的时代,技术的更新迭代速度远超我们的想象。对于那些渴望在职业生涯中寻求新挑战的人来说,转向人工智能领域,尤其是投身于大规模语言模型的研究与开发,无疑是一个充满机遇的选择。本文将为您揭示如何从零开始&a…

阿里十万卡训练集群 网络拓扑架构和优势 Alibaba HPN: A Data Center Network for Large Language Model Training

本博客的视频教程在这: 2.2阿里十万卡集群 网络拓扑架构和优势 Alibaba HPN: A Data Center Network for Large Language Model_哔哩哔哩_bilibili 一、大模型训练的核心问题 1.1 流量模式的问题 大语言模型训练的流量模式问题可参考这个: ECMP等价…

Linux 服务器下非root用户安装CUDA完整流程(多次踩雷经验总结)

参考博客: linux下安装cuda和cudnn(非root权限)_cuda下载安装 远程服务器 linux-CSDN博客 Linux下非root用户安装CUDA_linux下cuda-toolkit-archive-CSDN博客 非root用户安装cuda10.1,以及CUDA不同版本间切换_非root用户.run文…

已解决centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64的解决方案

出现cannot find a valid baseurl for repo:base/7/x86_64错误通常是由于YUM仓库源无法找到或无法访问,导致YUM无法正常工作。这种情况常见于CentOS 7系统。解决这个问题需要检查几个方面,如网络连接、DNS设置和YUM仓库源配置。 🧑 博主简介&…

aspose-words中插入附件及遇到的问题

aspose-words版本:21.1 java:1.8 目标: 前端使用tinymce编辑一段内容,后端使用aspose-words将html转为word,并将html中的附件转换为word中的附件。 形如: 实现方案: 使用正则表达式找出需要替…

setData的 Qt::CheckStateRole是model中checkbox的状态(选中否)

checkbox的状态 bool MissionModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (role Qt::CheckStateRole && col 3 ) { } }

【嵌入式裸机开发】基于stm32的照相机(OV7670摄像头、STM32、TFTLCD)

基于STM32的照相机 准备工作最终效果一、下位机1、主函数2、OV7670初始化 二、上位机1、控制拍照2、接收图片数据 准备工作 一、硬件及片上资源: 1,串口1(波特率:921600,PA9/PA10通过usb转ttl连接电脑,或者其他方法)上传图片数据至上位机 2,串口2(波特率:115200,PA…

Opencv学习-直方图应用

1. 直方图均衡化 如果一个图像的直方图都集中在一个区域,那么整体图像的对比度比较小,不便于图像中纹理的识别。例如,如果相邻的两个像素灰度值分别是 120 和 121 ,那么仅凭肉眼是无法区别出来的。同时,如果图像中所…

音频提取软件分享:6款好用音频提取工具推荐

在现代数字媒体中,音频提取已经成为一项至关重要的技能。无论你是视频创作者、播客主持人,还是音乐爱好者,从视频、电影或其他多媒体文件中提取音频,都是一项非常有用的操作。 本文将围绕音频提取,介绍这项技术的应用、…