引言

假设简历库中有 10000 份名为 “软件工程师” 的简历。 一位 HR 在搜索 “Android 工程师” 时仅关注名称为 “Android 工程师” 的简历,她将遗漏 912 份有可能匹配的简历;如果这位 HR 愿意花时间从头到尾通读每一份 “软件工程师” 的简历,将其中真正从事 Android 研发的简历筛选出来,那么她需要多阅读 9088 份无效的软件工程师简历。假设阅览一份简历需要 15 秒,这项工作将占据她 38 小时。

一、低区分度的简历——隐藏的招聘雷区

搜索和阅读简历占据了招聘的大部分时间。在 HR 搜索或阅读简历时,需要根据简历名称或工作内容对简历类别进行判断,简历类别的 “区分度” 越高,HR 越容易通过搜索定位到对应的简历,也越容易甄别出简历与空缺岗位的匹配度。

例如,HR 在招聘一名 “Android 工程师” 时,非常喜欢那些在职位名称为 “Android 工程师” 的简历,因为可以很方便地搜索和识别。这部分简历可以定义为高区分度简历。

可令人头疼的是,许多候选人的简历并未照顾到招聘者的使用体验。例如一名软件工程师在他的简历中提到了多项编程技能,并将简历名称定为 “软件工程师”,给系统搜索定位到这份简历造成了极大的难度。这就意味着:由于 JD 的编写方式与候选人编写简历方式的天然差异,大量履历匹配的简历在搜索时被遗漏,许多工作内容里包含这些关键字的简历(比如招聘专员)实际却又毫不相关。

二、大量的低区分度简历增加了甄别难度

我们从简历库中抽样了 1479818 份互联网行业中包含 “工程师” 的简历数据,按简历名称进行统计,从高到低排序后截取 Top15 展示如下:

<图 1 - 高频职位名称统计数据>

由统计数据可以看出,类别区分度低的简历在整体简历数据中占比较大。例如互联网行业中包含大量 “软件工程师”、“高级软件工程师”、“软件研发工程师”、“研发工程师” 简历,占抽样总数的 25.7%,但这部分简历却无法轻易判断候选人对应的技术方向。

实际上,Java 工程师、PHP 工程师、后端开发工程师等均可称为软件工程师。有众多 Title 为 “软件工程师” 的简历,需要根据职位或工作描述进一步判断具体类别。

例如对简历进行搜索时,输入 “Python 工程师”,简历名称中含 Python 的简历可能较少,导致搜索结果数量丰富度不高。但如果通过模型可以判断简历名称为软件工程的具体角色,增强简历的区分度,则可在软件工程师的简历中筛选属于 Python 工程师的简历,进一步提高搜索的丰富度。

三、通过机器学习方法提高角色识别的准确度

1、建立合理的职位理解
增强简历的区分度,可以理解为 “如何更准确地理解职位,包括职位的不同表达方式,以及与该职位相关的技能模型”——这件事可以基于一张专业词表完成。

例如我们定义一个简单的词表——“软件工程师” 为一级类别,其下属二级技能类别分为 Java、C++、PHP、.NET、Python、Delphi、Perl 等。这张词表定义了明确的职位 / 技能关系,当词表在 “阅读” 一份名为 “软件工程师” 的简历时,它实际阅读的是上述技能。

聘宝的知识图谱更为复杂,除技能分支外,还包含行业、公司等众多维度。

<图 2 - 聘宝的职位技能知识图谱节选>

2、如何进行高效的角色分类识别计算
深度学习方法近期在文本处理领域大受欢迎,但需要注意的是它们的训练以及测试过程十分缓慢,以至于工程应用时门槛颇高。

在进行了一系列的技术方案调研与比较后,我们尝试对比分析了三种机器学习的文本分类算法: TextGrocery,fastText,Naive Bayes。

  • TextGrocery—是一个基于 LibShortText 和结巴分词的短文本分类工具,基于线性核 SVM 分类器,使用二元分词(Bigram),不去停顿词,不做词性过滤同时支持中文和英文语料,让文本分类变得简单。

  • fastText—由 FAIR(Facebook AI)开发的一款快速文本分类器,提供简单而高效的文本分类和表征学习的方法,出自 Word2Vec 作者 Mikolov 的论文《Bag of Tricks for Efficient Text Classification》
    fastText 适合大型数据 + 高效的训练速度,能够训练模型 “在使用标准多核 CPU 的情况下 10 分钟内处理超过 10 亿个词汇”,与深度模型对比,fastText 能将训练时间由数天缩短到几秒钟。FastText 的性能要比时下流行的 word2vec 工具明显好上不少,也比其他目前最先进的词态词汇表征要好。


    <图 3-fastText 分类器模型示意图>

    <图 4-fastText 模型架构>

  • Naive Bayes——由贝叶斯定理延伸而来的概率模型,它根据每个特征的概率确定一个对象属于某一类别的概率。该方法假设所有特征需要相互独立,即任一特征的值和其他特征的值没有关联关系。

在自然语言处理领域,处理的的数据可以看做是在文本文档中标注数据,这些数据可以作为训练数据集来使用机器学习算法进行训练。

在训练样本时,构建可以表征文本的特征向量 (词汇表),并根据这个特征向量将训练集表征出来,计算各个类别的频率作为该类的先验概率,和在每个类别条件下各个特征属性的条件概率,分类时,根据贝叶斯公式计算待分类句子在每一类别的后验概率,取最大值作为其分类。

<图 5-Naïve Bayes 模型架构>

四、一个简单的分类识别实验

为更好地分析不同技术手段在增强简历区分度上的效果,我们进行了一项简单的比较实验,来展现算法是如何把低区分度的简历如 “软件工程师” 进行具体的技能方向分类的。
1、实验数据集的准备:

选取 680731 份根据职位名称判断属于二级类别的工程师简历数据,随机抽样取 80% 的数据做训练数据,剩余 20% 份作测试数据。

<图 6 - 实验数据集的分布>

2、实验效果表现:

通过实验我们发现,通过机器学习方法,我们能够快速识别低区分度简历并进行准确的分类,从而能够极大的降低人工搜索与阅读的时间。

<图 7 - 各个类别预测准确率的分布>

对比上面模型结果, fastText 模型基于词袋的针对英文的文本分类方法,组成英文句子的单词是有间隔的;而中文文本是连续的,因此对中文文本,则需分词去标点转化为模型所需要的数据格式,但分类效果一般,尤其是类别间区分度不是很大的情况下。另外参数调优对模型结果影响较大,但模型优势在于训练时间很短。所以 fastText 模型更适合做类别区分度更大且讲究分类效率的应用场景,比如将一则新闻自动划归到财经、军事、社会、娱乐等板块。

TextGrocery 模型是专门针对短文本的分类模型,直接输入文本,无需做特征向量化的预处理,不去停顿词,不做词性过滤,优雅的 API 接口,但模型准确率和模型训练时间在此角色预测模型中不是太突出。

Naive Bayes 为传统的文本分类模型,特征向量化的预处理相对繁琐、训练时间较长,但在分类类别多文本区分度不大的情况下,分类效果相比其他两种算法更为优秀。这个实验结果侧面说明,在产品实现时勿过度追求 “时髦” 的技术。对某一项特定业务来说,有助于业务实现更优效果的技术就是最好的技术。

聘宝在面对低区分度简历时的角色识别算法,吸收结合了上述各类算法的特点,面对不同场景条件时搭配应用,实现了更优的分类效果,在 TMT 行业主要职位类型上的识别准确率高于 75%。

以 “软件工程师” 为例子,在聘宝中输入属于软件工程师的职位描述,预测出可能的角色,效果如下图:

<图 8 - 聘宝角色识别效果示例>

对于其他行业低区分度的简历,同样可以训练出对应的模型。如果单个行业预测类别不用过细的话,可以将众多行业数据混合一起训练模型进行预测。

基于该实验的样本数据,假设简历库中有 1 万份名为 “软件工程师” 的简历。 一位 HR 在搜索 “Android 工程师” 时仅关注简历名称为 “Android 工程师” 的简历,她将遗漏 912 份有可能匹配的简历——这些简历均被冠以 “软件工程师” 的职位名称;如果这位 HR 愿意花时间从头到尾通读每一份 “软件工程师” 的简历,将其中真正从事 Android 研发工作的简历筛选出来,那么她需要多阅读 9088 份无效的软件工程师简历,假设阅览一份简历需要 15 秒,这项工作将占据她 38 小时。

角色识别除了在简历检索方面的应用,在其他方面也有广泛的应用空间。 如薪资预测, 根据工作描述预测角色作为特征变量,将有助于提高预测薪资的准确性。

又例如简历解析, 将简历详情页的各个区块作为文本,预测各区块所属的信息类型(如工作经验、教育经历等)后再使用对应的解析程序对区块进行解析,将大大提高简历详情页面的解析效率。

我们始终相信技术可以提高工作效率,也正因此我们在简历的分析与匹配工作上持续深耕三年,相信在机器学习技术的帮助下,HR 的招聘工作将变得更加省时高效。

参考文献:

[1] 超快的 fastText[EB/OL]. 超快的 fastText, 2017-04-10/2017-04-24.
[2] Library for fast text representation and classification.[EB/OL].facebookresearch/fastText, 2017-04-10/2017-04-24.
[3] TEXTGROCERY,更好用的文本分类 PYTHON 库 [EB/OL]. 岭南六少 - 一朵在 LAMP 架构下挣扎的云, 2017-04-10/2017-04-24.
[4] LibShortText 简要入门 [EB/OL].http://guoze.me/2014/09/25/libshorttext-introduction/, 2017-04-10/2017-04-24.
[5] NLP 系列 (2)_用 Naive Bayes 进行文本分类 (上)[EB/OL].NLP 系列 (2)_用朴素贝叶斯进行文本分类 (上) - 龙心尘 - 博客频道 - CSDN.NET, 2017-04-10/2017-04-24.
[6] 从 Naive Bayes 到 N-gram 语言模型 [EB/OL]. NLP 系列 (5)_从朴素贝叶斯到 N-gram 语言模型 - 龙心尘 - 博客频道 - CSDN.NET, 2017-04-10/2017-04-24.
[7] Bag of Tricks for Efficient Text Classification[EB/OL]. Bag of Tricks for Efficient Text Classification, 2017-04-10/2017-04-24.

====================================分割线================================
本文作者:AI研习社
本文转自雷锋网禁止二次转载,原文链接

我是如何用机器学习技术帮助 HR 省时间的相关推荐

  1. 我是怎么用机器学习技术找到女票的

    机器学习在我们生活中的用处有多大,就不用我们多说了,大到医疗诊断,小到手机应用,机器学习都应用的风风火火.但是用机器学习帮自己在学校找对象,你听说过吗? 最近滑铁卢大学一位叫 Bai Li 的留学生( ...

  2. 我是如何用最简单的前端技术揭示那些灰色产业背后的原理

    点击关注下方卡片关注我???????? 回复"程序员"查阅 程序员那些趣事 来源:EnoYao https://juejin.cn/post/6903204191318048775 ...

  3. 用python做通讯录包括姓名地址qq_我是如何用Python获取整个学校女生电话和QQ?技术撩妹...

    前言: 这个没什么技术难度,懂爬虫的人和程序员都可以用学的语言写出来 只是很多安全问题的存在,的确影响着我们的生活, 希望大家可以认识到一些网站的后台密码的规则与自己的安全性 简单的说,就是是程序员的 ...

  4. CCAI 2017 | 德国DFKI科技总监Hans Uszkoreit:如何用机器学习和知识图谱来实现商业智能化? 原2017.07.25AI科技大本营 文/CSDN大琦 7 月22 - 2

    CCAI 2017 | 德国DFKI科技总监Hans Uszkoreit:如何用机器学习和知识图谱来实现商业智能化? 原2017.07.25AI科技大本营 文/CSDN大琦 7 月22 - 23 日, ...

  5. 我是这样入门“机器学习”的

    我是这样入门"机器学习"的 叶锦鲤发表于悦思悦读订阅 原文链接:https://cloud.tencent.com/developer/article/1357704 在这篇文章中 ...

  6. 基于R语言的Meta分析【全流程、不确定性分析】方法与Meta机器学习技术应用

    Meta分析是针对某一科研问题,根据明确的搜索策略.选择筛选文献标准.采用严格的评价方法,对来源不同的研究成果进行收集.合并及定量统计分析的方法,最早出现于"循证医学",现已广泛应 ...

  7. 白杨SEO:我是如何用SEO流量思维在生财有术拉新进入分销TOP 50?【实战案例】

    前言:这是白杨SEO公众号原创第259篇分享.之所以写出来,一是因为之前在自己公众号和白杨-生财有术预约群提过要写出来分享,二是因为上周三晚上直播分享了这个邀请复盘,但讲得不详细,所以以文字形式写出来 ...

  8. 清华系创企RealAI:独家“隐私保护机器学习”技术,全球首款编译级产品

    原创:谭婧   以侵犯隐私的方式处理数据,已属非法行为,违法必究,犯罪分子,瑟瑟发抖. 但数据,作为人工智能(AI)的"石油",不能简单粗暴一刀切,如何加高数据安全的"围 ...

  9. 我是如何用10分钟成本在互联网上挣到第一个1000块的?

    咪哥杂谈 本篇阅读时间约为 8 分钟. 1 前言 Hello,everyone! 感觉今年的时间过得真快,也不知道是不是疫情带的节奏,转眼都已经到了 11 月份了. 今年,可以说是自己在互联网上尝试项 ...

最新文章

  1. ruby on rails 学习笔记
  2. NYOJ 665 台球碰撞
  3. 将 app 打包成 deb 发布安装
  4. asp.net core 中间件详解及项目实战
  5. oracle网卡,Oracle_bond网卡配置
  6. Oracle 创建磁盘组报错ORA-15137的问题分析与解决思路
  7. java list 在头部添加6_【Java提高十六】集合List接口详解
  8. 小工厂规章制度_小工厂的规章制度(共8篇).doc
  9. Spring-@Value
  10. 工欲善其事必先利其器——dreamweaver
  11. ECMAScript 学习笔记03
  12. 基于STM32构建EtherCAT主站(SOEM方案)2
  13. # c++万能头文件
  14. NODE.JS对接验证码短信接口DEMO示例
  15. 大上显示器,你的护眼利器
  16. 【聚沙成塔】-MYSQL全文索引使用MATCH AGAINST
  17. 一名2012计算机应届毕业生的求职之路
  18. css3学习以及移动端开发基本概念的思考
  19. 互联网快讯:微软官宣加入JCP计划;极米投影产品双十一持续热销;俞敏洪将带百名老师直播带货卖农产品
  20. 如何通俗的理解beam search?

热门文章

  1. 2021佛山市地区高考成绩排名查询,佛山市高中排名分数线,佛山高中排名2021最新排名...
  2. python append 浮点数 精度_Python打牢基础,从12个语法开始!
  3. 2021-06-04
  4. python menu实例_Python高级进阶#019 pyqt5菜单menu应用,新建多窗体
  5. pyqt5教程11:绘制外观
  6. 微信小程序购物车 数量加减功能
  7. 2021-03-31 Matlab simulink 模糊PID在无刷直流电机中的应用
  8. vsc系统是什么意思_电脑蓝屏是什么意思?蓝屏就一定要重装系统吗?你可不要弄错了...
  9. c语言for循环语句java,C语言三种类型的循环语句
  10. 移动端像素概念,viewport,适配