Technology:如何用 NLP 從數據中找到改善招聘廣告效果的方法
前言
招聘 IT 人才是一件困難的事。根據多年的經驗,刊登一個招聘廣告往往只會收到少量的求職信。不論是在香港還是台灣的情況也是一樣。身邊認識的 IT 界老闆們也遇著相同的情況。看來要吸引在 IT 界的人才,需要花多一點心思。
收集數據
Fimmick 在台灣 104 人力銀行刊登招聘廣告的初期也遇到應徵者少的問題。那時我們想要改善這個情況。在研究過後,發現到一條傳回 JSON 數據的 API。裡面的訊息很豐富:
其中的 applyCnt 值很吸引,那是代表廣告有多少人申請過。公司在新店區,地點算是偏僻的區域,原本以為這個是求職量少的原因。可是,從 applyCnt 看新店區的其他工作,同樣是「前端工程師」,別人的有 25 人申請;我們只得 3 人。有趣的是別人提供的工資是 NT$32000-$60000;我們卻是 NT$40000-$60000,絕對不比別人少。大家可能認為別家是大公司吧,然而她只是一般的小公司。在客觀條件也差不多的情況下,看來是廣告中的內容不夠吸引。為了証明這一點,我們再拿其他 applyCnt 大於 10 的記錄來對比,發現這些廣告都是以要點形式寫成,並且不多於 6 點。按照這個發現把招聘廣告修改後,收到 12 份申請。雖然未能像別人一樣超過 20 份申請,效果的確有所提升。
最近 Fimmick 在招聘「Analyst Programmer」,有了台灣經驗,我們希望能在香港的 JobsDB 上應用。不過,她沒有像 104 的 API,也沒有開放申請數字,於是我們嘗試另一種方法:我們假設廣告內容是最影響申請的因素,在沒有申請數字的情況下,決定從所有相同職位的廣告內容中,找出最多公司選用的片語,看看能否對撰寫招聘廣告有所幫助。那麼,內容是怎樣得來?既然沒有 JSON,那就只能在網頁代碼中擷取回來。
分析
最後方的數字是頁數。如此的話,只要編寫一個迴圈程序,把頁數加進去就能下載相關頁面內容。得到的 HTML 碼中不難發現廣告內容是以 JSON 形式儲存。因此,可以利用 Regular Expression 或 substring 方法把 JSON 內容裁剪出來並放入 $jsonText,然後進行解釋:
$textArray = array(); $json = json_decode($jsonText, true); $jobArray = $json[“result”][“jobs”]; foreach ($jobArray as $jobDictionary) { $sellingPoints = $jobDictionary[“sellingPoints”]; $textArray = array_merge($textArray, $sellingPoints); }
現在,所有賣點文字一行一行地儲存在 $textArray。把它們變成一條長字串,輸入到「結巴分詞」(https://github.com/fxsjy/jieba) 中便能得到結果。以下程式是列出首 30 個最高分的片語:
require_once(“./vendor/autoload.php”); use Fukuball\Jieba\Jieba; use Fukuball\Jieba\Finalseg; use Fukuball\Jieba\JiebaAnalyse; Jieba::init(); Finalseg::init(); JiebaAnalyse::init(); $content = implode(” “, $textArray); $wordDictionary = JiebaAnalyse::extractTags($content, 30); var_dump($wordDictionary); require_once(“./vendor/autoload.php”); use Fukuball\Jieba\Jieba; use Fukuball\Jieba\Finalseg; use Fukuball\Jieba\JiebaAnalyse; Jieba::init(); Finalseg::init(); JiebaAnalyse::init(); $content = implode(” “, $textArray); $wordDictionary = JiebaAnalyse::extractTags($content, 30); var_dump($wordDictionary);
得到的結果是:
“Analyst Programmer” Result: Array( [development] => 0.35149594095426 [experience] => 0.30983716276709 [work] => 0.28119675276341 [system] => 0.25255634275973 [java] => 0.24734899548633 [years] => 0.1484093972918 [web] => 0.14059837638171 [days] => 0.13669286592666 [good] => 0.13018368183491 [working] => 0.12888184501656 [application] => 0.12888184501656 [.net] => 0.11456164001472 [computer] => 0.11195796637802 [c#] => 0.11065612955968 [programmer] => 0.11065612955968 [degree] => 0.10805245592298 [sql] => 0.10805245592298 [science] => 0.10675061910463 [project] => 0.10284510864958 [day] => 0.095034087739486 [analyst] => 0.092430414102788 [attractive] => 0.087223066829391 [package] => 0.083317556374344 [design] => 0.078110209100947 [javascript] => 0.075506535464249 [career] => 0.072902861827551 [diploma] => 0.070299188190853 [oracle] => 0.068997351372504 [programming] => 0.067695514554154 [software] => 0.067695514554154 )
想像得出內容大多是學歷在 Diploma 以上,有多年工佢經驗,從事網頁應用的開發,開及平台為 .Net,語言為 Java 及 C#。
總結
利用數據分析能改善招聘廣告內容的吸引度。它雖然未必能大幅度提升效能,但卻是一個不錯的選擇。對於初學者而言,是一個學習應用 NLP 的入門例子。把它加以改善,應用在不同的場合,便能提升編程投術,增強競爭力。Fimmick 目前在香港及台灣招聘編程人才,有興趣的讀者不妨過來了解一下。
希望以上的內容對你有幫助。如果你對我們的服務感興趣,歡迎與我們聯絡!大家亦可留意我們的 Facebook 和 Instagram 以獲得更多關於營銷及開發方面的資訊。