暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

竞赛总结:科大讯飞2023 校招简历项目技能匹配检测

Coggle数据科学 2024-02-06
621
  • 赛题名称:校招简历项目技能匹配检测
  • 赛题类型:自然语言处理

https://challenge.xfyun.cn/topic/info?type=skill-matching

unsetunset赛事背景unsetunset

讯飞高教人才培养业务线围绕新一代信息技术,与全国几十所高等院校开展深度合作,为了院校学生能更好地精准实习就业,学生的实习就业简历作为桥梁,就离不开老师们的精心指导,而指导耗时耗力,那如何降低人工指导的耗时,提高简历指导的效率成了老师们的迫切需求。简历指导如何智能化,学生如何精准实习就业,如何智能化判断简历应聘岗位与项目技能匹配度,成了亟待解决的问题。

unsetunset赛事任务unsetunset

智能化判断简历应聘岗位与项目技能匹配度,需要明确岗位的技能描述,本赛题以初级Java开发工程师为目标岗位,提供脱敏后的学生中文简历数据集(pdf或docx格式)作为训练样本,学生简历均以初级Java开发工程师为应聘岗位,参赛选手需要基于提供的样本数据构建模型,要求根据简历智能提取项目经历和技能情况的具体内容,结合岗位(初级Java开发工程师)的技能描述,进行应聘岗位(初级Java开发工程师)与项目、技能匹配度计算。

主要任务如下:

  • 简历解析:从提供的 PDF 文件中提取学生简历的项目和技能文本数据。
  • 数据预处理:对提取的文本数据进行预处理和特征提取。
  • 构建一个模型,根据处理后的文本数据预测学生简历与岗位描述的匹配程度。匹配程度分为两个离散的类别:即匹配或不匹配。

Java 初级软件开发工程师岗位任职技能描述如下:

  1. JAVA基础扎实,理解JVM原理,有多线程、高并发系统开发经验者优先。
  2. 熟练掌握J2EE技术,熟悉Java Web开发常用开源框架(如 Spring、SpringMVC、SpringBoot、Mybatis)、类库以及组件(如 Redis,ActiveMQ,Zookeeper),能独立完成功能模块开发。
  3. 熟练使用Oracle、MySQL等至少一种大型关系数据库,熟练掌握SQL语句、存储过程,能对数据库进行操作,具有一定的数据库开发和使用经验。
  4. 熟悉HTML、CSS、Javascript、AJAX等Web前端技术。
  5. 熟悉Linux服务器相关操作,能独立部署应用服务;熟悉Tomcat/Nginx等服务器配置及使用。
  6. 熟悉Spring Cloud/Kubernates/Docker等技术优先;熟悉Vue/Angular/React等任一种前端框架优先。

unsetunset数据说明unsetunset

本次比赛为参赛选手提供的数据如下:脱敏后的学生简历数据集(pdf或docx格式)和Java软件开发工程师的岗位技能描述(txt格式)。为了保护学生隐私,本次训练数据提供脱敏后的数据集,共500份。

测试集对参赛选手不可见,由真实简历数据组成,共100余份。为了减轻选手对不同类型的文档的预处理工作,训练集全部为pdf格式。

unsetunset评估指标unsetunset

由于测试集采用真实数据,同时为了避免作弊,要求选手提交代码文件(含测试文件),能够在测试集上进行测试(测试输出结果保存为CSV文件,见模板)。本模型依据提交的结果文件,采用macro-F1 score进行评价。

unsetunset优胜方案unsetunset

第一名

方案概述

  1. PDF解析
    • 使用开源工具PDFMiner对PDF文档进行解析,转换为自然语言文本。
    • 数据存在一定的质量问题,因此进行了简单的噪音去除和换行处理。
  2. 数据预处理
    • 对解析后的文本进行质量问题处理,包括符号去除和换行压缩。
    • 针对技能部分进行提取,压缩数据以适应模型输入限制。
  3. 模型构建
    • 初版采用了记忆学习方式,利用TF-IDF等简单特征进行匹配判断,但分数不高,因此没有提交。
    • 第二版采用了预训练模型(如BERT),并尝试了不同的配置和模型大小进行训练和调优,最终选择了Early模型。
  4. 硬件资源消耗
    • 使用了10代CPU进行数据处理和模型训练。
    • 采用了T4和A100等GPU卡进行模型训练,对于较大模型,使用了A100进行训练,但实际测试发现显存消耗并不大,建议使用3090或V100也可满足需求。

流程和操作过程

  1. PDF解析
    • 使用PDFMiner工具对PDF文档进行解析,转换为文本数据。
  2. 数据预处理
    • 对文本数据进行质量处理,去除噪音和不必要的符号。
    • 压缩换行,统一格式。
  3. 模型构建
    • 初版采用了简单的特征和判断方式,但效果不佳。
    • 第二版采用了预训练模型,如BERT,进行模型训练和调优。
    • 尝试不同的模型配置和大小,选择适合的模型版本。
  4. 硬件资源消耗
    • 使用CPU和GPU进行数据处理和模型训练。
    • 根据模型大小和需求选择合适的GPU卡进行训练,确保资源利用最优化。

第二名

赛题背景及任务

  • 人工指导减力效率低,需要智能化判断减力应聘岗位与项目匹配度。
  • 主要任务包括简历解析、数据处理和模型构建。

简历解析

  • 使用Python中的PDFI库将PDF文件转换为文本字符串。
  • 通过对文本的分析和提取关键词,识别应聘者的技能和项目经历等信息。

数据处理

  • 对提取的特征进行AUC分析和交叉特征处理,筛选出具有较高相关性的特征。
  • 剔除不相关的特征,构建训练集和验证集。

模型构建

  • 采用K折交叉验证,选择了两种模型:LightGBM和XGBoost。
  • 通过参数网格搜索,优化模型参数,选择最佳模型。

模型优势和特点

  • 特征工程采用关键词持平方式,将文本转化为向量,提高模型准确性。
  • LightGBM能够有效处理异常值和提高模型泛化能力,运行速度快。
  • 未来展望包括利用深度学习网络模型进一步提升模型性能,增加样本量丰富特征表达,将分类问题转化为回归问题等。

第三名

PDF读取策略

  1. 问题考虑

    • 非文本PDF的文本信息提取。
    • 不同结构简历的语序保持问题。
  2. 解决方案

    • 考虑了直接读取和开源OCR识别两种方案。
    • 由于部分PDF存储为图片而非文本,加入OCR识别进行补充。

简历结构识别流程

  • 读取PDF,提取文本块。
  • 判断是否为左右结构简历:水平距离大于190的文本块数量是否超过10个。
  • 如果是左右结构,将左侧文本和右侧文本分别拼接。
  • 如果是上下结构,直接提取文本。

特征工程

  1. 技术特征

    • 提取赛题职位描述中的关键词,划分为九个类别。
    • 文本匹配统计每个类别出现的次数作为技术特征。
  2. 编程语言特征

    • 整理常用编程语言列表,计算求职者使用的编程语言数量作为特征。
  3. 候选岗位特征

    • 划分Java相关和非Java相关岗位,进行岗位匹配筛选简历。
  4. 模型选择

    • 尝试了LightGBM和CatBoost,最终选择LightGBM版本提交。

算法性能和资源消耗:

  • 使用默认参数进行模型训练,成本低,耗时较少。
  • 未尝试预训练模型等更复杂的模型,未进行参数调优。


文章转载自Coggle数据科学,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论