引言
假设简历库中有 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)_用朴素贝叶斯进行文本分类 (上) - 龙心尘 - 博客频道 - .NET, 2017-04-10/2017-04-24. [6] 从 Naive Bayes 到 N-gram 语言模型 [EB/OL]. NLP 系列 (5)_从朴素贝叶斯到 N-gram 语言模型 - 龙心尘 - 博客频道 - .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研习社 本文转自雷锋网禁止二次转载, 原文链接