薛安榮,王 丹,黃祖衛(wèi)
(江蘇大學(xué) 計(jì)算機(jī)科學(xué)與通信工程學(xué)院,江蘇 鎮(zhèn)江 212013)
?
基于CSS模板的職位信息并行抽取系統(tǒng)設(shè)計(jì)
薛安榮,王 丹,黃祖衛(wèi)
(江蘇大學(xué) 計(jì)算機(jī)科學(xué)與通信工程學(xué)院,江蘇 鎮(zhèn)江 212013)
針對(duì)現(xiàn)有職位信息抽取方法由于缺乏自適應(yīng)性和并行性,存在冗余度高和抽取效率低的問(wèn)題,提出了基于CSS模板的方式并行職位信息抽取方法。該方法根據(jù)職位信息頁(yè)面特點(diǎn)使用CSS路徑抽取方法,并制定抽取模板解決抽取的準(zhǔn)確性和自適應(yīng)性,使用了MapReduce編程模型實(shí)現(xiàn)職位信息的并行化抽取。使用MD5算法計(jì)算已抽取得到的職位信息的MD5值,結(jié)合MapReduce并行計(jì)算編程模型的特性實(shí)現(xiàn)職位信息去重,最終將去重后的職位信息存儲(chǔ)在分布式數(shù)據(jù)庫(kù)HBase。實(shí)驗(yàn)測(cè)試結(jié)果表明,并行計(jì)算與傳統(tǒng)的非并行編程模型相比在處理的時(shí)間效率和采集的職位信息量上都有明顯的提高。
信息抽取;MapReduce;CSS模板;MD5算法;分布式數(shù)據(jù)庫(kù)HBase
XUE Anrong, WANG Dan, HUANG Zuwei
(School of Computer Science and Communication Engineering, Jiangsu University, Zhenjiang 212013, China)
當(dāng)下網(wǎng)絡(luò)求職已成為當(dāng)下趨勢(shì),招聘網(wǎng)站的不斷增多,使求職者可選擇的求職路徑增多,但同時(shí)也給求職者帶來(lái)一定的困擾。求職者在不同的招聘網(wǎng)站查找適合的職位信息以后,每個(gè)招聘網(wǎng)站都要求求職者注冊(cè)個(gè)人信息以及填寫求職簡(jiǎn)歷。與此同時(shí),職位信息發(fā)布者可將同一職位信息發(fā)布在不同的招聘網(wǎng)站上,造成了職位信息的冗余問(wèn)題,使求職者在求職過(guò)程中不斷鑒別職位信息的重復(fù)性。
為解決以上問(wèn)題,使用了Web信息抽取技術(shù)。Web信息抽取技術(shù)是從網(wǎng)頁(yè)中抽取出用戶感興趣的內(nèi)容,去除一些不必要的信息包括廣告、不相關(guān)的內(nèi)容等。目前,主要有以下幾種抽取方法:(1)基于包裝器(Wrapper)歸納方式抽取網(wǎng)頁(yè)內(nèi)容[1-2],使用歸納方法學(xué)習(xí)用戶提供的樣本得到抽取規(guī)則,該方法可重用性差、可擴(kuò)展性差;(2)基于機(jī)器學(xué)習(xí)(Machine Learning)或數(shù)據(jù)挖掘(Data Mining)的方法抽取網(wǎng)頁(yè)內(nèi)容,使用數(shù)據(jù)挖掘、聚類(Clustering)、隱馬爾科夫模型(Hidden Markov Model)等[3],但是該方法將簡(jiǎn)單問(wèn)題復(fù)雜化、擴(kuò)展性差;(3)基于網(wǎng)頁(yè)分塊方法抽取內(nèi)容[4-5],該方法是根據(jù)網(wǎng)頁(yè)布局對(duì)網(wǎng)頁(yè)劃分不同的區(qū)域,提取目標(biāo)模塊的內(nèi)容,該方法適用性差,因網(wǎng)頁(yè)布局不同,每次都要重新劃分;(4)基于DOM樹方法的抽取內(nèi)容[6-7],該方法將網(wǎng)頁(yè)解析成一個(gè)樹結(jié)構(gòu),查找要抽取的節(jié)點(diǎn),該方法對(duì)HTML結(jié)構(gòu)要求比較高,樹的建立和遍歷復(fù)雜度高。本文在研究這些方法的基礎(chǔ)上,結(jié)合實(shí)際職位信息頁(yè)面布局,提出基于CSS模板的并行化職位信息抽取方法。
網(wǎng)頁(yè)中職位信息具有以下特點(diǎn):同一個(gè)網(wǎng)站的頁(yè)面相同的職位信息頁(yè)面布局相同,在源碼中坐落的位置相同,利用這一特征本文使用基于CSS路徑的方法抽取職位信息,使用HTMLParser[8]解析網(wǎng)頁(yè)制作職位信息抽取模板,確保職位信息抽取準(zhǔn)確率。同時(shí),為提高職位信息抽取速率,本文使用Hadoop分布式平臺(tái)[9]中的MapReduce[10]并行計(jì)算模型實(shí)現(xiàn)職位信息的并行化抽取。因職位信息來(lái)自多個(gè)網(wǎng)站,所以抽取到的職位信息存在冗余問(wèn)題,本文在基于MapReduce計(jì)算模型上使用MD5算法[10]實(shí)現(xiàn)職位信息去重,將職位信息去重后存儲(chǔ)到HBase[12]數(shù)據(jù)庫(kù)中。
為方便求職者快速、準(zhǔn)確地尋找到想要的信息,系統(tǒng)采用并行計(jì)算模型并建立統(tǒng)一的職位信息知識(shí)庫(kù)。系統(tǒng)搭建在Hadoop分布式平臺(tái)上,以滿足處理海量職位頁(yè)面信息的需求。同時(shí)系統(tǒng)使用基于模板的抽取方法解決以往只能一次固定抽取特定站點(diǎn)的問(wèn)題。
職位信息抽取系統(tǒng)框架圖如圖1所示,職位信息系統(tǒng)主要包括職位爬取功能、職位抽取功能、職位信息去重功能。使用Nutch從招聘網(wǎng)站爬取職位信息的URL,爬取所得到的URL與制定的基于CSS路徑的職位信息模板匹配,匹配得到相對(duì)應(yīng)的抽取模板,根據(jù)抽取模板對(duì)URL所對(duì)應(yīng)的職位信息頁(yè)面進(jìn)行職位信息抽取,同時(shí)根據(jù)所得到的職位名稱、公司名稱和工作地點(diǎn)利用MD5算法計(jì)算職位信息的MD5值。在抽取的過(guò)程中使用MapReduce實(shí)現(xiàn)并行化職位抽取,Map階段將獲得的職位信息的MD5值作為Key的輸出值,抽取得到的職位信息作為Value的輸出值,在Reduce階段Key值相同的職位信息將合并形成一個(gè)Value-list實(shí)現(xiàn)職位信息的去重。從Value-list中讀取一條職位信息,存入到HBase數(shù)據(jù)庫(kù)中,并將職位信息的MD5值作為數(shù)據(jù)庫(kù)的行值。
圖1 職位信息抽取系統(tǒng)體系結(jié)構(gòu)
2.1 職位詳情頁(yè)面特征鏈接的過(guò)濾
在開源項(xiàng)目Nutch上進(jìn)行二次開發(fā)實(shí)現(xiàn)對(duì)各大招聘數(shù)據(jù)源職位信息頁(yè)面鏈接的采集,采集后會(huì)在當(dāng)前目錄下產(chǎn)生Crawldb、Segments、linkdb這3個(gè)文件夾,其中Crawldb中存放了所有解析過(guò)的頁(yè)面鏈接。為了能夠更加方便有效地抽取職位信息,本文提出了特征鏈接的概念。所謂特征鏈接是指在招聘站點(diǎn)內(nèi)部描述特定招聘職位詳情的鏈接。例如,對(duì)于智聯(lián)招聘網(wǎng)站中職位詳情鏈接的正則模式是:http://jobs.zhaopin.com/[0-9]*.htm,前程無(wú)憂招聘網(wǎng)站職位詳情鏈接的正則模式是:http://search.51job.com/job/[0-9]*,c.html。從crawldb中遍歷讀取鏈接,和對(duì)應(yīng)站點(diǎn)的正則模式匹配,如果匹配成功,則該鏈接就是特征招聘鏈接,流程如圖2所示。該模塊的主要工作是從crawldb當(dāng)中篩選出不同站點(diǎn)的特征鏈接,得到一系列的針對(duì)不同站點(diǎn)的特征鏈接,利用這些文本作為下一個(gè)并行抽取模塊的數(shù)據(jù)輸入源進(jìn)行職位信息抽取。
圖2 特征招聘鏈接提取流程圖
由于Crawldb當(dāng)中的數(shù)據(jù)格式均為二進(jìn)制數(shù)據(jù),所以在提取過(guò)程中需要利用Hadoop I/O流中的相關(guān)類進(jìn)行讀取轉(zhuǎn)換成字符串類型進(jìn)行匹配。
2.2 定制異構(gòu)站點(diǎn)的頁(yè)面結(jié)構(gòu)模板
在抽取職位信息頁(yè)面前,需要確定抽取頁(yè)面當(dāng)中哪幾部分信息,比如針對(duì)智聯(lián)招聘網(wǎng)站的職位頁(yè)面需要解析出職位名稱、公司名稱、工作地點(diǎn)、發(fā)布時(shí)間等信息。查看頁(yè)面的源代碼會(huì)發(fā)現(xiàn)每一項(xiàng)信息都包含在某個(gè)具體的標(biāo)簽塊當(dāng)中。對(duì)于任何非結(jié)構(gòu)化的Web文檔而言,每一個(gè)標(biāo)簽都會(huì)對(duì)應(yīng)各自的屬性值對(duì)。例如,,該職位名稱所屬的div標(biāo)簽就具有class="grayline"這樣的屬性值對(duì)。當(dāng)要抽取Java工程師這個(gè)職位名稱時(shí)就必須根據(jù)該屬性進(jìn)行定位標(biāo)簽(前提是該標(biāo)簽屬性在Web文檔中是唯一的)。如果出現(xiàn)多個(gè)具有該屬性對(duì)的標(biāo)簽,還需要在已有的規(guī)則下探尋下一層的屬性對(duì)或標(biāo)簽名,直至能夠唯一確定某個(gè)具體的葉子節(jié)點(diǎn),進(jìn)而得到所關(guān)注的信息。CSS路徑可以被定義為:在Web文檔中確定某個(gè)唯一具體的葉子節(jié)點(diǎn)過(guò)程中需要標(biāo)記出來(lái)的所有屬性對(duì)或標(biāo)簽名按順序組合起來(lái)的規(guī)則。圖3顯示了部分智聯(lián)招聘職位信息的頁(yè)面信息。
圖3 職位招聘信息頁(yè)面
圖3部分展開后的HTML代碼如下:
從中可以分別抽取出職位名稱和公司名稱對(duì)應(yīng)兩條CSS路徑規(guī)則:
規(guī)則1
規(guī)則1
類推任何一條CSS路徑規(guī)則表示為
2.3 基于MapReduce框架的并行抽取
并行抽取模塊是整個(gè)系統(tǒng)的核心部分,采用基于MapReduce的分布式計(jì)算編程模型實(shí)現(xiàn)。并行抽取算法如下。
算法1 基于MapReduce的并行抽取算法。
輸入 存儲(chǔ)在HDFS上的特征鏈接文本。
輸出 包含職位信息的文本文件
步驟 (1)匹配當(dāng)前讀取的特征鏈接所屬的招聘網(wǎng)站;(2)獲取網(wǎng)站對(duì)應(yīng)抽取模板,利用模板抽取信息;(3)如果還有特征鏈接則返回(1),否則結(jié)束。
算法的具體實(shí)現(xiàn)是基于MapReduce框架進(jìn)行并行抽取,利用HTMLParser工具對(duì)網(wǎng)頁(yè)內(nèi)容進(jìn)行解析。其中,Map函數(shù)會(huì)接收一個(gè)
2.4 基于MD5的職位信息去重
由于基于CSS模板機(jī)制并行抽取得到的職位信息來(lái)自不同的招聘網(wǎng)站,而同一條職位信息很可能會(huì)在不同站點(diǎn)以不同的格式展現(xiàn),從而造成上述并行抽取得到的職位信息存在冗余,需要解決海量職位信息去重問(wèn)題。
主要思想:根據(jù)職位名稱、公司名稱以及工作地點(diǎn)判斷一個(gè)職位信息是否已存在,在信息抽取之后,使用MD5算法計(jì)算職位名稱、公司名稱以及工作地點(diǎn)的MD5值,MD5算法具有如果計(jì)算內(nèi)容是唯一的則計(jì)算出來(lái)的結(jié)果具有唯一性,所以當(dāng)職位名稱、公司名稱以及工作地點(diǎn)相同時(shí),則所計(jì)算出的MD5值相同。將職位信息計(jì)算出的MD5值作為Map階段Key的輸出值,抽取出的職位信息作為Value值的輸出。利用MapReduce中的Reduce階段的Shuffle功能,將相同的Key值進(jìn)行合并,Value值進(jìn)行合并,所以抽取出相同職位信息利用Reduce階段的特性實(shí)現(xiàn)了第一次去重功能。將MD5值作為職位信息存儲(chǔ)在HBase中的行值,如果新的職位信息與已存在HBase數(shù)據(jù)庫(kù)中的職位信息相同,則HBase中的時(shí)間戳?xí)涗涀钚麓嫒氲穆毼恍畔?,在查詢時(shí)只需設(shè)置輸出最新時(shí)間戳記錄的職位信息,以此確保查詢職位信息時(shí)不存在冗余問(wèn)題。
本文選取5個(gè)招聘信息網(wǎng)站,使用Nutch爬取每個(gè)網(wǎng)站取得鏈接,因?yàn)槊總€(gè)網(wǎng)站的結(jié)構(gòu)和網(wǎng)站鏈接的數(shù)量不同,爬取網(wǎng)站的鏈接數(shù)不同。為證明MapReduce并行抽取的有效性,通過(guò)串行抽取和MapReduce并行抽取的時(shí)間對(duì)比出其性能,串行抽取是每次只對(duì)一個(gè)職位信息進(jìn)行抽取。
表1展示了基于CSS路徑并行化職位抽取的精確度和召回率的結(jié)果,精確度P和召回率R作為評(píng)價(jià)標(biāo)準(zhǔn)。從表1的實(shí)驗(yàn)結(jié)果可以看出,盡管抽取職位信息網(wǎng)站結(jié)構(gòu)不同但是抽取的準(zhǔn)確度高于95%,由此證明基于CSS路徑模板的并行化職位信息抽取是有效的。
表1 職位抽取精確度結(jié)果
圖4展示了對(duì)5個(gè)招聘站爬取的職位信息使用串行和并行化職位信息抽取的結(jié)果對(duì)比,從實(shí)驗(yàn)結(jié)果可以看出,隨著職位信息量的增加,串行和并行信息抽取在時(shí)間上的差距增大。因?yàn)椴⑿谢毼怀槿∈窃贛apReduce分布式并行化框架上實(shí)現(xiàn),實(shí)現(xiàn)了職位信息的并行化抽取,有效提高職位信息的速率。
圖5展示的是基于CSS路徑和基于DOM方法的職位信息抽取,從實(shí)驗(yàn)結(jié)果看出,基于CSS路徑的職位信息抽取方法的準(zhǔn)確率高于DOM方法,因?yàn)榛贑SS路徑的方法是根據(jù)職位信息標(biāo)簽所對(duì)應(yīng)的屬性進(jìn)行定制職位信息抽取規(guī)則,該方法可以有效定位職位信息的抽取位置,從而提高職位信息抽取的準(zhǔn)確性。因?yàn)镈OM方法對(duì)HTML結(jié)構(gòu)要求比較嚴(yán)格,從而影響了信息抽取的準(zhǔn)確性。
圖4 串行和并行化職位抽取結(jié)果
圖5 職位信息抽取方法對(duì)比
本文提出了針對(duì)海量異構(gòu)職位頁(yè)面的信息抽取方法。利用網(wǎng)頁(yè)模板的方法對(duì)異構(gòu)站點(diǎn)職位頁(yè)面進(jìn)行信息抽取,實(shí)現(xiàn)了同時(shí)對(duì)多個(gè)不同結(jié)構(gòu)的網(wǎng)站進(jìn)行信息抽取,提高了信息抽取效率;采用基于MapReduce分布式計(jì)算框架對(duì)網(wǎng)頁(yè)信息進(jìn)行抽取,解決了針對(duì)大數(shù)據(jù)量處理速度緩慢的問(wèn)題;采用MD5算法基于MapReduce的去重算法,并將職位信息存儲(chǔ)到HBase數(shù)據(jù)庫(kù)中解決了職位信息的冗余問(wèn)題。實(shí)驗(yàn)結(jié)果表明,本文所提出的方法在抽取職位信息的正確率和抽取效率上有明顯提高。
[1] Gkotsis G, Stepanyan K, Cristea A I, et al. Self-supervised automated wrapper generation for weblog data extraction[J]. Lecture Notes in Computer Science, 2013, 79(4):292-302.
[2] 安增文,王超,徐杰鋒.基于機(jī)器學(xué)習(xí)的網(wǎng)頁(yè)正文提取方法[J].微型機(jī)與應(yīng)用,2010(12):4-6.
[3] 祝偉華,盧熠,劉斌斌.基于HMM的Web信息抽取算法的研究與應(yīng)用[J]. 計(jì)算機(jī)科學(xué), 2010, 37(2):203-206.
[4] Giuseppe Della Penna,Daniele Magazzeni,Sergio Orefice.Visual extraction of information from web pages original research article[J]. Journal of Visual Languages & Computing, 2010(21):23-32.
[5] 安增文,徐杰鋒.基于視覺特征的網(wǎng)頁(yè)正文提取方法研究[J].微型機(jī)與應(yīng)用,2010(3): 38-41.
[6] Xu Hongzhen,Li Lihua. A Web information extraction method based on DOM tree structure and information entropy[J]. WIT Transactions on Information and Communication Technologies, 2014(55):477-484.
[7] 常紅要,朱征宇,陳燁,等. 基于HTML標(biāo)記用途分析的網(wǎng)頁(yè)正文提取技術(shù)[J].計(jì)算機(jī)工程與設(shè)計(jì),2010 (24):5187-5191.
[8] 羅剛.自己動(dòng)手寫網(wǎng)絡(luò)爬蟲[M]. 北京: 清華大學(xué)出版社,2013.
[9] White T. Hadoop: The Definitive Guide[J]. O’reilly Media Inc Gravenstein Highway North,2010,215(11):1-4.
[10] Andrew Taggart. Hadoop mapreduce[EB/OL]. (2011-07-14)[2015-10-14]http://wiki.apache.org/hadoop/HadoopMapRduce.
[10] Rivest R. The MD5 message-digest algorithm[J]. IETF RFC, 1992, 473(10):492-492.
[11] Lars George. HBase:the definitive guide [M]. 代志遠(yuǎn), 劉佳, 蔣杰,譯. 北京: 人民郵電出版社,2015.
Research on and Implementation of the Parallel Information Extraction System on Recruitment with CSS Template
A parallel position information extraction method based on CSS template is proposed to address the high redundancy and low efficiency due to the lack of adaptability and parallelism by existing position information extraction method. The information extraction that employs the CSS path builds the extraction template according to the structure of the job web page, thus guaranteeing the accuracy and adaptability. The parallel extraction is based on the MapReduce. The MD5 algorithm is used to compute the value of extracted information, and the values are used in the Reduce function to reduce the duplicate position information. Finally, the position information is saved in HBase, a distributed column-oriented database. Experimental results on a set of data show that the proposed approach offers better extraction efficiency and the speed than the non-parallel extraction programming model.
information extraction; MapReduce; CSS template; MD5 algorithm; HBase
2016- 01- 04
江蘇省科技型企業(yè)創(chuàng)新基金資助項(xiàng)目(BC2014212);江蘇省普通高校研究生科研創(chuàng)新計(jì)劃基金資助項(xiàng)目(SJLX_0470)
薛安榮(1965-),男,博士,教授,碩士生導(dǎo)師。研究方向:數(shù)據(jù)庫(kù)與數(shù)據(jù)挖掘。王丹(1989-),女,碩士研究生。研究方向:數(shù)據(jù)挖掘。黃祖衛(wèi)(1991-),男,碩士研究生。研究方向:數(shù)據(jù)挖掘。
10.16180/j.cnki.issn1007-7820.2016.10.026
TP391
A
1007-7820(2016)10-093-04