陳鐳 張凡龍
摘? ?要:隨著大數(shù)據(jù)時代的來臨、互聯(lián)網(wǎng)技術(shù)的快速發(fā)展,如何從海量數(shù)據(jù)中挖掘出潛在的、有價值的信息,成為當(dāng)下熱門的研究和實踐方向之一。Python因其強大的科學(xué)計算能力成為數(shù)據(jù)挖掘領(lǐng)域不可或缺的工具?;赑ython語言對高校人事、科研及互聯(lián)網(wǎng)數(shù)據(jù)進行挖掘和分析,構(gòu)建人才發(fā)現(xiàn)系統(tǒng),為高校引進高水平人才提供決策支持。
關(guān)鍵詞:Python;Scrapy網(wǎng)絡(luò)爬蟲;數(shù)據(jù)挖掘;Sklearn;人才引進
中圖分類號:TP311 文獻(xiàn)標(biāo)志碼:A 文章編號:1673-8454(2019)15-0052-03
一、引言
大數(shù)據(jù)時代,數(shù)據(jù)的規(guī)模在不斷擴大,數(shù)據(jù)呈現(xiàn)出體量大、多樣性、價值密度變低、關(guān)系復(fù)雜的特點。從一般的信息系統(tǒng)中獲取具有決策價值的信息變得越來越困難。如何做好高校人才隊伍長期發(fā)展規(guī)劃,滿足高??焖侔l(fā)展當(dāng)中對高水平人才的需要,人事管理部門迫切需要擁有智慧的信息系統(tǒng),對目前掌握的大量人事、科研、教學(xué)信息進行分析、挖掘,對學(xué)校引進人才進行科學(xué)規(guī)劃與評測,對在校人員進行科學(xué)培養(yǎng)與管理提供決策支持。
數(shù)據(jù)挖掘技術(shù)是一門涉及數(shù)理統(tǒng)計、人工智能以及知識工程等領(lǐng)域的新興交叉學(xué)科,包含一套完整的過程。[1]該過程首先從數(shù)據(jù)庫、數(shù)據(jù)倉庫或大數(shù)據(jù)集中抽取潛在有價值的知識、模型或規(guī)則,然后使用這些知識做出決策。換一種說法,數(shù)據(jù)挖掘技術(shù)是通過多種復(fù)雜算法,在大量未加工數(shù)據(jù)中發(fā)現(xiàn)數(shù)據(jù)間潛在關(guān)系以及有效知識。近年來,數(shù)據(jù)挖掘技術(shù)在金融業(yè)、零售業(yè)、醫(yī)療和電信等多種行業(yè)都取得了顯著成果。
Python語言是當(dāng)今最熱門的程序設(shè)計語言之一。它是一種面向?qū)ο蟮恼Z言,擁有較好的交互性、解釋性。Python發(fā)展勢頭迅猛,在2017年熱門計算機語言排行中,Python已超過Java和C,排名第一。Python開源社區(qū)用戶活躍,越來越多的支持?jǐn)?shù)據(jù)挖掘各項技術(shù)的代碼庫被開發(fā)出來,使其擁有強大的科學(xué)計算能力。目前Python語言是數(shù)據(jù)挖掘領(lǐng)域中最熱門的工具之一。本文詳細(xì)介紹了Python語言在數(shù)據(jù)挖掘領(lǐng)域簡易而強大的功能,在對大量科研人員成果數(shù)據(jù)進行挖掘分析的基礎(chǔ)上,指導(dǎo)高校人才引進工作。
二、技術(shù)可行性
數(shù)據(jù)挖掘的一般步驟為問題定義、數(shù)據(jù)采集、數(shù)據(jù)存儲、數(shù)據(jù)預(yù)處理、數(shù)據(jù)建模和模型評估。Python在數(shù)據(jù)挖掘中的關(guān)鍵步驟如圖1所示。
數(shù)據(jù)來源有兩處,一是從現(xiàn)有人事、科研系統(tǒng)導(dǎo)入,二是使用Scrapy框架爬取網(wǎng)絡(luò)數(shù)據(jù)。然后把這些爬到的數(shù)據(jù)使用pymongo包存儲到MongoDB 數(shù)據(jù)庫,從而在后續(xù)分析中使用。在數(shù)據(jù)預(yù)處理及數(shù)據(jù)挖掘階段常用的Python工具包,包含Numpy、Pandas、Matplotlib、Sklearn等。
1.數(shù)據(jù)采集[2]
通過爬蟲技術(shù),可以在指定網(wǎng)站上獲取到想要的數(shù)據(jù)。Scrapy爬蟲框架就是使用Python 語言開發(fā)并封裝的一個強大的爬蟲工具。首先創(chuàng)建Scrapy項目,然后編寫定制的爬蟲規(guī)則,運行Scrapy項目,爬蟲自動運行,即可獲得想要的網(wǎng)絡(luò)數(shù)據(jù)。
2.數(shù)據(jù)存儲
大多數(shù)傳統(tǒng)意義上的關(guān)系型數(shù)據(jù)庫,在存儲非單一數(shù)據(jù)格式上有較大的困難。通常在爬蟲數(shù)據(jù)中,既有關(guān)系型數(shù)據(jù),也有非關(guān)系型數(shù)據(jù),所以更適合使用NoSQL非關(guān)系型數(shù)據(jù)庫存儲。NoSQL數(shù)據(jù)庫數(shù)據(jù)模型更加靈活,數(shù)據(jù)間不存在關(guān)系,從而數(shù)據(jù)讀寫更簡易,數(shù)據(jù)擴展更方便。本文研究選擇當(dāng)前熱門的MongoDB 數(shù)據(jù)庫,對爬取的數(shù)據(jù)進行導(dǎo)入后存儲,供后序操作使用。
3.數(shù)據(jù)預(yù)處理
數(shù)據(jù)預(yù)處理階段首先對數(shù)據(jù)庫中的各種數(shù)據(jù)進行清洗,填充空數(shù)據(jù),更正無效數(shù)據(jù),排除無關(guān)聯(lián)屬性數(shù)據(jù)等非正常數(shù)據(jù)。Python工具包的Numpy、Pandas、Matplotlib等工具提供了強大的數(shù)據(jù)處理及矩陣運算能力。數(shù)據(jù)預(yù)處理階段一般對數(shù)據(jù)進行批量操作。利用以上Python工具包,結(jié)合數(shù)據(jù)預(yù)處理相關(guān)技術(shù),就能夠快速、大批量地對非法格式數(shù)據(jù)進行格式化操作。
4.數(shù)據(jù)挖掘建模
基于Python編寫的Sklearn庫在機器學(xué)習(xí)、數(shù)據(jù)挖掘領(lǐng)域具有很高的知名度,庫中包含大量數(shù)據(jù)挖掘和機器學(xué)習(xí)的經(jīng)典算法。同時庫中也含有豐富的測試調(diào)試工具,對算法運行過程中所需參數(shù)進行調(diào)整和優(yōu)化。Sklearn工具包中封裝的經(jīng)典算法有分類、回歸、聚類、關(guān)聯(lián)規(guī)則、降維等,另外還包含模型選擇和模型評估等模塊。
三、系統(tǒng)分析與設(shè)計
本文將人事、科研系統(tǒng)數(shù)據(jù)和知網(wǎng)科研論文數(shù)據(jù)集成,對這些數(shù)據(jù)進行深度挖掘和統(tǒng)計分析,構(gòu)建人才發(fā)現(xiàn)系統(tǒng),從而實現(xiàn)高校人才發(fā)現(xiàn)、人才科研評價和研究熱點發(fā)現(xiàn)等功能,為高校職能部門和高層決策者提供多維度的智能分析功能。
1.人才發(fā)現(xiàn)[3]
數(shù)據(jù)采集模塊使用Scrapy工具自動抓取知網(wǎng)已收錄的中、外文論文數(shù)據(jù),作為人才發(fā)現(xiàn)的基礎(chǔ)數(shù)據(jù)。Web網(wǎng)頁解析模塊提取數(shù)據(jù)并按照指定格式存儲到MongoDB數(shù)據(jù)庫。數(shù)據(jù)預(yù)處理模塊用于統(tǒng)一數(shù)據(jù)格式,清除重復(fù)樣本,清除疑似錯誤異常的樣本,清除偏離整體分布的樣本,過濾無效樣本。數(shù)據(jù)挖掘模塊綜合考慮論文標(biāo)題、關(guān)鍵詞、作者及其單位、合作者及其單位、發(fā)表時間、發(fā)表期刊、期刊級別、引用次數(shù)、下載次數(shù)、中圖分類號等信息??茖W(xué)分配權(quán)重,設(shè)計算法,建立挖掘模型,最終返回所關(guān)注學(xué)科的研究人員列表,對高層次人才引進工作起到輔助作用。
2.人才科研評價
主要對校內(nèi)現(xiàn)有人員的科研論文發(fā)表情況進行分析。校內(nèi)現(xiàn)有教學(xué)科研人員分為三類——科研為主型、科研教學(xué)并重型以及教學(xué)為主型。人事系統(tǒng)中包含教職工的詳細(xì)信息。[4]在數(shù)據(jù)預(yù)處理的時候,首先去掉一些與分類、挖掘無關(guān)的字段,如姓名、手機號碼、家庭住址等,保留與分類和規(guī)則挖掘相關(guān)字段,如職工編號,以區(qū)分各教職工。為了便于對被評測的教師進行挖掘分析,需對各字段離散化。職稱分為“初級、中級、副高、正高”,分別用1、2、3、4代替;學(xué)科分類歸并為人文社科、自然科學(xué)及其他,分別用1、2、3代替;學(xué)科詳細(xì)分類用中圖分類法代替;學(xué)歷/學(xué)位用博士、碩士、其他代替,編碼為1、2、3;年齡采用區(qū)間分類,用25-30、30-35、35-40、40-45、45-50、50-55六種區(qū)間代替,性別為男、女,編碼為0、1。
3.研究熱點發(fā)現(xiàn)
研究熱點發(fā)現(xiàn),以每年度數(shù)據(jù)為分析周期,根據(jù)學(xué)科分類號統(tǒng)計出各研究領(lǐng)域發(fā)表論文的數(shù)量及其變化趨勢,同時提取論文的關(guān)鍵詞,統(tǒng)計各關(guān)鍵詞出現(xiàn)的詞頻,根據(jù)詞頻與研究領(lǐng)域?qū)?yīng)文章數(shù)量綜合評定研究熱點,系統(tǒng)根據(jù)學(xué)科分類號自動推送研究熱點和前沿方向。[5]系統(tǒng)還可以通過分析不同學(xué)科的相似研究主題,發(fā)掘交叉學(xué)科的研究方向,建立不同學(xué)科、不同院系之間有著相似研究主題的科研人員的學(xué)術(shù)交流圈子,提供科研圈和科研人員的推薦,幫助學(xué)校交叉方向科研人員碰撞出更多研究成果。
四、系統(tǒng)實現(xiàn)
開發(fā)環(huán)境采用:操作系統(tǒng)64位Win10企業(yè)版、CPU Intel Core i7-4790 3.6GHz、內(nèi)存16G、開發(fā)語言Python3.7.2、開發(fā)工具PyCharm Community Edition 2018.3、阿里云服務(wù)器Ubuntu16.04 64位、數(shù)據(jù)庫MongoDB? v3.6.3。
Scrapy 爬蟲項目搭建:首先搭建 Scrapy 爬蟲項目,獲取知網(wǎng)論文數(shù)據(jù)。Scrapy項目搭建十分方便,首先確定所需爬取數(shù)據(jù)的網(wǎng)址或域名信息,然后通過 Scrapy內(nèi)置命令,自動化生成項目框架。例如第一步完成項目搭建,執(zhí)行以下指令:Scrapy startproject recruit;第二步生成自定義爬蟲文件,執(zhí)行以下指令:Scrapy genspider-t crawl cnki cnki.net。通過以上兩條簡單的命令,就完成了Scrapy爬蟲項目搭建。從以上過程可以看出,基于Python語言的scrapy框架的強大功能及易用性。
對請求數(shù)據(jù)的處理,存入數(shù)據(jù)庫的數(shù)據(jù)基本結(jié)構(gòu),其json數(shù)據(jù)格式如下:
{"paper_title ":"String",#論文標(biāo)題
" keywords ":"String",#關(guān)鍵詞
"author":"String",#作者
" author_affiliation":"String",#作者單位
" cooperator ":"String",#合作者
" cooperator_affiliation ":"String",#合作者單位
" publish_date ":"Date",#發(fā)表日期
" publisher ":"String",#發(fā)表期刊
" quote_number ":"Integer",#引用次數(shù)
"download_ number ":"Integer",#下載次數(shù)
" class_code":"String",#中圖分類號}
以上數(shù)據(jù)結(jié)構(gòu)確定以后,可以進行數(shù)據(jù)庫連接操作。pymongo 是基于Python語言開發(fā)的連接MongoDB數(shù)據(jù)庫的驅(qū)動。通過導(dǎo)入pymongo驅(qū)動包,進行數(shù)據(jù)的增、刪、查、改操作。
在數(shù)據(jù)清洗的過程中,Numpy、Pandas、Matplotlib等工具提供了強大的數(shù)據(jù)處理及矩陣運算能力,利用以上Python工具包,就能夠快速、大批量地對非法格式數(shù)據(jù)進行清洗操作。
導(dǎo)入Sklearn庫,可以輕松實現(xiàn)數(shù)據(jù)挖掘及機器學(xué)習(xí)任務(wù)。在建模的過程中,數(shù)據(jù)分為訓(xùn)練集和測試集。將訓(xùn)練數(shù)據(jù)平分到相同大小的K份。在K折交叉驗證中,將運行K次單獨的學(xué)習(xí)實驗,在每次實驗中,將從K個子集中挑選一個作為驗證集,剩下(K-1)個容器放在一起作為訓(xùn)練集,然后訓(xùn)練學(xué)習(xí)算法,最終返回這個測試結(jié)果的平均值。Sklearn庫中的train_test_split函數(shù)可有效實現(xiàn)對數(shù)據(jù)集的劃分操作。
五、結(jié)束語
目前大多數(shù)高校的人力資源管理系統(tǒng)僅實現(xiàn)了信息系統(tǒng)最初步、最基本、最原始的查詢和統(tǒng)計功能。人事管理部門迫切需要智能信息系統(tǒng),對學(xué)校引進人才進行科學(xué)規(guī)劃與評測,對在校人員進行科學(xué)培養(yǎng)與管理提供決策支持。本文在已有人事數(shù)據(jù)、科研數(shù)據(jù)以及抓取的知網(wǎng)科研論文數(shù)據(jù)基礎(chǔ)上,進行深度挖掘和統(tǒng)計分析,構(gòu)建人才發(fā)現(xiàn)系統(tǒng),從而實現(xiàn)高校人才發(fā)現(xiàn)、人才科研評價和研究熱點發(fā)現(xiàn)等功能,為高校職能部門和高層決策者提供多維度的智能分析功能。如能加入教學(xué)成果數(shù)據(jù)以及在科研領(lǐng)域進一步包含外文期刊數(shù)據(jù)庫(如IEEE)、科研基金項目等科研成果數(shù)據(jù),則必將提高挖掘的精準(zhǔn)度和實用性。
參考文獻(xiàn):
[1]白菲,孟超英.數(shù)據(jù)挖掘技術(shù)在高校人才引進中的應(yīng)用[J].太原大學(xué)學(xué)報,2005(4):52-55.
[2]劉熠.基于python的Web數(shù)據(jù)挖掘技術(shù)研究與實現(xiàn)[D].荊州:長江大學(xué),2018.
[3]王孟頔,邰泳,薛安榮.基于Hadoop平臺的人才發(fā)現(xiàn)與推薦系統(tǒng)研究[J].軟件導(dǎo)刊,2014(1):4-6.
[4]張維國.基于數(shù)據(jù)挖掘的高職師資管理系統(tǒng)的應(yīng)用與實踐[J].計算機時代,2018(1):86-89.
[5]薛云霞,陳宓宓,韓茜.大數(shù)據(jù)框架下高校人才服務(wù)平臺架構(gòu)研究[J].中國教育信息化,2018(14):27-30.
(編輯:王天鵬)