某机构如何利用NLP处理700万条招聘广告揭示英国劳动力市场
在线招聘广告包含有价值的信息,可以帮助企业和政策制定者更好地了解就业市场。不同职业的薪资随时间如何变化?地区劳动力市场如何演变?要很好地回答这些问题,需要从非结构化文本中提取技能,并将其映射到复杂且不断变化的分类体系中,这是一项具有挑战性的语言处理任务。
例如,有许多不同类型的软件开发职位,它们都有不同的要求、必备经验和薪资趋势。我们需要更详细地研究技能,以了解就业市场的变化。
在这篇文章中,我将向您展示Nesta的数据科学团队如何使用spaCy和Prodigy构建了一个NLP流水线,从700万条在线招聘广告中提取技能,以更好地了解英国的技能需求。该流水线的核心是我们的自定义映射步骤,它允许用户将提取的技能匹配到任何政府标准,例如欧盟委员会的技能、能力、资格和职业分类体系。
我们灵活、透明的方法意味着英国政府内部的数据科学团队,可以轻松使用我们的系统来理解不断变化的技能需求,并发现内部不匹配的情况。
Nesta的劳动力市场和数据科学 Nesta的数据科学团队多年来一直致力于研究在线招聘广告,以了解英国的劳动力市场。我们从购买的数据集中开发了多种方法,例如英国首个数据驱动的技能分类体系,以及针对面临自动化风险的职业绘制职业相似度图。
虽然专有数据提供商提供技能列表和标准化职业代码等元数据,但他们这样做的方法通常是一个"黑箱",而且数据在公开共享方面受到限制。因此,我们决定构建一个开源的替代方案,从招聘广告中获取洞察,以提高透明度并更好地控制我们可以分享的内容。
在英国某部门的初步资助下,我们构建了从招聘聚合网站抓取在线招聘广告的基础设施。到目前为止,我们已经收集了来自英国各地的超过700万条招聘广告。
我们还构建了工具和算法来:
- 从给定的招聘广告中提取相关信息,例如公司描述或资格等级;
- 通过开发自定义映射步骤,将提取的信息标准化为官方发布的政府标准;
- 将我们的方法开源。
从招聘广告中提取技能 了解职业所需技能对政策制定者、地方当局和职业顾问等多个群体都具有重要意义。这些信息使他们能够制定明智的劳动力市场政策,解决地区技能短缺问题或为求职者提供建议。为此,我们开发了一个自定义NLP解决方案,从非结构化的招聘广告中提取技能,并将其映射到官方技能列表。
像欧盟委员会和某机构这样的组织会发布它们自己结构化的技能列表。这些分类体系包含丰富的信息,如技能、技能定义和分类。由于这些分类体系反映了劳动力市场所需求的技能,它们包含了成千上万的标签。它们也会随着时间更新,以反映劳动力市场技能的变化。因此,训练并持续更新一个命名实体识别模型来提取特定的技能标签将是一场标注噩梦。
相反,我们开发了一个自定义NLP解决方案来预测通用实体,并添加了一个自定义映射步骤来处理不同的官方分类体系。我们的方法使用spaCy流水线和Prodigy进行高效标注、模型训练、质量控制和评估。
从非结构化招聘广告到结构化技能列表 我们开发的端到端工作流程首先从在线招聘广告中识别技能、多技能和经验的提及。在第一步中,我们手动标注了375个示例来训练spaCy的NER模型。作为标注过程的一部分,团队共同标注了少量招聘广告,以了解任务并讨论出现的边缘情况。这种方法使我们能够注意到经常提到的、不易分离的多技能。例如,"开发可视化和应用程序"这一技能实际上是两个技能:"开发可视化"和"开发应用程序"。然而,纯粹的现成NER方法无法很好地分离提到的技能实体。
因此,第二步旨在将多技能实体拆分为其组成技能。我们训练了一个简单的二分类器,通过使用标注了技能和多技能实体的训练集来预测技能是否是多技能。特征包括实体的长度、实体中是否包含"and"标记的布尔值以及实体中是否包含","标记的布尔值。如果实体是多技能,我们使用spaCy的依存句法分析,基于一系列语言规则进行拆分,例如在名词短语和"and"标记处进行拆分。
一旦我们获得了提取的技能并分离了多技能,我们构建了一个自定义、灵活的映射步骤,以映射到任何官方分类体系。
自定义技能映射 我们的自定义映射步骤使用语义相似性和给定分类体系的结构来标准化提取的技能。这意味着我们可以利用与技能相关的元数据,如技能定义和类别。
我们嵌入提取的技能和一个分类体系,以计算与每个技能或技能组的余弦相似度。如果余弦相似度超过某个阈值,我们直接映射到技能级别。如果低于某个阈值,则计算技能组内技能的最大共享度和最大余弦相似度。
例如,"数学"这一技能可能过于模糊,无法映射到具体的技能级别,但它可以很好地映射到技能组"自然科学、数学和统计学"下的多个相似技能,如"数学哲学"和"使用数学工具和设备"。在这种情况下,相似技能的占比超过某个阈值,我们就能将"数学"分配到适当的技能组。我们会在给定的分类体系中向上追溯,直到能够将足够宽泛的技能组 confidently 分配给给定实体。
为了使这个工作流程尽可能易于访问,我们将Nesta迄今为止最受欢迎的GitHub仓库作为一个Python库发布,以便最终用户能够:
- 从招聘广告中提取技能和经验;
- 将技能映射到预配置的分类体系。
自去年初首次发布以来,我们使用Prodigy重新训练了工作流程第一步中使用的NER模型。Prodigy是一个现代化的数据开发和标注工具,用于为人在回路机器学习创建训练和评估数据,它提供了一个完全可脚本化的后端和一个用于标注的Web应用程序。
我们利用Prodigy的主动学习功能,使用初始模型快速标注额外的技能、多技能和经验提及。在标注过程中,我们能够识别出其他可能对分析有价值的类别,包括工作福利。通过一个终端命令,我们标注了更多数据来重新训练我们的技能NER模型,并开始提取一个新的类别"福利"。
我们的Prodigy自定义标注体验
结果与评估 我们评估了工作流程的每个组件以及整个工作流程。对于NER模型,我们使用了nervaluate,一个用于评估NER的Python模块,它可以处理部分匹配的情况。
轻量级NER模型达到了68%的精确率和52%的召回率。同时,多技能分类器达到了91%的准确率。
对于整体的技能提取,我们手动标注了一个包含171个提取技能的随机样本,认为75%提取得很好,19%提取得相当好。最后,对于整体的技能映射,我们认为64%很好地匹配到了标准化技能,27%匹配得相当好。
尽管NER模型的精确率看起来不是很高,但部分匹配对我们的目的仍然有用。例如,如果模型预测"Excel"为一项技能,而不是"Microsoft Excel",它仍然可以有效地映射到适当的标准技能。对于提取的技能可能缺少适当动词的情况也是如此,例如"工业卡车"而不是"驾驶工业卡车"。
我们端到端工作流程的优势包括:
- 我们可以提取以前未见过的技能。例如,尽管ESCO分类体系不包含编程技能"React",但模型能够检测到"React"是一项技能,并将其映射到"使用脚本编程"。
- 该库可以适应您选择的分类体系。我们的库构建方式使得您可以根据需要将技能映射到自定义分类体系。
- 您可以匹配到分类体系的不同级别。当招聘广告提到一个宽泛的技能组而不是具体技能时,这非常方便。
其局限性包括:
- 隐喻:"理解大局"这个短语被匹配到了ESCO技能"解释技术文档和图表"。
- 多技能:我们使用基本的语义规则来拆分多技能句子,但规则还不够完善,无法拆分更复杂的句子。
借助我们的技能流水线和丰富的在线招聘广告数据库,我们能够分析Nesta重点关注领域的技能需求。
例如,我们比较了幼儿专业人士与酒店业类似薪酬职位所需的技能。我们还探讨了英国热泵安装行业当前的技能差距。
未来计划 我们即将发布当前关于在技能、职业和行业层面衡量工作"绿色程度"的工作,这项工作在很大程度上依赖Prodigy灵活的自定义配方来在标注过程中纳入大型语言模型。我们也已启动工作,使我们的一套招聘广告算法尽可能易于访问,允许任何拥有招聘广告的最终用户无缝提取和标准化薪资、职业和福利等信息,其中自定义spaCy流水线和Prodigy将在此过程中发挥核心作用。
这项研究由某统计局作为某研究中心研究项目的一部分资助。某人是该库的共创者。某人提供了项目整体指导。某人构建了收集招聘广告的数据基础设施。
资源
- Prodigy:用于NLP和机器学习的现代化标注工具
- 使用Prodigy进行命名实体识别:文档和工作流程
- 衡量行业绿色程度:关于在行业层面衡量工作绿色程度的博文
- 技能提取器文档:技能提取器Python库的文档
- 技能提取器演示工具:从招聘广告中提取和映射技能的演示工具
- 技能需求分析:关于英国技能需求的交互式分析博客
- 案例研究:我们来自工业界的其他真实案例研究
关于作者 某机构的数据科学家,主要使用自然语言处理和机器学习技术来更好地了解英国劳动力市场。 设计师。FINISHED