馮 碩,李書(shū)琴,楊會(huì)君
(西北農(nóng)林科技大學(xué) 信息工程學(xué)院,陜西 楊凌712100)
Internet作為世界上最大的信息資料庫(kù),已經(jīng)成為化學(xué)工作者快速獲取信息的主要途徑。然而Web信息的急速膨脹,對(duì)化學(xué)工作者如何大規(guī)模的獲取和有效利用分布在Internet上的化學(xué)資源方面提出了一個(gè)巨大的挑戰(zhàn)[1]。解決這一問(wèn)題的基本思路是建立網(wǎng)絡(luò)資源與其網(wǎng)址的索引[2]。目前在化學(xué)領(lǐng)域已經(jīng)建立起了幾個(gè)比較有代表性的化學(xué)資源導(dǎo)航系統(tǒng)[3-4],雖然已有了以上諸多的的Internet化學(xué)導(dǎo)航系統(tǒng),但其目前主要靠人工來(lái)搜集資源[1]。如果單純地采用人工方式去查找和處理信息,會(huì)對(duì)人力資源大大浪費(fèi)。而且當(dāng)信息源站點(diǎn)數(shù)據(jù)更新后,靠人工發(fā)現(xiàn)非常困難,而且更容易出錯(cuò)。為此,希望能有一套計(jì)算機(jī)軟件系統(tǒng)自動(dòng)地持續(xù)地獲取國(guó)內(nèi)外一些權(quán)威的網(wǎng)站中化學(xué)物質(zhì)的相關(guān)數(shù)據(jù),從而提高信息獲取的效率和數(shù)據(jù)的準(zhǔn)確性。在計(jì)算機(jī)領(lǐng)域,基于Web信息挖掘技術(shù)日益成為人們研究的熱點(diǎn)問(wèn)題[5]。現(xiàn)有的Web信息提取方法包括基于自然語(yǔ)言方式、基于包裝器、基于Ontology方式、基于HTML(hypertext markup language,HTML)結(jié)構(gòu)、基于Web查詢(xún)等信息抽取方法,但無(wú)論是自然語(yǔ)言處理還是包裝器技術(shù),只是針對(duì)一個(gè)特定的信息源,一個(gè)特定主題和領(lǐng)域[6],目前在很多行業(yè)和領(lǐng)域都可以看到垂直搜索引擎的應(yīng)用研究,然而在化學(xué)領(lǐng)域應(yīng)用較少。
本文在研究現(xiàn)有抽取程序的基礎(chǔ)上,實(shí)現(xiàn)自動(dòng)抽取指定網(wǎng)站中化學(xué)信息并集成到數(shù)據(jù)庫(kù),以解決人工手動(dòng)獲取信息效率低下和準(zhǔn)確率低等問(wèn)題。主要研究如何對(duì)多信息源網(wǎng)站中化學(xué)物質(zhì)信息的獲取與集成、構(gòu)建信息全面準(zhǔn)確的化學(xué)物質(zhì)信息數(shù)據(jù)庫(kù),為建立新化學(xué)物質(zhì)生態(tài)危害影響模型與預(yù)測(cè)評(píng)價(jià)體系準(zhǔn)備基礎(chǔ)數(shù)據(jù)。本文將根據(jù)系統(tǒng)結(jié)構(gòu)組織分3個(gè)層次,即業(yè)務(wù)層、數(shù)據(jù)訪問(wèn)層、交互層,本文首先介紹數(shù)據(jù)獲取與預(yù)處理,它屬于業(yè)務(wù)層,是系統(tǒng)的核心;然后介紹數(shù)據(jù)查詢(xún)和更新,它包括數(shù)據(jù)訪問(wèn)層和交互層:數(shù)據(jù)訪問(wèn)層主要是操作數(shù)據(jù)庫(kù)和一些可復(fù)用的工具類(lèi),交互層主要是系統(tǒng)與用戶的交互界面。
數(shù)據(jù)獲取與預(yù)處理的目標(biāo)是從國(guó)內(nèi)外一些權(quán)威的網(wǎng)站中抽取化學(xué)物質(zhì)的基本信息及其相關(guān)屬性如熔沸點(diǎn)、降解性、BCF (bioconcentration factors,BCF)等結(jié)構(gòu)化數(shù)據(jù),這些結(jié)構(gòu)化數(shù)據(jù)存儲(chǔ)在統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)中,從而實(shí)現(xiàn)異構(gòu)數(shù)據(jù)的統(tǒng)一。主要模塊包括網(wǎng)頁(yè)獲取、信息抽取、數(shù)據(jù)預(yù)處理和任務(wù)調(diào)度。
網(wǎng)頁(yè)獲取與信息抽取是數(shù)據(jù)獲取的兩個(gè)核心模塊,為動(dòng)態(tài)獲取網(wǎng)站中的化學(xué)物質(zhì)信息,本文提出任務(wù)分割、重試機(jī)制、動(dòng)態(tài)更新檢查等一些相關(guān)技術(shù)。
1.1.1 網(wǎng)頁(yè)獲取
通過(guò)對(duì)所選信息源網(wǎng)站進(jìn)行分析,發(fā)現(xiàn)大部分網(wǎng)站的網(wǎng)頁(yè)屬于動(dòng)態(tài)網(wǎng)頁(yè),個(gè)別屬于靜態(tài)網(wǎng)頁(yè),靜態(tài)頁(yè)面的URL(universal resource location,URL)直接以 HTML超鏈接形式嵌在客戶端網(wǎng)頁(yè)的HTML文件中[7]。
針對(duì)靜態(tài)網(wǎng)頁(yè),根據(jù)聚焦爬蟲(chóng)[8-9]技術(shù),分析要抓取頁(yè)面的特點(diǎn),在描述和定義抓取目標(biāo)的基礎(chǔ)上,根據(jù)網(wǎng)頁(yè)內(nèi)容進(jìn)行分析,收集跟主題相關(guān)的網(wǎng)頁(yè),然后對(duì)該網(wǎng)頁(yè)進(jìn)行解析,提取將該網(wǎng)頁(yè)中的URL保存到預(yù)先設(shè)定的隊(duì)列中。然后,根據(jù)基于內(nèi)容評(píng)價(jià)的搜索策略[10]從該隊(duì)列中選擇有用的鏈接,并將頁(yè)面保存到本地,然后重復(fù)上述過(guò)程,直到該網(wǎng)站中所有相關(guān)的網(wǎng)頁(yè)均被下載為止。所有被爬蟲(chóng)抓取的網(wǎng)頁(yè)將會(huì)被系統(tǒng)存貯。具體流程如圖1所示。
而動(dòng)態(tài)網(wǎng)頁(yè),一般是由預(yù)定義的模板或服務(wù)器端腳本,通過(guò)臨時(shí)填充后臺(tái)數(shù)據(jù)庫(kù)中的信息生成[11]。一般搜索引擎不可能訪問(wèn)到一個(gè)動(dòng)態(tài)網(wǎng)站中全部網(wǎng)頁(yè)。所以本文根據(jù)網(wǎng)頁(yè)的特點(diǎn)模擬人工點(diǎn)擊瀏覽過(guò)程,通過(guò)提交表單、建立會(huì)話,獲得網(wǎng)頁(yè)。
圖1 靜態(tài)網(wǎng)頁(yè)獲取流程
動(dòng)態(tài)網(wǎng)頁(yè)獲取的具體流程:首先通過(guò)對(duì)所選擇的幾個(gè)動(dòng)態(tài)站點(diǎn)進(jìn)行分析,找到數(shù)據(jù)所在的網(wǎng)頁(yè),以及這些網(wǎng)頁(yè)的拓?fù)浣Y(jié)構(gòu),然后對(duì)網(wǎng)頁(yè)的源代碼進(jìn)行解析和對(duì)JavaScript腳本語(yǔ)言分析,動(dòng)態(tài)生成URL,獲取該網(wǎng)站的Cookie,建立http會(huì)話,進(jìn)而讀取相關(guān)的頁(yè)面,最后將抓取到的頁(yè)面存儲(chǔ)到本地磁盤(pán)。為了避免耗費(fèi)不必要的時(shí)間無(wú)限制地等待響應(yīng)緩慢的服務(wù)器或者規(guī)模龐大的網(wǎng)頁(yè),因此設(shè)置了超時(shí)機(jī)制。如果一個(gè)網(wǎng)頁(yè)在15s內(nèi)不能下載,則需要重試下載。對(duì)于具體網(wǎng)址只會(huì)重新下載3次,如果3次都不能下載,則不再下載該網(wǎng)頁(yè)。具體流程如圖2所示。
圖2 動(dòng)態(tài)網(wǎng)頁(yè)獲取的流程
1.1.2 信息抽取
對(duì)網(wǎng)頁(yè)信息進(jìn)行結(jié)構(gòu)化信息抽取,也就是從網(wǎng)頁(yè)的非結(jié)構(gòu)化、半結(jié)構(gòu)化數(shù)據(jù)中抽取出結(jié)構(gòu)化數(shù)據(jù)。對(duì)所選信息源網(wǎng)頁(yè)面進(jìn)行分析,發(fā)現(xiàn)頁(yè)面中數(shù)據(jù)屬于半結(jié)構(gòu)化信息,因而本文采用基于包裝器的信息抽取技術(shù)[12],抽取相對(duì)結(jié)構(gòu)化的數(shù)據(jù)。而包裝器就屬于結(jié)構(gòu)化信息抽取技術(shù)中基于模板的方法,由一系列的抽取規(guī)則[13]以及應(yīng)用這些規(guī)則的計(jì)算機(jī)程序代碼組成,將同一類(lèi)網(wǎng)站中的特定數(shù)據(jù)按要求提取出來(lái)。本文根據(jù)數(shù)據(jù)項(xiàng)左右邊界來(lái)定位數(shù)據(jù)項(xiàng),實(shí)現(xiàn)對(duì)不同信息源信息的抽取。本文主要根據(jù)對(duì)網(wǎng)頁(yè)信息特點(diǎn)和html語(yǔ)言的分析,生成html的DOM (document object model,DOM)樹(shù),通過(guò)對(duì)DOM樹(shù)結(jié)構(gòu)和目標(biāo)數(shù)據(jù)項(xiàng)所在位置進(jìn)行分析,根據(jù)DOM樹(shù)中對(duì)應(yīng)的節(jié)點(diǎn)確定目標(biāo)數(shù)據(jù)項(xiàng)的定界符——即對(duì)感興趣語(yǔ)義項(xiàng)的上下文描述[14],從而該數(shù)據(jù)項(xiàng)被唯一確定。盡可能找到所需數(shù)據(jù)對(duì)應(yīng)標(biāo)簽的id等能夠唯一標(biāo)識(shí)該數(shù)據(jù)的屬性,或其標(biāo)簽的父親、兄弟或孩子結(jié)點(diǎn)從而間接的找到本文所需的數(shù)據(jù)項(xiàng)。以從The NCLASS Database on Environmental Hazard Classification中取得物質(zhì)的CasNo(化學(xué)物質(zhì)登錄號(hào))為例。觀察下載的html源碼發(fā)現(xiàn)CasNo包含在如圖3所示的代碼中。
圖3 網(wǎng)頁(yè)源碼
需要提取這個(gè)代碼片段value中的字符串,首先根據(jù)“id="txtAllCasNumber"”得到包含CasNo字符串的元素<input>,然后通過(guò)value得到該屬性的值"1333-74-0"即可得到此物質(zhì)的CasNo,其偽代碼如圖4所示。
圖4 獲取CasNo的偽代碼
1.1.3 大任務(wù)分割
本文選擇的信息源數(shù)據(jù)比較多,如果采用一次性全部抽取的方法,必將給信息源站點(diǎn)帶來(lái)巨大的壓力,甚至有可能遭到封殺,而且這樣方式任務(wù)粒度太大,不容易控制。本文將一次性大數(shù)據(jù)量抽取過(guò)程分為多次持續(xù)抽取過(guò)程。
經(jīng)過(guò)觀察分析,發(fā)現(xiàn)所選取的幾個(gè)信息源網(wǎng)站有一定的共性,都有該網(wǎng)站包含總物質(zhì)數(shù),數(shù)據(jù)庫(kù)端物質(zhì)排序有規(guī)律等。因此,從開(kāi)始抽取,每次抽取任務(wù)結(jié)束后都記錄任務(wù)信息,下次任務(wù)開(kāi)始時(shí),讀取任務(wù)信息,在上次的基礎(chǔ)上繼續(xù)抽取,這樣就可以分多次持續(xù)并且無(wú)重復(fù)地進(jìn)行對(duì)將整個(gè)數(shù)據(jù)庫(kù)中的信息抽取出來(lái),有效地避免了一次性全部抽取帶來(lái)的問(wèn)題。
為了持久化任務(wù)信息,本文定義了一個(gè)XML(eXtensible markup language,XML)文件保存抽取任務(wù)日志,每次抽取前讀取歷史任務(wù)信息,完成任務(wù)時(shí)更新任務(wù)信息,以保證任務(wù)信息是最新的。
定義XML日志中元素如下:
<pageCount>:記錄信息源網(wǎng)站數(shù)據(jù)庫(kù)中包含物質(zhì)的總數(shù);
<finishCount>:記錄已抽取的物質(zhì)總數(shù),其屬性time為更新該節(jié)點(diǎn)的時(shí)間;
<countOfTask>:為每一次調(diào)度抽取的物質(zhì)數(shù)量;當(dāng)信息源數(shù)據(jù)庫(kù)剩余物質(zhì)小于該數(shù)量時(shí),按實(shí)際數(shù)量抽?。?/p>
<finishCountOfTask>:記錄上一次抽取成功的個(gè)數(shù);
<networkErrorUrls>:記錄因?yàn)榫W(wǎng)絡(luò)錯(cuò)誤導(dǎo)致抽取失敗的URL,下次調(diào)度時(shí)優(yōu)先重試;
<pageStructErrorUrls>:記錄因?yàn)榫W(wǎng)頁(yè)結(jié)構(gòu)錯(cuò)誤導(dǎo)致抽取失敗的URL,其屬性repeatTimes記錄重試次數(shù),用于抽取監(jiān)控;
<notExistErrorUrls>:記錄因?yàn)閁RL不存在導(dǎo)致的抽取失敗,用于抽取監(jiān)控。
系統(tǒng)通過(guò)維護(hù)該XML文件就可以完成大任務(wù)的分割。
1.1.4 失敗重試機(jī)制
Web信息抽取涉及到很多外在的因素,比如網(wǎng)絡(luò)經(jīng)常變化、網(wǎng)絡(luò)連接失敗,這些因素都可能導(dǎo)致抽取失敗,有些失敗可能只是偶然的,比如網(wǎng)絡(luò)不穩(wěn)定導(dǎo)致的抽取失敗,在下次網(wǎng)絡(luò)比較好的情況下,完全有可能重試成功。所以,失敗重試機(jī)制的引入非常重要。
由于抽取結(jié)果不能是簡(jiǎn)單的成功還是失敗,需要對(duì)抽取結(jié)果進(jìn)行重定義,因?yàn)橄到y(tǒng)需要對(duì)不同的結(jié)果做出不同的反應(yīng),如網(wǎng)絡(luò)錯(cuò)誤系統(tǒng)需要重試抽取,結(jié)構(gòu)錯(cuò)誤系統(tǒng)需要監(jiān)控報(bào)警等。本文根據(jù)需要定義Result儲(chǔ)存返回結(jié)果。
Result數(shù)據(jù)結(jié)構(gòu)包含了以下信息:
(1)返回結(jié)果碼:定義成功、網(wǎng)絡(luò)錯(cuò)誤、URL不存在和頁(yè)面結(jié)構(gòu)錯(cuò)誤四類(lèi)結(jié)果碼。
(2)獲取數(shù)據(jù):定義為一個(gè)Object,因?yàn)楂@取數(shù)據(jù)不一定是CompoundsDTO (定義的統(tǒng)一數(shù)據(jù)結(jié)構(gòu)),還有可能是其他類(lèi)型。在取數(shù)據(jù)時(shí),應(yīng)首先判斷其返回結(jié)果碼是不是為成功。
(3)url:本次抽取的URL,實(shí)際上是個(gè)處理對(duì)象,系統(tǒng)將直接對(duì)其進(jìn)行處理。
(4)errorMessage:更詳細(xì)的結(jié)果信息,一般出錯(cuò)時(shí)才設(shè)值。
重試機(jī)制的實(shí)現(xiàn)非常簡(jiǎn)單,在每次抽取任務(wù)調(diào)度時(shí)將抽取失敗的URL存放到上節(jié)XML對(duì)應(yīng)的URL列表中,在下次任務(wù)調(diào)度時(shí)首先取得需要重試URL列表,逐一重新訪問(wèn)抽取,如果成功,則保存到數(shù)據(jù)庫(kù)中同時(shí)從XML文件中刪除該URL,失敗則更新該URL重試次數(shù)。
1.1.5 動(dòng)態(tài)更新檢查
信息源網(wǎng)站數(shù)據(jù)庫(kù)更新包括兩種情況:一是數(shù)據(jù)記錄增加,增加一種新物質(zhì)信息;二是修改原來(lái)的物質(zhì)信息記錄。
對(duì)于第一種情況,跟一般的數(shù)據(jù)抽取一樣,抽取程序不加區(qū)別對(duì)待。
對(duì)于第二種情況,需要按抽取方式重新抽取數(shù)據(jù),抽取數(shù)據(jù)后將化學(xué)物質(zhì)的主要信息拼接,使用CRC(循環(huán)冗余校驗(yàn)碼)對(duì)所得字符串進(jìn)行編碼。對(duì)于不同的內(nèi)容,其編碼結(jié)果不同,相同的內(nèi)容編碼結(jié)構(gòu)相同。判斷物質(zhì)信息是否更新,只需將這個(gè)CRC和原始庫(kù)中基本信息表中最高版本CRC編碼對(duì)比,即可判斷物質(zhì)信息是否更新。如果該種化學(xué)物質(zhì)有更新,將該物質(zhì)信息存入原始庫(kù)。簡(jiǎn)化了數(shù)據(jù)庫(kù)操作。
由于互聯(lián)網(wǎng)上的數(shù)據(jù)來(lái)自不同的數(shù)據(jù)源,存在異構(gòu),所以首要任務(wù)是設(shè)計(jì)一個(gè)統(tǒng)一的數(shù)據(jù)結(jié)構(gòu)CompoundsDTO作為全局模式,將不同數(shù)據(jù)源中的數(shù)據(jù)映射到該全局模式中,然后將不同數(shù)據(jù)源的同種數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一格式,根據(jù)正則表達(dá)式和排序算法,提取出更為合理的數(shù)據(jù)進(jìn)行集成。本文采用了一種最簡(jiǎn)單也是最合適的方式,即設(shè)計(jì)一組POJO(簡(jiǎn)單Java對(duì)象)來(lái)消除,這組POJO能完全表示一種物質(zhì),包括化學(xué)基本信息、理化性質(zhì)、降解與蓄積性、生物系統(tǒng)效應(yīng)、風(fēng)險(xiǎn)分類(lèi)5個(gè)類(lèi),并將這5個(gè)類(lèi)聚合到CompoundsDTO類(lèi)中。本文將從信息源網(wǎng)站中獲取到一種物質(zhì)數(shù)據(jù)封裝成一個(gè)CompoundsDTO對(duì)象,可以消除不同數(shù)據(jù)源之間的語(yǔ)義沖突,如生物降解性在http://apps.kemi.se/nclass/AllSubstances.asp 數(shù) 據(jù) 源 中 存 在“Yes”和 “No”兩種描述,而在另一數(shù)據(jù)源http://cfpub.epa.gov/eco tox/advanced_query.htm 中使用 “Ready Biodegradab-ility”和 “Non-Biodegradability”來(lái)進(jìn)行表達(dá),本文統(tǒng)一成 “生物降解”和 “非生物降解”來(lái)描述,不但消除了異構(gòu),而且方便業(yè)務(wù)操作時(shí)的接口定義。
任務(wù)調(diào)度模塊是系統(tǒng)實(shí)現(xiàn)自動(dòng)化的核心,系統(tǒng)將對(duì)各信息源網(wǎng)站的抽取工作通過(guò)接口的形式向外公布,如任務(wù)調(diào)度框架--Quartz調(diào)度。本文將抽取的大任務(wù)分割成多個(gè)小任務(wù),在減小任務(wù)粒度的同時(shí)帶來(lái)了如何保證數(shù)據(jù)抽取的連續(xù)性和可行性問(wèn)題,由于數(shù)據(jù)抽取通常是一次性執(zhí)行的任務(wù),如果程序意外中斷,程序就要重新執(zhí)行,因而由大任務(wù)分割而成的小任務(wù),也存在如何記錄現(xiàn)場(chǎng)的問(wèn)題,而Quartz的持久化機(jī)制能夠保存任務(wù)調(diào)度現(xiàn)場(chǎng)的數(shù)據(jù)[15],從而保證了抽取的連續(xù)性,同時(shí)為保證任務(wù)的連續(xù)性和實(shí)時(shí)性,Quartz可以很方便地將這些任務(wù)制作成一個(gè)個(gè)的作業(yè),然后設(shè)定它執(zhí)行的時(shí)間規(guī)律[16]。本文是在Spring框架中進(jìn)行任務(wù)調(diào)度的,首先要?jiǎng)?chuàng)建調(diào)度任務(wù),將這些任務(wù)按照Quartz原則創(chuàng)建成Job作業(yè)。調(diào)用抽取服務(wù)接口完成抽取工作,并配置到SpringIoc中供觸發(fā)器使用。然后設(shè)定執(zhí)行時(shí)間,系統(tǒng)實(shí)現(xiàn)調(diào)度時(shí)選用的是Spring中提供的Cron-TriggerBean調(diào)度器,它可以精確的控制任務(wù)的運(yùn)行時(shí)間。最后在Spring中創(chuàng)建調(diào)度器實(shí)例,將調(diào)度工作交給Quartz框架,然后隨著SpringIoc的啟動(dòng)調(diào)度器也隨著啟動(dòng)。
數(shù)據(jù)更新主要是將抽取數(shù)據(jù)進(jìn)行預(yù)處理得到的最新數(shù)據(jù)存入數(shù)據(jù)庫(kù)中,包括向數(shù)據(jù)庫(kù)中動(dòng)態(tài)添加互聯(lián)網(wǎng)上新增的化學(xué)物質(zhì)信息和修改數(shù)據(jù)庫(kù)中已有的但發(fā)生變化的物質(zhì)信息。數(shù)據(jù)查詢(xún)就是為用戶提供一個(gè)查詢(xún)系統(tǒng),用戶可以查找到自己所需的化學(xué)物質(zhì)信息。
化學(xué)品環(huán)境安全數(shù)據(jù)庫(kù)包含了化學(xué)物質(zhì)的基本信息、化學(xué)物質(zhì)理化性質(zhì)、降解性與蓄積、生物系統(tǒng)效應(yīng)、健康毒性、風(fēng)險(xiǎn)分類(lèi)6個(gè)表,各種相應(yīng)的有關(guān)化學(xué)品環(huán)境安全所需的信息數(shù)據(jù)分別納入相應(yīng)的表中?;瘜W(xué)品環(huán)境安全數(shù)據(jù)庫(kù)系統(tǒng)的總體框架如圖5所示。
圖5 化學(xué)品環(huán)境安全數(shù)據(jù)庫(kù)系統(tǒng)框架結(jié)構(gòu)
化學(xué)品環(huán)境安全數(shù)據(jù)庫(kù)中各表的數(shù)據(jù)組織分別如下:
化學(xué)物質(zhì)的基本信息主要收集了各種化學(xué)物質(zhì)的Cas號(hào)、英文名稱(chēng)、中文名稱(chēng)、分子式、分子量、結(jié)構(gòu)式、SMILES表達(dá)式。用來(lái)對(duì)所收集化學(xué)物進(jìn)行簡(jiǎn)單識(shí)別。
理化性質(zhì)數(shù)據(jù)組織見(jiàn)表1。
表1 各種理化性質(zhì)數(shù)據(jù)組織
降解與蓄積主要收集了化學(xué)品在各種環(huán)境介質(zhì)中的行為參數(shù)方面的資料,在降解與蓄積表中,許多行為參數(shù)指標(biāo)數(shù)據(jù)項(xiàng)中的數(shù)值均與測(cè)試時(shí)的環(huán)境條件或測(cè)試生物物種密切相關(guān),因此數(shù)據(jù)表中添加環(huán)境條件、物質(zhì)等屬性,其數(shù)據(jù)組織見(jiàn)表2。
生物系統(tǒng)效應(yīng)的數(shù)據(jù)組織見(jiàn)表3。
健康毒性主要收集了化學(xué)物質(zhì)的致癌性、經(jīng)口毒性、經(jīng)皮毒性等43種特性信息。
風(fēng)險(xiǎn)分類(lèi)主要收集了中國(guó)風(fēng)險(xiǎn)類(lèi)別、美國(guó)風(fēng)險(xiǎn)類(lèi)別、歐盟風(fēng)險(xiǎn)類(lèi)別、PBT類(lèi)別。
表3 生物系統(tǒng)效應(yīng)數(shù)據(jù)組織
數(shù)據(jù)訪問(wèn)層采用面向?qū)ο缶幊谭椒ㄖ谐S玫年P(guān)系對(duì)象映射 (ORM)方式,并將對(duì)數(shù)據(jù)庫(kù)的操作通過(guò)接口形式向外公布,方便外部使用?;瘜W(xué)品環(huán)境安全數(shù)據(jù)庫(kù)采用mysql完成。數(shù)據(jù)查詢(xún)簡(jiǎn)單、方便,可以以單個(gè)casno為查詢(xún)條件,并同時(shí)選擇多個(gè)屬性查詢(xún),顯示基本信息和所選擇的屬性值;或以多個(gè)casno為查詢(xún)條件,選擇其一個(gè)或多個(gè)屬性進(jìn)行查詢(xún),以對(duì)比其屬性值。在Spring中使用Ibatis進(jìn)行數(shù)據(jù)庫(kù)訪問(wèn)操作,首先配置SQL Map,包含了查詢(xún)的sql語(yǔ)句及參數(shù)、結(jié)果形式;然后裝配SQL Map,裝載sql配置文件到Ibatis的執(zhí)行引擎;創(chuàng)建模板類(lèi),創(chuàng)建Spring提供的SqlMapClientTemplate,并置入DAO對(duì)象;使用模板類(lèi)操作數(shù)據(jù)庫(kù)。
本文在設(shè)計(jì)時(shí)主要以可靠性和可用性為原則,所以在技術(shù)選擇時(shí),選擇可靠的、簡(jiǎn)單的、主流的并且經(jīng)過(guò)大量測(cè)試的工具,主流技術(shù)參考文檔較多,出現(xiàn)問(wèn)題能很快查閱看,而且主流的技術(shù)框架往往經(jīng)過(guò)大量測(cè)試和實(shí)踐驗(yàn)證,框架本身非??煽浚欢?jiǎn)單是指接口封裝好,層次清晰,使用簡(jiǎn)單,降低了開(kāi)發(fā)和使用成本;在解析網(wǎng)頁(yè)時(shí),主要使用了Jsoup和HtmlParser兩個(gè)開(kāi)源工具。
本文從選定的信息源網(wǎng)站中隨機(jī)選取了如表4所示的一些網(wǎng)頁(yè)作為測(cè)試數(shù)據(jù)。然后在基本信息、理化性質(zhì)、降解與蓄積、生物系統(tǒng)效應(yīng)、風(fēng)險(xiǎn)分類(lèi)這五類(lèi)信息中各選擇100個(gè)數(shù)據(jù),再分別對(duì)網(wǎng)頁(yè)中這100個(gè)數(shù)據(jù)和已抽取的數(shù)據(jù)進(jìn)行比較,觀察被準(zhǔn)確抽取出的數(shù)據(jù)量,其結(jié)果如圖6所示。
對(duì)結(jié)果進(jìn)行分析,500個(gè)數(shù)據(jù)共抽取出來(lái)了472個(gè),對(duì)于抽取出來(lái)的472個(gè)數(shù)據(jù)與網(wǎng)頁(yè)上源數(shù)據(jù)進(jìn)行比較,尚無(wú)錯(cuò)誤數(shù)據(jù)。然后以一個(gè)網(wǎng)站為例對(duì)系統(tǒng)進(jìn)行整體測(cè)試,其測(cè)試情況見(jiàn)表5。該網(wǎng)站共有55000多個(gè)化學(xué)物質(zhì),將其分割成多個(gè)任務(wù)每次完成100個(gè)網(wǎng)頁(yè)的抽取,實(shí)際完成數(shù)為93.3%。在沒(méi)有抽取出來(lái)的數(shù)據(jù)中65%返回錯(cuò)誤碼為600,屬于網(wǎng)頁(yè)結(jié)構(gòu)錯(cuò)誤;35%返回結(jié)果碼408,屬于網(wǎng)絡(luò)錯(cuò)誤是由于網(wǎng)絡(luò)超時(shí)頁(yè)面沒(méi)有響應(yīng)。對(duì)返回結(jié)果碼為408的網(wǎng)頁(yè)進(jìn)行重試,重試成功率為35.7%。
圖6 已抽取數(shù)據(jù)與網(wǎng)頁(yè)中數(shù)據(jù)比較結(jié)果
表4 測(cè)試網(wǎng)站
表5 抽取信息測(cè)試情況
本文運(yùn)用開(kāi)源任務(wù)調(diào)度框架Quartz將抽取任務(wù)實(shí)現(xiàn)成一個(gè)時(shí)間程序,有時(shí)間觸發(fā),從而實(shí)現(xiàn)自動(dòng)化抽?。粚⒄麄€(gè)網(wǎng)站數(shù)據(jù)抽取這個(gè)大任務(wù)分割、引入失敗重試機(jī)制等設(shè)計(jì)保證了系統(tǒng)的穩(wěn)定性和可靠性;系統(tǒng)采用面向?qū)ο笤O(shè)計(jì)方法,采用松散耦合的設(shè)計(jì)等原則以便提供系統(tǒng)擴(kuò)展性。當(dāng)需要新增信息源網(wǎng)站時(shí),實(shí)現(xiàn)和回歸測(cè)試成本都將比較低。
本文實(shí)現(xiàn)了對(duì)指定信息源網(wǎng)站中化學(xué)物質(zhì)信息的自動(dòng)獲取,并將其集成,實(shí)現(xiàn)數(shù)據(jù)庫(kù)的實(shí)時(shí)更新,為用戶查詢(xún)時(shí)提供最新數(shù)據(jù),同時(shí)為后期建立新化學(xué)物質(zhì)生態(tài)危害影響模型與預(yù)測(cè)評(píng)價(jià)體系準(zhǔn)備基礎(chǔ)數(shù)據(jù);用戶可以查詢(xún)所需的化學(xué)物質(zhì)相關(guān)信息,并提供了簡(jiǎn)單的統(tǒng)計(jì)信息。本文設(shè)計(jì)時(shí)采用的技術(shù)都是可靠的經(jīng)過(guò)大量測(cè)試和實(shí)踐驗(yàn)證,保證了系統(tǒng)的統(tǒng)一、松散耦合原則,實(shí)現(xiàn)了系統(tǒng)的可靠性、可擴(kuò)展性、自動(dòng)化、可維護(hù)性。由于本文信息抽取時(shí)是針對(duì)不同的網(wǎng)站編寫(xiě)不同的抽取規(guī)則,因而系統(tǒng)的查準(zhǔn)率較高,但正因?yàn)槿绱?,若新增加網(wǎng)站,就需要編寫(xiě)新的抽取規(guī)則,通用性不好。
當(dāng)下出現(xiàn)的一些腳本工具 (比如tb-qlexpress),可以將簡(jiǎn)單邏輯腳本化 (可配置,邏輯作為腳本引擎的參數(shù)),如果將抽取規(guī)則腳本化,當(dāng)信息源網(wǎng)站頁(yè)面結(jié)構(gòu)發(fā)生變化時(shí),只需在線配置、測(cè)試抽取規(guī)則即可,響應(yīng)變化非???。另外,當(dāng)新增信息源網(wǎng)站時(shí),只需新增一條抽取規(guī)則腳本,無(wú)需重新發(fā)布應(yīng)用程序,有待于進(jìn)一步研究。
[1]XIA Zhaojie,LIANG Chunyan,GUO Li.Design and implementation of a chemistry focused web crawler [J].Computer Engineering and Applications,2006,42 (10):204-229 (in Chinese).[夏詔杰,梁春燕,郭力.化學(xué)主題網(wǎng)絡(luò)爬蟲(chóng)的設(shè)計(jì)和實(shí)現(xiàn) [J].計(jì)算機(jī)工程與應(yīng)用,2006,42 (10):204-229.
[2]LI Xiaoxia,YUAN Xiaolong,XIA Zhaojie,et al.A set of discovery tools for internet chemical information [J].Computers and Applied Chemistry,2008,25 (9):1079-1082 (in Chinese).[李曉霞,袁小龍,夏詔杰,等.Internet化學(xué)信息的系統(tǒng)挖掘工 具 [J].計(jì) 算機(jī) 與 應(yīng) 用 化 學(xué),2008,25 (9):1079-1082.]
[3]LI X X,YUAN X L,NIE F G,et al.Overview of ChIN,a web guide of chemical information for 10years [J].Computers and Applied Chemistry,2007,24 (1):125-129.
[4]University of liverpool.Links for chemists [DB/OL].http://www.liv.ac.uk/Chemistry/Links/links.html,2005.
[5]GAO Limin,LI Jun,XIAO Yanqin.Research of information mining based on the web [J].Computer Knowledge and Technology,2010,6 (16):4339-4341 (in Chinese).[高立敏,李俊,肖艷芹.基于Web的網(wǎng)絡(luò)信息挖掘技術(shù)研究 [J].電腦知識(shí)與技術(shù),2010,6 (16):4339-4341.]
[6]LI Haijian,WANG Xiaofeng.Analysis of web information extraction methods [J].Journal of Langfang Teachers College,2009,9 (3):39-40 (in Chinese).[李海健,王曉豐.Web信息抽取的現(xiàn)狀及未來(lái)展望 [J].廊坊師范學(xué)院學(xué)報(bào),2009,9(3):39-40.]
[7]YANG Xi,LUO Yanjing,ZHONG Feng.A method of dynamic web crawling by vertical search engine [J].Science & Technology Information,2008,(4):205 (in Chinese).[楊曦,羅燕京,鐘鋒.面向垂直搜索引擎的一種動(dòng)態(tài)網(wǎng)頁(yè)的抓取方法 [J].科技信息 (學(xué)術(shù)研究),2008,(4):205.
[8]ZHANG H X,HUANG S T.An incremental approach to link evaluation in topic-driven web resource discovery [G].LNCS 3521:Proceedings of the First international Conference on Algorithmic Applications in Management,2005:301-310.
[9]ZHOU Lizhu,LIN Ling.Survey on the research of focused crawling technique [J].Computer Applications,2005,25(9):1965-1969 (in Chinese).[周立柱,林玲.聚焦爬蟲(chóng)技術(shù)研究綜述 [J].計(jì)算機(jī)應(yīng)用,2005,25 (9):1965-1969.]
[10]LIU Hanxing,LIU Caixing.Survey on searching strategies of focused crawler [J].Computer Engineering and Design,2008,29 (12):3160-3162 (in Chinese).[劉漢興,劉財(cái)興.主題爬蟲(chóng)的搜索策略研究 [J].計(jì)算機(jī)工程與設(shè)計(jì),2008,29(12):3160-3162.]
[11]WANG Xiaobin,WANG Pengpo,SHI Zhaoxiang.Semi-structure page information extraction algorithm with automatic granularity selection [J].Computer Engineering and Applications,2009,45 (6):165-172 (in Chinese). [王曉斌,王鵬坡,石昭祥.自動(dòng)粒度選擇的半結(jié)構(gòu)化頁(yè)面信息抽取 [J].計(jì)算機(jī)工程與應(yīng)用,2009,45 (6):165-172.
[12]LI Yuejin.Research of internet-based information extraction technology [D].Dalian:Dalian University of Technology,2005(in Chinese).[李躍進(jìn).基于Internet的信息抽取技術(shù)研究 [D].大連:大連理工大學(xué),2005.]
[13]SHI Qian,CHEN Rong,LU Mingyu.Implementation of rule induction-based information extraction system [J].Computer Engineering and Applications,2008,44 (21):166-170 (in Chinese).[石倩,陳榮,魯明羽.基于規(guī)則歸納的信息抽取系統(tǒng)實(shí)現(xiàn) [J].計(jì)算機(jī)工程與應(yīng)用,2008,44 (21):166-170.]
[14]LIU Jun,ZHANG Jing.DOM based extraction of topical information from web pages [J].Computer Applications and Software.2010,27 (5):188-190 (in Chinese). [劉軍,張凈.基于DOM的網(wǎng)頁(yè)主題信息的抽取 [J].計(jì)算機(jī)應(yīng)用與軟件,2010,27 (5):188-190.]
[15]FANG Geng.Design and implementation of a short message sending scheduling platform [J].Information Technology,2010,34 (12):55-62 (in Chinese).[方賡.一種短消息發(fā)送調(diào)度平臺(tái)的設(shè)計(jì)及實(shí)現(xiàn) [J].信息技術(shù),2010,34 (12):55-62.]
[16]HU Liqiang,ZHOU Dongchu,WANG Wei.Research and application of quartz and web integration [J].Computer and Modernization,2010,25 (8):98-104 (in Chinese). [胡利強(qiáng),周冬初,王偉.Quartz調(diào)度器與Web程序整合的研究和應(yīng)用 [J].計(jì)算機(jī)與現(xiàn)代化,2010,25 (8):98-104.]