張方,尹剛,王濤,余躍
(國防科學(xué)技術(shù)大學(xué)計(jì)算機(jī)學(xué)院,長沙 410073)
面向開源社區(qū)的Web數(shù)據(jù)抽取方法研究
張方,尹剛,王濤,余躍
(國防科學(xué)技術(shù)大學(xué)計(jì)算機(jī)學(xué)院,長沙 410073)
由協(xié)同開發(fā)社區(qū)和知識(shí)分享社區(qū)所組成的開源社區(qū)中匯集海量的開源數(shù)據(jù)資源。如何從數(shù)量眾多,頁面結(jié)構(gòu)各異的開源社區(qū)中準(zhǔn)確、高效地獲取這些數(shù)據(jù)是對開源數(shù)據(jù)資源進(jìn)行全面分析,深度關(guān)聯(lián)的前提。闡述面向開源社區(qū)的Web數(shù)據(jù)抽取方法研究過程,實(shí)現(xiàn)對開源社區(qū)中Web數(shù)據(jù)的精確抽取。
開源社區(qū);Web數(shù)據(jù)抽取;協(xié)同開發(fā)社區(qū);知識(shí)共享社區(qū)
面向開源社區(qū)的Web數(shù)據(jù)抽取是指從各類開源社區(qū)的Web頁面中抽取出我們所感興趣的數(shù)據(jù),并將其以結(jié)構(gòu)化的格式導(dǎo)入數(shù)據(jù)庫中供進(jìn)一步分析處理的過程。通常情況下,在開源社區(qū)中我們獲取信息的方法是通過頁面瀏覽和關(guān)鍵詞搜索。然而,頁面瀏覽和搜索的結(jié)果都是粗粒度的網(wǎng)頁,我們雖然能查看具體內(nèi)容,但卻無法精準(zhǔn)地獲得網(wǎng)頁中自己所感興趣的數(shù)據(jù)。此外,即使我們獲得了這些網(wǎng)頁,也無法直接進(jìn)行數(shù)據(jù)分析和應(yīng)用。如何從源自不同開源社區(qū)站點(diǎn)且表現(xiàn)形式復(fù)雜,結(jié)構(gòu)各異的Web頁面中準(zhǔn)確的抽取有價(jià)值的數(shù)據(jù),并將其集成并轉(zhuǎn)化為結(jié)構(gòu)和語義清晰的格式,存儲(chǔ)到數(shù)據(jù)庫中,以滿足后續(xù)數(shù)據(jù)的深加工需求進(jìn)而形成開源資源知識(shí)庫已經(jīng)成為一個(gè)亟待解決的問題。
近年來,互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展聚合了分散在全球各地的開發(fā)人員,促使國內(nèi)外開源社區(qū)蓬勃發(fā)展,開源也成為了軟件開發(fā)的趨勢,各個(gè)開源社區(qū)互相關(guān)聯(lián)形成了一個(gè)完整的開源生態(tài)系統(tǒng)。在這個(gè)生態(tài)系統(tǒng)中,開源數(shù)據(jù)資源規(guī)模巨大、增長迅速且分布廣泛。為了能夠更加高效地利用開源社區(qū)中的數(shù)據(jù)資源,首先要實(shí)現(xiàn)對開源社區(qū)用戶所感興趣的開源數(shù)據(jù)的精確抽取,因此,開展面向開源社區(qū)的Web數(shù)據(jù)抽取方法的相關(guān)研究工作迫在眉睫。本文著力研究面向開源社區(qū)的Web數(shù)據(jù)抽取技術(shù),目標(biāo)是構(gòu)建一個(gè)抽取準(zhǔn)確率高,并能夠適應(yīng)不同開源社區(qū)站點(diǎn)的通用、健壯的Web數(shù)據(jù)抽取框架,從而實(shí)現(xiàn)對開源社區(qū)中眾多的協(xié)同開發(fā)社區(qū)和知識(shí)共享社區(qū)所包含的海量的開源數(shù)據(jù)資源的精確抽取。
本文研究的是對開源社區(qū)中海量開源數(shù)據(jù)資源進(jìn)行有效抽取的方法,在此過程中主要涉及以下幾個(gè)方面的問題:如何構(gòu)建一個(gè)適用于不同開源站點(diǎn)的通用的、健壯的Web數(shù)據(jù)抽取框架;如何表達(dá)待抽取數(shù)據(jù)元素的抽取規(guī)則;對于抽取得到的數(shù)據(jù),如何進(jìn)行有效的驗(yàn)證和處理。
2.1 構(gòu)建面向開源社區(qū)的Web數(shù)據(jù)抽取框架
開源社區(qū)中眾多的開源社區(qū)站點(diǎn)在網(wǎng)頁結(jié)構(gòu)和內(nèi)容上都呈現(xiàn)出很大的差異,面向開源社區(qū)的Web數(shù)據(jù)抽取框架對大量不同開源社區(qū)站點(diǎn)的通用性,即對不同開源站點(diǎn)的適應(yīng)性和健壯性是面向開源社區(qū)的Web數(shù)據(jù)抽取方法能夠得到大規(guī)模應(yīng)用的前提。
2.2 抽取規(guī)則的制定
抽取規(guī)則的制定是對面向開源社區(qū)的Web數(shù)據(jù)抽取的核心,在對HTML文件中的頁面元素進(jìn)行抽取時(shí),我們是通過有效的抽取規(guī)則實(shí)現(xiàn)對文件中待抽取頁面元素的準(zhǔn)確導(dǎo)航、定位和抽取的。
2.3 數(shù)據(jù)驗(yàn)證和處理
為了保證數(shù)據(jù)抽取的質(zhì)量,盡量減少“臟數(shù)據(jù)”,抽取到的數(shù)據(jù)還需要完成數(shù)據(jù)驗(yàn)證和處理的過程。在這個(gè)過程中首先要確保的是抽取數(shù)據(jù)本身的正確性和完整性,其次當(dāng)從多個(gè)開源社區(qū)站點(diǎn)抽取并集成數(shù)據(jù)時(shí),不同的站點(diǎn)對于相同數(shù)據(jù)可能采取不同的命名規(guī)范和不同的計(jì)量單位,因此需要將數(shù)據(jù)命名和和數(shù)據(jù)格式統(tǒng)一化然后映射到一個(gè)標(biāo)準(zhǔn)數(shù)據(jù)庫表中,從而改善抽取數(shù)據(jù)的質(zhì)量。
3.1 數(shù)據(jù)采集
開源社區(qū)既包含如GitHub,OpenHub,SourceForge等協(xié)同開發(fā)社區(qū),又包含如Stackoverflow,ESDN,Slashdot等知識(shí)共享社區(qū),在對這些社區(qū)中的開源數(shù)據(jù)資源進(jìn)行抽取之前,首先我們需要通過網(wǎng)絡(luò)爬蟲來爬取這些開源社區(qū)的Web頁面,并以HTML文件的形式存入源數(shù)據(jù)庫中,作為待抽取的原始數(shù)據(jù)。
3.2 Web數(shù)據(jù)抽取框架業(yè)務(wù)流程
經(jīng)過實(shí)驗(yàn)研究,我們確定了面向開源社區(qū)的Web數(shù)據(jù)抽取框架的業(yè)務(wù)流程:首先,頁面下載模塊從目標(biāo)站點(diǎn)源數(shù)據(jù)庫中下載原始數(shù)據(jù),即待抽取的HTML網(wǎng)頁,然后數(shù)據(jù)抽取模塊根據(jù)待抽取頁面的抽取規(guī)則對HTML網(wǎng)頁進(jìn)行抽取,抽取到的數(shù)據(jù)經(jīng)數(shù)據(jù)持久化模塊存儲(chǔ)到數(shù)據(jù)庫中,同時(shí)抽取出錯(cuò)的頁面由錯(cuò)誤處理模塊轉(zhuǎn)存到抽取失敗數(shù)據(jù)庫中。該抽取框架具備通用性和可移植性的特點(diǎn)。一方面能夠?qū)崿F(xiàn)對形態(tài)各異的不同開源社區(qū)的數(shù)據(jù)抽取,另一方面該抽取框架提供了一個(gè)通用的抽取模板,當(dāng)對一個(gè)新的開源社區(qū)進(jìn)行抽取時(shí),能夠復(fù)用其他社區(qū)抽取程序的大部分代碼,只需要改動(dòng)抽取模板中的部分抽取規(guī)則和變量名稱即可。
圖1 Web數(shù)據(jù)抽取框架業(yè)務(wù)流程圖
在框架搭建的過程中復(fù)用了一些成熟的開源軟件技術(shù),例如MYBatist和Xsoup,提高了開發(fā)的效率。MyBatis是一個(gè)支持普通SQL查詢,存儲(chǔ)過程和高級(jí)映射的優(yōu)秀持久層框架,它消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。Xsoup是基于Jsoup開發(fā)的HTML抽取器,提供了XPath支持,Xsoup具有解析時(shí)間和抽取時(shí)間快,XPath解析錯(cuò)誤提示全面的優(yōu)點(diǎn)。
3.3 XPath定位路徑的選取
抽取規(guī)則是對應(yīng)于待抽取數(shù)據(jù)的一個(gè)位置路徑表達(dá)式,通過這個(gè)路徑表達(dá)式我們可以在HTML頁面中定位到待抽取數(shù)據(jù)對其進(jìn)行抽取。通過實(shí)驗(yàn)對比,我們選定XPath定位路徑作為Web數(shù)據(jù)的抽取規(guī)則。XPath是可擴(kuò)展路徑語言XML Path Language的簡稱,它是一個(gè)W3C標(biāo)準(zhǔn),主要用于標(biāo)識(shí)XML文檔的各個(gè)部分,它將一個(gè)XML文檔看作一棵樹,我們可以稱之為“節(jié)點(diǎn)樹”。XML文檔中的元素、屬性、文本、注釋、處理指令、命名空間等都是這棵樹的節(jié)點(diǎn),分別稱為元素節(jié)點(diǎn)、屬性節(jié)點(diǎn)、文本節(jié)點(diǎn)、注釋節(jié)點(diǎn)、處理指令節(jié)點(diǎn)、命名空間節(jié)點(diǎn)。XPath可以使用簡明的、基于字符串的語法對XML文檔的各個(gè)組成部分進(jìn)行定位,這種語法就是位置路徑表達(dá)式,通過XPath,我們可以精確地查找到XML元素節(jié)點(diǎn)的位置。
3.4 數(shù)據(jù)一致性與完整性驗(yàn)證
為了保證數(shù)據(jù)抽取的質(zhì)量,抽取到的數(shù)據(jù)還需要經(jīng)過進(jìn)一步的驗(yàn)證和處理。。通過抽取規(guī)則的定位從不同開源社區(qū)抽取到的數(shù)據(jù)信息,若其數(shù)據(jù)格式不符合我們的存儲(chǔ)格式規(guī)范,必須處理成規(guī)范的格式,才能存入到數(shù)據(jù)庫中。另外一個(gè)開源社區(qū)的待抽取頁面中通常含有眾多的待抽取元素,例如在協(xié)同開發(fā)社區(qū)OpenHub中需要抽取的數(shù)據(jù)項(xiàng)有:項(xiàng)目源碼、項(xiàng)目名稱、項(xiàng)目描述、項(xiàng)目標(biāo)簽、相似項(xiàng)目、活躍時(shí)間、最后提交時(shí)間等幾十項(xiàng),對于抽取結(jié)果的完整性必須加以驗(yàn)證。我們在面向開源社區(qū)的Web數(shù)據(jù)抽取框架中集成了數(shù)據(jù)驗(yàn)證模塊,實(shí)現(xiàn)了對抽取數(shù)據(jù)的一致性與完整性的驗(yàn)證和處理。
通過對面向開源社區(qū)的Web數(shù)據(jù)抽取方法研究,我們構(gòu)建了一個(gè)通用的,健壯的,可移植性良好的Web數(shù)據(jù)抽取框架,實(shí)現(xiàn)了對不同開源社區(qū)中開源數(shù)據(jù)資源的準(zhǔn)確抽取,為下一步開展基于開源社區(qū)中海量Web數(shù)據(jù)的全面分析,科學(xué)評(píng)估,深度關(guān)聯(lián)等相關(guān)研究工作提供了強(qiáng)有力的數(shù)據(jù)支撐。
[1]吳共慶.基于標(biāo)簽路徑特征融合的在線Web新聞內(nèi)容抽取[J].軟件學(xué)報(bào),2016,(3):714-727.
[2]丁曉梅.Web信息抽取規(guī)則的設(shè)計(jì)和實(shí)現(xiàn)探討[J].教育,2015,(33):247.
[3]W Wei,S Shi,Y Liu,H Wang.Extraction Rule Language for Web Information Extraction and Intergration.Web Information System& Application Conference,2013:65-70.
[4]Y Kim,J Park,T Kim,J Choi.Web Information Extraction by HTML Tree Edit Distance Matching.ICCIT,2007:2455-2460.
[5]Fei Sun,Dan-dan Song,Le-jian Liao.DOM Based Content Extraction Via Text Density Proceeding of the 34th International ACM SIGIR conference on Research and Development in Information Retrieval,2011:245-254.
[6]L S Zhang,P Shi.An Effective Wrapper for Web Data Extraction and Its Application.International Conference on Cumputer Science&Education.2009:1245-1250.
[7]Suhit Gupta,Gail Kaiser,David Neistadt,Peter Grimm.DOM-Based Content Extraction of HTML Documents Proceedings of the 12th International Conference on World Wide Web,207-214.
[8]張麗娜,陳俊杰,趙麗欣.基于HTML Parser的BT種子網(wǎng)頁信息抽取[J].電腦開發(fā)及應(yīng)用,1010,(03):59-61.
[9]隋玉航.基于WebHarvest的中文財(cái)經(jīng)新聞搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)[D].華中科技大學(xué),2011.
[10]歐健文,董守斌,蔡斌.模板化網(wǎng)頁主題信息的提取方法.清華大學(xué)學(xué)報(bào)(自然科學(xué)版),2005,45(S1):1743-1747.
Research on the Method of Web Data Extraction from Open Source Communities
ZHANG Fang,YIN Gang,WANG Tao,YU Yue
(College of Computer Science,National University of Defense Technology,Changsha 410073)
Open source community,which consists of collaborative development community and knowledge sharing community,assembles a huge amount of open-source data resources together.How to obtain these data precisely and efficiently from numerous open source communities with various page structures is a prerequisite for comprehensive analysis and deep correlation.Describes the research process of web data extraction method and achieves the accurate extraction of Web data from open source communities.
Open Source Community;Web Data Extraction;Collaborative Development Community;Knowledge Sharing Community
1007-1423(2017)04-0027-04
10.3969/j.issn.1007-1423.2017.04.006
張方(1990-),男,河南南陽人,碩士研究生,研究方向?yàn)閿?shù)據(jù)挖掘
尹剛(1975-),男,博士,副研究員,研究方向?yàn)榭尚跑浖?、分布式?jì)算與信息安全
王濤(1984-),男,博士,助理研究員,研究方向?yàn)閿?shù)據(jù)挖掘技術(shù)
余躍(1988-),男,博士,助理研究員,研究方向?yàn)檐浖こ?/p>
2016-12-01
2017-01-20