我是如何用機(jī)器學(xué)習(xí)技術(shù)幫助HR省時(shí)間的
引言
假設(shè)簡(jiǎn)歷庫(kù)中有 10000 份名為 “軟件工程師” 的簡(jiǎn)歷。 一位 HR 在搜索 “Android 工程師” 時(shí)僅關(guān)注名稱為 “Android 工程師” 的簡(jiǎn)歷,她將遺漏 912 份有可能匹配的簡(jiǎn)歷;如果這位 HR 愿意花時(shí)間從頭到尾通讀每一份 “軟件工程師” 的簡(jiǎn)歷,將其中真正從事 Android 研發(fā)的簡(jiǎn)歷篩選出來(lái),那么她需要多閱讀 9088 份無(wú)效的軟件工程師簡(jiǎn)歷。假設(shè)閱覽一份簡(jiǎn)歷需要 15 秒,這項(xiàng)工作將占據(jù)她 38 小時(shí)。
一、低區(qū)分度的簡(jiǎn)歷——隱藏的招聘雷區(qū)
搜索和閱讀簡(jiǎn)歷占據(jù)了招聘的大部分時(shí)間。在 HR 搜索或閱讀簡(jiǎn)歷時(shí),需要根據(jù)簡(jiǎn)歷名稱或工作內(nèi)容對(duì)簡(jiǎn)歷類別進(jìn)行判斷,簡(jiǎn)歷類別的 “區(qū)分度” 越高,HR 越容易通過(guò)搜索定位到對(duì)應(yīng)的簡(jiǎn)歷,也越容易甄別出簡(jiǎn)歷與空缺崗位的匹配度。
例如,HR 在招聘一名 “Android 工程師” 時(shí),非常喜歡那些在職位名稱為 “Android 工程師” 的簡(jiǎn)歷,因?yàn)榭梢院芊奖愕厮阉骱妥R(shí)別。這部分簡(jiǎn)歷可以定義為高區(qū)分度簡(jiǎn)歷。
可令人頭疼的是,許多候選人的簡(jiǎn)歷并未照顧到招聘者的使用體驗(yàn)。例如一名軟件工程師在他的簡(jiǎn)歷中提到了多項(xiàng)編程技能,并將簡(jiǎn)歷名稱定為 “軟件工程師”,給系統(tǒng)搜索定位到這份簡(jiǎn)歷造成了極大的難度。這就意味著:由于 JD 的編寫(xiě)方式與候選人編寫(xiě)簡(jiǎn)歷方式的天然差異,大量履歷匹配的簡(jiǎn)歷在搜索時(shí)被遺漏,許多工作內(nèi)容里包含這些關(guān)鍵字的簡(jiǎn)歷(比如招聘專員)實(shí)際卻又毫不相關(guān)。
二、大量的低區(qū)分度簡(jiǎn)歷增加了甄別難度
我們從簡(jiǎn)歷庫(kù)中抽樣了 1479818 份互聯(lián)網(wǎng)行業(yè)中包含 “工程師” 的簡(jiǎn)歷數(shù)據(jù),按簡(jiǎn)歷名稱進(jìn)行統(tǒng)計(jì),從高到低排序后截取 Top15 展示如下:
<圖 1 - 高頻職位名稱統(tǒng)計(jì)數(shù)據(jù)>
由統(tǒng)計(jì)數(shù)據(jù)可以看出,類別區(qū)分度低的簡(jiǎn)歷在整體簡(jiǎn)歷數(shù)據(jù)中占比較大。例如互聯(lián)網(wǎng)行業(yè)中包含大量 “軟件工程師”、“高級(jí)軟件工程師”、“軟件研發(fā)工程師”、“研發(fā)工程師” 簡(jiǎn)歷,占抽樣總數(shù)的 25.7%,但這部分簡(jiǎn)歷卻無(wú)法輕易判斷候選人對(duì)應(yīng)的技術(shù)方向。
實(shí)際上,Java 工程師、PHP 工程師、后端開(kāi)發(fā)工程師等均可稱為軟件工程師。有眾多 Title 為 “軟件工程師” 的簡(jiǎn)歷,需要根據(jù)職位或工作描述進(jìn)一步判斷具體類別。
例如對(duì)簡(jiǎn)歷進(jìn)行搜索時(shí),輸入 “Python 工程師”,簡(jiǎn)歷名稱中含 Python 的簡(jiǎn)歷可能較少,導(dǎo)致搜索結(jié)果數(shù)量豐富度不高。但如果通過(guò)模型可以判斷簡(jiǎn)歷名稱為軟件工程的具體角色,增強(qiáng)簡(jiǎn)歷的區(qū)分度,則可在軟件工程師的簡(jiǎn)歷中篩選屬于 Python 工程師的簡(jiǎn)歷,進(jìn)一步提高搜索的豐富度。
三、通過(guò)機(jī)器學(xué)習(xí)方法提高角色識(shí)別的準(zhǔn)確度
1、建立合理的職位理解
增強(qiáng)簡(jiǎn)歷的區(qū)分度,可以理解為 “如何更準(zhǔn)確地理解職位,包括職位的不同表達(dá)方式,以及與該職位相關(guān)的技能模型”——這件事可以基于一張專業(yè)詞表完成。
例如我們定義一個(gè)簡(jiǎn)單的詞表——“軟件工程師” 為一級(jí)類別,其下屬二級(jí)技能類別分為 Java、C++、PHP、.NET、Python、Delphi、Perl 等。這張?jiān)~表定義了明確的職位 / 技能關(guān)系,當(dāng)詞表在 “閱讀” 一份名為 “軟件工程師” 的簡(jiǎn)歷時(shí),它實(shí)際閱讀的是上述技能。
聘寶的知識(shí)圖譜更為復(fù)雜,除技能分支外,還包含行業(yè)、公司等眾多維度。
<圖 2 - 聘寶的職位技能知識(shí)圖譜節(jié)選>
2、如何進(jìn)行高效的角色分類識(shí)別計(jì)算
深度學(xué)習(xí)方法近期在文本處理領(lǐng)域大受歡迎,但需要注意的是它們的訓(xùn)練以及測(cè)試過(guò)程十分緩慢,以至于工程應(yīng)用時(shí)門檻頗高。
在進(jìn)行了一系列的技術(shù)方案調(diào)研與比較后,我們嘗試對(duì)比分析了三種機(jī)器學(xué)習(xí)的文本分類算法: TextGrocery,fastText,Naive Bayes。
TextGrocery—是一個(gè)基于 LibShortText 和結(jié)巴分詞的短文本分類工具,基于線性核 SVM 分類器,使用二元分詞(Bigram),不去停頓詞,不做詞性過(guò)濾同時(shí)支持中文和英文語(yǔ)料,讓文本分類變得簡(jiǎn)單。
fastText—由 FAIR(Facebook AI)開(kāi)發(fā)的一款快速文本分類器,提供簡(jiǎn)單而高效的文本分類和表征學(xué)習(xí)的方法,出自 Word2Vec 作者 Mikolov 的論文《Bag of Tricks for Efficient Text Classification》
fastText 適合大型數(shù)據(jù) + 高效的訓(xùn)練速度,能夠訓(xùn)練模型 “在使用標(biāo)準(zhǔn)多核 CPU 的情況下 10 分鐘內(nèi)處理超過(guò) 10 億個(gè)詞匯”,與深度模型對(duì)比,fastText 能將訓(xùn)練時(shí)間由數(shù)天縮短到幾秒鐘。FastText 的性能要比時(shí)下流行的 word2vec 工具明顯好上不少,也比其他目前最先進(jìn)的詞態(tài)詞匯表征要好。
Naive Bayes——由貝葉斯定理延伸而來(lái)的概率模型,它根據(jù)每個(gè)特征的概率確定一個(gè)對(duì)象屬于某一類別的概率。該方法假設(shè)所有特征需要相互獨(dú)立,即任一特征的值和其他特征的值沒(méi)有關(guān)聯(lián)關(guān)系。
在自然語(yǔ)言處理領(lǐng)域,處理的的數(shù)據(jù)可以看做是在文本文檔中標(biāo)注數(shù)據(jù),這些數(shù)據(jù)可以作為訓(xùn)練數(shù)據(jù)集來(lái)使用機(jī)器學(xué)習(xí)算法進(jìn)行訓(xùn)練。
在訓(xùn)練樣本時(shí),構(gòu)建可以表征文本的特征向量 (詞匯表),并根據(jù)這個(gè)特征向量將訓(xùn)練集表征出來(lái),計(jì)算各個(gè)類別的頻率作為該類的先驗(yàn)概率,和在每個(gè)類別條件下各個(gè)特征屬性的條件概率,分類時(shí),根據(jù)貝葉斯公式計(jì)算待分類句子在每一類別的后驗(yàn)概率,取最大值作為其分類。
四、一個(gè)簡(jiǎn)單的分類識(shí)別實(shí)驗(yàn)
為更好地分析不同技術(shù)手段在增強(qiáng)簡(jiǎn)歷區(qū)分度上的效果,我們進(jìn)行了一項(xiàng)簡(jiǎn)單的比較實(shí)驗(yàn),來(lái)展現(xiàn)算法是如何把低區(qū)分度的簡(jiǎn)歷如 “軟件工程師” 進(jìn)行具體的技能方向分類的。
1、實(shí)驗(yàn)數(shù)據(jù)集的準(zhǔn)備:
選取 680731 份根據(jù)職位名稱判斷屬于二級(jí)類別的工程師簡(jiǎn)歷數(shù)據(jù),隨機(jī)抽樣取 80% 的數(shù)據(jù)做訓(xùn)練數(shù)據(jù),剩余 20% 份作測(cè)試數(shù)據(jù)。
2、實(shí)驗(yàn)效果表現(xiàn):
通過(guò)實(shí)驗(yàn)我們發(fā)現(xiàn),通過(guò)機(jī)器學(xué)習(xí)方法,我們能夠快速識(shí)別低區(qū)分度簡(jiǎn)歷并進(jìn)行準(zhǔn)確的分類,從而能夠極大的降低人工搜索與閱讀的時(shí)間。
對(duì)比上面模型結(jié)果, fastText 模型基于詞袋的針對(duì)英文的文本分類方法,組成英文句子的單詞是有間隔的;而中文文本是連續(xù)的,因此對(duì)中文文本,則需分詞去標(biāo)點(diǎn)轉(zhuǎn)化為模型所需要的數(shù)據(jù)格式,但分類效果一般,尤其是類別間區(qū)分度不是很大的情況下。另外參數(shù)調(diào)優(yōu)對(duì)模型結(jié)果影響較大,但模型優(yōu)勢(shì)在于訓(xùn)練時(shí)間很短。所以 fastText 模型更適合做類別區(qū)分度更大且講究分類效率的應(yīng)用場(chǎng)景,比如將一則新聞自動(dòng)劃歸到財(cái)經(jīng)、軍事、社會(huì)、娛樂(lè)等板塊。
TextGrocery 模型是專門針對(duì)短文本的分類模型,直接輸入文本,無(wú)需做特征向量化的預(yù)處理,不去停頓詞,不做詞性過(guò)濾,優(yōu)雅的 API 接口,但模型準(zhǔn)確率和模型訓(xùn)練時(shí)間在此角色預(yù)測(cè)模型中不是太突出。
Naive Bayes 為傳統(tǒng)的文本分類模型,特征向量化的預(yù)處理相對(duì)繁瑣、訓(xùn)練時(shí)間較長(zhǎng),但在分類類別多文本區(qū)分度不大的情況下,分類效果相比其他兩種算法更為優(yōu)秀。這個(gè)實(shí)驗(yàn)結(jié)果側(cè)面說(shuō)明,在產(chǎn)品實(shí)現(xiàn)時(shí)勿過(guò)度追求 “時(shí)髦” 的技術(shù)。對(duì)某一項(xiàng)特定業(yè)務(wù)來(lái)說(shuō),有助于業(yè)務(wù)實(shí)現(xiàn)更優(yōu)效果的技術(shù)就是最好的技術(shù)。
聘寶在面對(duì)低區(qū)分度簡(jiǎn)歷時(shí)的角色識(shí)別算法,吸收結(jié)合了上述各類算法的特點(diǎn),面對(duì)不同場(chǎng)景條件時(shí)搭配應(yīng)用,實(shí)現(xiàn)了更優(yōu)的分類效果,在 TMT 行業(yè)主要職位類型上的識(shí)別準(zhǔn)確率高于 75%。
以 “軟件工程師” 為例子,在聘寶中輸入屬于軟件工程師的職位描述,預(yù)測(cè)出可能的角色,效果如下圖:
對(duì)于其他行業(yè)低區(qū)分度的簡(jiǎn)歷,同樣可以訓(xùn)練出對(duì)應(yīng)的模型。如果單個(gè)行業(yè)預(yù)測(cè)類別不用過(guò)細(xì)的話,可以將眾多行業(yè)數(shù)據(jù)混合一起訓(xùn)練模型進(jìn)行預(yù)測(cè)。
基于該實(shí)驗(yàn)的樣本數(shù)據(jù),假設(shè)簡(jiǎn)歷庫(kù)中有 1 萬(wàn)份名為 “軟件工程師” 的簡(jiǎn)歷。 一位 HR 在搜索 “Android 工程師” 時(shí)僅關(guān)注簡(jiǎn)歷名稱為 “Android 工程師” 的簡(jiǎn)歷,她將遺漏 912 份有可能匹配的簡(jiǎn)歷——這些簡(jiǎn)歷均被冠以 “軟件工程師” 的職位名稱;如果這位 HR 愿意花時(shí)間從頭到尾通讀每一份 “軟件工程師” 的簡(jiǎn)歷,將其中真正從事 Android 研發(fā)工作的簡(jiǎn)歷篩選出來(lái),那么她需要多閱讀 9088 份無(wú)效的軟件工程師簡(jiǎn)歷,假設(shè)閱覽一份簡(jiǎn)歷需要 15 秒,這項(xiàng)工作將占據(jù)她 38 小時(shí)。
角色識(shí)別除了在簡(jiǎn)歷檢索方面的應(yīng)用,在其他方面也有廣泛的應(yīng)用空間。 如薪資預(yù)測(cè), 根據(jù)工作描述預(yù)測(cè)角色作為特征變量,將有助于提高預(yù)測(cè)薪資的準(zhǔn)確性。
又例如簡(jiǎn)歷解析, 將簡(jiǎn)歷詳情頁(yè)的各個(gè)區(qū)塊作為文本,預(yù)測(cè)各區(qū)塊所屬的信息類型(如工作經(jīng)驗(yàn)、教育經(jīng)歷等)后再使用對(duì)應(yīng)的解析程序?qū)^(qū)塊進(jìn)行解析,將大大提高簡(jiǎn)歷詳情頁(yè)面的解析效率。
我們始終相信技術(shù)可以提高工作效率,也正因此我們?cè)诤?jiǎn)歷的分析與匹配工作上持續(xù)深耕三年,相信在機(jī)器學(xué)習(xí)技術(shù)的幫助下,HR 的招聘工作將變得更加省時(shí)高效。
參考文獻(xiàn):
[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 庫(kù) [EB/OL]. 嶺南六少 - 一朵在 LAMP 架構(gòu)下掙扎的云, 2017-04-10/2017-04-24.
[4] LibShortText 簡(jiǎn)要入門 [EB/OL].http://guoze.me/2014/09/25/libshorttext-introduction/, 2017-04-10/2017-04-24.
[5] NLP 系列 (2)_用 Naive Bayes 進(jìn)行文本分類 (上)[EB/OL].NLP 系列 (2)_用樸素貝葉斯進(jìn)行文本分類 (上) - 龍心塵 - 博客頻道 - CSDN.NET, 2017-04-10/2017-04-24.
[6] 從 Naive Bayes 到 N-gram 語(yǔ)言模型 [EB/OL]. NLP 系列 (5)_從樸素貝葉斯到 N-gram 語(yǔ)言模型 - 龍心塵 - 博客頻道 - 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.