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