• 甄别简历
    如何用机器学习手段提高HR甄别简历的效率 如何用机器学习手段提高HR甄别简历的效率引言“假设简历库中有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].https://sanwen8.cn/p/4744TBs.html, 2017-04-10/2017-04-24. [2] Library for fast text representation and classification.[EB/OL].https://github.com/facebookresearch/fastText, 2017-04-10/2017-04-24. [3] TEXTGROCERY,更好用的文本分类PYTHON库[EB/OL].http://blog.chedushi.com/archives/11383?utm_source=tuicool&utm_medium=referral, 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].http://blog.csdn.net/longxinchen_ml/article/details/50597149, 2017-04-10/2017-04-24. [6] 从Naive Bayes到N-gram语言模型[EB/OL]. http://blog.csdn.net/longxinchen_ml/article/details/50646528, 2017-04-10/2017-04-24. [7] Bag of Tricks for Efficient Text Classification[EB/OL]. https://wenku.baidu.com/view/32db1350777f5acfa1c7aa00b52acfc789eb9fba.html, 2017-04-10/2017-04-24.  
    甄别简历
    2017年04月28日