姜永成
(黔南民族職業(yè)技術學院 貴州 都勻 558000)
當前,社會高速發(fā)展,已然從IT 時代走向DT 時代。在此背景下,國外與國內(nèi)企業(yè)相繼開展人才爭奪戰(zhàn),如今人才已成為了最緊缺資源之一,企業(yè)為了吸引人才、用好人才、留住人才,采取了一系列措施。在信息化網(wǎng)絡快速發(fā)展的今天,以往傳統(tǒng)的招聘方式已經(jīng)不適應當今企業(yè)對人才招聘的需求。網(wǎng)絡招聘由于具有覆蓋范圍廣、成本低、信息傳播速度快以及信息甄別優(yōu)等特點受到廣大企業(yè)的追捧,已經(jīng)成為當下主流的招聘方式。
軟件研發(fā)由多個部分構成,需求分析是非常重要的部分,是在調(diào)查研究、分析和與用戶交流之后對軟件具體需求有全面的掌握,再將具體需求制定成規(guī)范性的、清晰完整的需求文檔,對系統(tǒng)性能與功能等方面的要求進行確定。系統(tǒng)需求分析也可以稱為軟件需求分析或者需求分析工程等。本文首先進行調(diào)研分析,并以網(wǎng)絡招聘具體情況和需求為基礎,完成系統(tǒng)功能性需求的明確,具體包含數(shù)據(jù)獲取、導入、處理、分析和可視化5個模塊。在開發(fā)網(wǎng)絡招聘數(shù)據(jù)可視化分析系統(tǒng)之前,開發(fā)相關人員需要對系統(tǒng)進行詳細的調(diào)研,首先需要確定開發(fā)系統(tǒng)的可行性,本文主要從推廣可行性、經(jīng)濟可行性、技術可行性、應用可行性等方面介紹該系統(tǒng)的可行性。
本文研發(fā)的系統(tǒng)運用的架構為B/S 架構,研發(fā)平臺為Pycharm,語言選擇Python,框架選擇Django,同時利用AdminLTE 框架完成前臺頁面的設計與實現(xiàn),該框架是以JQuery 與Bootstrap3 為基礎的。因為數(shù)據(jù)處理與分析任務量非常大,Python 內(nèi)部含有的類庫是非常多的,并且高級數(shù)據(jù)結構也非常齊全,框架成熟度也較高,使數(shù)據(jù)處理與分析更加便捷。因此本課題研發(fā)的系統(tǒng)選擇的編程語言為Python,Pycharm將Python研發(fā)需要的特性和工具進行集成,對于Web 研發(fā)框架給予更好的支持。數(shù)據(jù)分析結果基本上是通過直觀的圖標形式進行展現(xiàn),因此系統(tǒng)還需要對ECharts圖表庫進行運用。對于獲取和分析數(shù)據(jù)等功能模塊生成的文件在存儲時基本上是以Excel 和CSV 為最主要的形式,CSV 可看作簡易的Excel。數(shù)據(jù)儲存格式為CSV,讀取和寫入都更加便捷,而且實現(xiàn)起來難度也很小,與Excel文件相比占用空間更小。
該功能模塊是指利用Scrapy框架完成爬蟲程序?qū)ΛC聘網(wǎng)和前程無憂兩個招聘網(wǎng)站的職位數(shù)據(jù)進行爬取。數(shù)據(jù)爬取以前利用瀏覽器對這兩個招聘網(wǎng)站進行訪問,使用鼠標點擊頁面中的統(tǒng)一資源定位器(Uniform Resource Locator,URL)等信息,對訪問地址URL的改變情況進行觀看,同時對最后要訪問的URL和爬蟲程序結束條件進行確定,接下來將要訪問的URL在爬蟲程序內(nèi)部動態(tài)構建,同時對其結束條件進行設置,使爬蟲程序能夠及時停止。將請求發(fā)送給URL,獲取到URL 反饋結果后完成HTML 分析,借助Xpath 解析庫將可視化分析系統(tǒng)需要的信息進行解析并將其保存到csv 文件或直接保存到mysql 數(shù)據(jù)庫中,提取數(shù)據(jù)以職位ID、地區(qū)、企業(yè)名稱、學歷、經(jīng)驗、職位描述以及薪資福利等為主,可以在網(wǎng)頁信息解析過程中完成職位描述的url 的動態(tài)構建,接下來對職位描述頁面url 繼續(xù)訪問,進而將職位描述信息進行獲取。
數(shù)據(jù)導入功能是將招聘數(shù)據(jù)文件導入系統(tǒng)中便于后續(xù)的數(shù)據(jù)處理與數(shù)據(jù)分析,也使系統(tǒng)能夠在數(shù)據(jù)發(fā)生改變時及時將最新數(shù)據(jù)向系統(tǒng)進行導入,從而保證分析結果的時效性。數(shù)據(jù)導入功能是由數(shù)據(jù)與模板的下載與數(shù)據(jù)上傳構成的。系統(tǒng)頁面中有文件選擇的按鈕,通過該按鈕可以將所需文件進行上傳,待確定上傳之后還需要根據(jù)系統(tǒng)中提供的模板文件將已經(jīng)傳遞給系統(tǒng)的文件與其匹配格式,對傳遞給系統(tǒng)的文件是否具有正確格式進行確定。本系統(tǒng)數(shù)據(jù)庫管理系統(tǒng)選擇MySQL關系型數(shù)據(jù)庫,MySQL屬于開源的數(shù)據(jù)庫,使用成本較低,并且開發(fā)人員對MySQL數(shù)據(jù)庫比較易于入手。其中招聘崗位信息表記錄著崗位的信息,主要包括崗位記錄編號ID、崗位名稱、最高工資、最低工資、崗位所在城市、公司名稱等12個數(shù)據(jù)項。
可視化分析是以數(shù)據(jù)處理為基礎的,數(shù)據(jù)分析通過Python展開分析的過程中,如果與數(shù)據(jù)庫直接相連,就將所需模塊導進Python中即可。不過由于獲取到的部分數(shù)據(jù)中存在很多問題,如噪聲、完整性不好、一致性不高、重復和遺失等,若不進行處理就進行可視化分析,分析結果必然會受到很大程度的影響。因此,需要利用Python 內(nèi)部的pandas 庫將數(shù)據(jù)庫內(nèi)部的信息向DataFrames寫入,以實現(xiàn)數(shù)據(jù)清洗,完成清洗處理以后再展開可視化分析。
2.4.1 中文分詞
在對獲取的數(shù)據(jù)集進行分析時,可以采用分詞、去停用詞等方式對非結構化的招聘信息文本進行處理。本文選用的中文文本分詞工具為jieba,jieba 是中文自然語言處理分詞庫,具有實用性強、使用簡單等特點,是一種概率語言分詞模型。最大概率路徑的查詢是通過動態(tài)規(guī)劃來獲取的,保證以詞頻為基礎的最大切分組合能夠順利獲取到。Jieba對全模式、精確模式和搜索引擎模式支持,并且繁體分詞與自定義詞典也都支持[1]。基于向環(huán)形圖(DAG)式,那些在字段里沒有查詢到的字段組成新的短語,即“未登錄詞”,然后通過隱馬爾科夫模型(Hidden Markov Model,HMM)分詞精確率得到顯著提升,通過Viterbi 算法使最佳隱藏狀態(tài)序列獲取到。對隱藏變量的馬爾科夫隨機的整個流程進行描述,這個模型要應用到3 個概率矩陣、2 個序列,3個概率矩陣分別為狀態(tài)生成觀測概率矩陣B、狀態(tài)轉移概率矩陣A和初始狀態(tài)概率矩陣π。{0,z,Π,A,B,λ=(Π,A,B)}可表示HMM,其模型可由λ=(Π,A,B)進行決定,Π和A對觀測序列有決定性作用,狀態(tài)序列是由B來決定的。訓練、預測與分詞是HMM的中文分詞的具體步驟。
2.4.2 文本表示
清洗、分詞和清除停用詞之后,數(shù)據(jù)分析還是不能進行,其原因是招聘數(shù)據(jù)是以文本形式表示,而這種文本都屬于非結構化數(shù)據(jù),但算法顯然要求長度固定的數(shù)值特征向量。所以文本數(shù)據(jù)長度并未保持統(tǒng)一,就不能使用算法完成分析。因此要在數(shù)據(jù)原義維持不變的前提下,對其向量化處理以滿足計算機處理要求。本課題研發(fā)的系統(tǒng)選擇以文檔特征向量表示為基礎的向量空間模型實現(xiàn)文本的表示,英文簡稱是VSM,全稱為Vector Space Model。
這里采用TF-IDF作為權重確定的數(shù)值統(tǒng)計方法。該方法原旨在反映單詞對集合或者語料庫中文檔的重要性,在信息檢索、文本挖掘和用戶建模的搜索中常用作加權因子,其值與單詞在文檔中出現(xiàn)的次數(shù)成正比地增加,并被包含該單詞的語料庫中的文檔數(shù)量所抵消[2]。文章賦權特征項是通過TF-IDF 算法完成,文本內(nèi)容中特征項體現(xiàn)越顯著權重越大,反之則權重就更小,這樣使關鍵詞能夠順利抽取出來。該算法基本思想為文本中詞出現(xiàn)頻次越高對應的重要程度就越大,出現(xiàn)頻次越少對應的重要程度越小[3]。
TF(Term Frequency)是指詞頻,用d表示文檔,用t表示特征項,TF是指d中t出現(xiàn)頻率,如果一個詞語ti在文檔dj中出現(xiàn)了ni,j次,那么ti的詞頻可表示為
逆向文件頻率簡稱IDF,可對一個字詞在文檔中普遍重要性衡量,IDF 為文檔總數(shù)乘以全部包含該字詞的文檔總數(shù),然后獲取的結果去對數(shù)后就是該字詞的IDF[4]。對應的計算公式為
式(2)中,分子|D|為指語料庫內(nèi)文章總體數(shù)量,分母表示含有此詞組的文章數(shù)量,通常會將分母進行加1,其目的是保證分母不會等于0,對應公式為
接下來利用下面公式將TF 與IDF 相乘后就能夠得到結果。
提取特征時Document是招聘信息,經(jīng)過分詞處理和清除停用詞后就是Term。接下來計算TF-IDF 并按從大到小排列計算得到的結果,抽取出招聘數(shù)據(jù)中的新的特征詞,并在此前提下利用TF-IDF 加權詞向量,這樣加權詞矩陣就完成建立。
前臺頁面設計與可視化顯示構成可視化模塊,前臺頁面中注冊與登錄功能是非常重要的,任何用戶如果要對招聘信息分析結果進行查看,就要按照網(wǎng)頁提醒完成注冊操作,然后再進行登錄,這種方式能夠使平臺安全得到更好的保證。系統(tǒng)會將分析結果可視化展現(xiàn)給用戶,其中菜單欄主要包括總體信息概覽、Java 職位展示、前端開發(fā)崗位展示、Android崗位展示、數(shù)據(jù)分析工程師崗位展示、C/C++職位展示。
可視化分析系統(tǒng)的研發(fā)使用Python 語言、scrapy框架、Django 框架,為實現(xiàn)研發(fā)效率的提升,研發(fā)環(huán)境中操作系統(tǒng)選擇應用最為普遍且更加熟悉的Windows。Python 中內(nèi)置了Python Shell 和IDE,使程序開發(fā)難度進一步降低。
3.2.1 數(shù)據(jù)獲取
系統(tǒng)需要的數(shù)據(jù)集通過scrapy框架進行獲取,主要收集的內(nèi)容包括學歷要求、薪資福利、工作地區(qū)、崗位名以及企業(yè)名稱等。新建scrapy項目,在項目下新建爬蟲文件。在項目文件中編寫爬蟲文件、items文件、管道文件pipelines,配置settings。
3.2.2 數(shù)據(jù)導入
該模塊負責將數(shù)據(jù)獲取模塊獲取到的數(shù)據(jù)向系統(tǒng)內(nèi)部導入,使后續(xù)數(shù)據(jù)分析工作更加便捷。該模塊的功能包含兩個方面:一為下載模塊,二為上傳數(shù)據(jù)的功能。對于第一個功能來說,就是將數(shù)據(jù)格式文件存儲到保存靜態(tài)文件的data 目錄中來,再在頁面內(nèi)利用標簽提供模板下載的鏈接實現(xiàn)模板下載的功能。該功能通過頁面文件中的input標簽對文件進行選擇,再在Django后臺與模板文件匹配格式。匹配完成以后在upload文件夾中保存相應的文件,為以后數(shù)據(jù)分析和數(shù)據(jù)處理提供依據(jù)。
3.2.3 數(shù)據(jù)處理
得到的數(shù)據(jù)基本上噪聲偏多且規(guī)范性較差,因此要進行重復數(shù)據(jù)、缺失數(shù)據(jù)和異常數(shù)據(jù)的處理。文章對于此類數(shù)據(jù)的處理是通過Python內(nèi)的pandas庫來實現(xiàn)的,處理過程如下。
(1)數(shù)據(jù)提取。創(chuàng)建數(shù)據(jù)庫連接對象,從MYSQ提取db=pymysql.connect(host='localhost',user='root',password='',db='liepindb',charset='utf8')。連接數(shù)據(jù)庫成功后,對數(shù)據(jù)庫中table 數(shù)據(jù)表進行讀?。篸ata=db[collection].find(query)讀取結束以后,通過pandas 庫使數(shù)據(jù)庫內(nèi)部的數(shù)據(jù)向DataFrame 形式進行轉變:df=pd.DataFrame(list(data))。
(2)數(shù)據(jù)去重??梢酝ㄟ^drop_duplicate方法對清除DataFrame格式的重復數(shù)據(jù),再將格式為DataFrame的數(shù)據(jù)進行返回。重復數(shù)據(jù)的清除對應代碼為DataFrame.drop_duplicates(subset=None,keep='first',inplace=False)。
(3)填充數(shù)據(jù)。若數(shù)據(jù)缺失嚴重,完整性很低,就要刪除數(shù)據(jù),不過如果數(shù)據(jù)缺失情況不是很嚴重,并且缺失的數(shù)據(jù)并非重要數(shù)據(jù),此時可通過填充方式來解決。本課題中填充數(shù)據(jù)是通過DataFrame.fillna()函數(shù)來實現(xiàn)的。
3.2.4 數(shù)據(jù)分析
數(shù)據(jù)分析模塊最開始是要從數(shù)據(jù)庫中將已經(jīng)處理完成的文本讀出來,還需要對其進行分詞和清除停用詞等處理過程,使后續(xù)數(shù)據(jù)分析更加便捷。本系統(tǒng)中對于分詞預處理選擇jieba分詞工具,這種工具支持的分詞模式主要有精確模式、全模式以及搜索引擎模式[5]。使用最大熵、支持向量機等多種經(jīng)典機器學方法,逐步提高分類準確率,通過對詞語所在的語句的語境和該詞語與語句中其他詞語的依賴關系進行分析,構建了文本表示模型。其中,jieba部分核心源代碼如下:
3.2.5 數(shù)據(jù)可視化該系統(tǒng)首頁設計是通過Bootstrap 框架來完成的,首頁設計簡潔大氣且美觀入眼,用戶能夠從首頁中利用相應的操作完成不同功能,如檢索、登錄或者注冊等。如分析職位描述以后,對各個崗位展開相似的研究,提取關鍵詞通過TF-IDF 算法進行實現(xiàn),生成詞云圖是由Python內(nèi)的Wordcloud模塊來完成的,能夠很容易發(fā)現(xiàn),技術崗位不同對應的專業(yè)技能需求也存在差異,詞云圖涵蓋很多個人素質(zhì)方面的要求,將企業(yè)對員工能力和素質(zhì)方面等要求更直觀地展現(xiàn)出來??傊?,Python 作為大數(shù)據(jù)處理的主要操作語言,可以有效處理海量數(shù)據(jù),并將數(shù)據(jù)結果以直觀圖形顯示,更易于數(shù)據(jù)使用人的讀取和理解[6]。
近年來,這些技術被越來越多地應用于招聘就業(yè)工作,以提高管理效率和就業(yè)質(zhì)量。本文完成網(wǎng)絡招聘數(shù)據(jù)可視化分析系統(tǒng)的研發(fā),前臺和后臺分離是通過Django 框架實現(xiàn)的,前臺頁面設計應用JQuery、CSS和HTML 等多種工具與技術。最后展現(xiàn)平臺頁面,具體頁面有系統(tǒng)首頁、用戶注冊與登錄頁面、用戶管理頁面,為求職者提供實用的數(shù)據(jù)支持,幫助他們更好地了解招聘市場的情況、分析市場趨勢。