何頂軍
(瀘州職業(yè)技術(shù)學(xué)院,四川 瀘州 646000)
AI(Artificial Intelligence)技術(shù)是當(dāng)前飛速發(fā)展的熱門技術(shù)之一,AI 技術(shù)和大數(shù)據(jù)技術(shù)是許多智能系統(tǒng)中的關(guān)鍵技術(shù)。基于網(wǎng)絡(luò)信息的AI 系統(tǒng)要實(shí)現(xiàn)其智能化,必須以海量數(shù)據(jù)作為前提。Internet 的飛速發(fā)展加快了網(wǎng)絡(luò)信息爆炸式增長(zhǎng),要在網(wǎng)絡(luò)中找到有用的信息有如大海撈針。雖然搜索引擎的出現(xiàn)在一定程度上緩解了這個(gè)問(wèn)題,但是,針對(duì)某一特定主題,通用搜索引擎具有信息冗余大、內(nèi)存占用高、消耗大量系統(tǒng)資源、查準(zhǔn)率低和個(gè)性化需求弱等問(wèn)題[1]。為彌補(bǔ)通用搜索引擎的這些缺陷,主題網(wǎng)絡(luò)爬蟲(Topical Web Crawler)技術(shù)應(yīng)用而生。主題網(wǎng)絡(luò)爬蟲是網(wǎng)絡(luò)爬蟲的一個(gè)重要分支,它只抓取用戶特定的、與主題相關(guān)的網(wǎng)頁(yè),忽略與主題無(wú)關(guān)的網(wǎng)頁(yè),具有準(zhǔn)確性、深入性和專業(yè)性等特點(diǎn)。
爬蟲是模擬用戶瀏覽網(wǎng)頁(yè)或Web 應(yīng)用的自動(dòng)化程序。網(wǎng)絡(luò)爬蟲通??梢苑譃橥ㄓ镁W(wǎng)絡(luò)爬蟲(General Purpose Web Crawler)、主題網(wǎng)絡(luò)爬蟲(Topical Web Crawler)或叫聚焦網(wǎng)絡(luò)爬蟲(Focused Web Crawler)、增量式網(wǎng)絡(luò)爬蟲(Incremental Web Crawler)和深層網(wǎng)絡(luò)爬蟲(Deep Web Crawler)。
通用網(wǎng)絡(luò)爬蟲又稱全網(wǎng)爬蟲(Scalable Web Crawler),從一個(gè)或若干個(gè)初始URL 開始,擴(kuò)展到整個(gè)Internet,通常被搜索引擎和大型Web 服務(wù)提供商所掌握和使用。
主題網(wǎng)絡(luò)爬蟲就是過(guò)濾與主題無(wú)關(guān)的URL,保留主題相關(guān)的URL 并將其放入待抓取的隊(duì)列;然后按照一定策略從隊(duì)列選出下一步要抓取的URL,重復(fù)至中止條件滿足。
增量式網(wǎng)絡(luò)爬蟲是指對(duì)已下載網(wǎng)頁(yè)采取增量式更新和只爬取新產(chǎn)生的或者已經(jīng)發(fā)生變化網(wǎng)頁(yè)的爬蟲,它能夠在一定程度上保證所爬行的頁(yè)面是盡可能新的頁(yè)面。
深層網(wǎng)絡(luò)爬蟲是專門針對(duì)那些大部分內(nèi)容不能通過(guò)靜態(tài)鏈接獲取的、隱藏在搜索表單后的,只有用戶提交一些關(guān)鍵詞才能獲取的Web 頁(yè)面。如用戶注冊(cè)后才可見的網(wǎng)頁(yè)就需要使用深層網(wǎng)絡(luò)爬蟲進(jìn)行爬取。
爬蟲獲取網(wǎng)頁(yè)與人工獲取網(wǎng)頁(yè)類似,主要經(jīng)歷了以下四個(gè)階段:
1.查找域名對(duì)應(yīng)的IP 地址。
2.向IP 對(duì)應(yīng)的服務(wù)器發(fā)送請(qǐng)求。
3.服務(wù)器響應(yīng)請(qǐng)求,發(fā)回網(wǎng)頁(yè)內(nèi)容。
4.瀏覽器解析網(wǎng)頁(yè)內(nèi)容。
主題網(wǎng)絡(luò)爬蟲一般由以下模塊組成:網(wǎng)頁(yè)下載模塊、網(wǎng)頁(yè)分析模塊、鏈接過(guò)濾模塊、網(wǎng)頁(yè)存儲(chǔ)模塊、URL 隊(duì)列模塊。
網(wǎng)頁(yè)下載模塊,根據(jù)URL 獲取IP 地址后,模擬瀏覽器發(fā)出http 請(qǐng)求,從服務(wù)器下載目標(biāo)網(wǎng)頁(yè)。當(dāng)前可選擇python 或java 主流語(yǔ)言來(lái)實(shí)現(xiàn),會(huì)涉及服務(wù)器反爬技術(shù)和非靜態(tài)頁(yè)面的爬取等難點(diǎn),但可使用代理服務(wù)器、分布式爬蟲、session 等技術(shù)加以解決。
網(wǎng)頁(yè)分析模塊主要分析網(wǎng)頁(yè)標(biāo)題、網(wǎng)頁(yè)內(nèi)容等與主題的相關(guān)性,對(duì)相關(guān)的網(wǎng)頁(yè)進(jìn)行保存,并按照相關(guān)性的大小進(jìn)行相應(yīng)處理。
鏈接過(guò)濾模塊判斷、預(yù)測(cè)新獲取的URL 與主題的相關(guān)性,對(duì)可能相關(guān)的URL 添加到隊(duì)列進(jìn)行排隊(duì)下載,大大減少無(wú)關(guān)網(wǎng)頁(yè)下載占用的時(shí)間、空間和帶寬。
網(wǎng)頁(yè)存儲(chǔ)模塊主要對(duì)相關(guān)的網(wǎng)頁(yè)進(jìn)行信息的提取,結(jié)構(gòu)化存儲(chǔ),以備智能系統(tǒng)其他模塊進(jìn)一步對(duì)數(shù)據(jù)的挖掘和處理。
URL 隊(duì)列模塊維護(hù)一個(gè)待下載的隊(duì)列,并根據(jù)優(yōu)選級(jí)對(duì)隊(duì)列中的URL做排序處理。
主題網(wǎng)絡(luò)爬蟲與傳統(tǒng)網(wǎng)絡(luò)爬蟲最顯著的區(qū)別是選擇與主題相關(guān)的網(wǎng)頁(yè),過(guò)濾掉與主題無(wú)關(guān)的網(wǎng)頁(yè),所以鏈接過(guò)濾模塊是最核心的模塊。主題網(wǎng)絡(luò)爬蟲的主要工作步驟如下:
1.確定種子URL,通常由人工在配置文件或可視化界面中進(jìn)行設(shè)定。
2.種子URL 放入待抓取隊(duì)列。
3.根據(jù)URL 選取規(guī)則從隊(duì)列中選取1 個(gè)URL 進(jìn)行下載。隊(duì)列中URL 往往有許多個(gè),所以存在優(yōu)選級(jí)排序問(wèn)題,可以使用多線程或分布式爬蟲技術(shù)一次處理多個(gè)URL。
4.解析網(wǎng)頁(yè),存儲(chǔ)網(wǎng)頁(yè),獲取新的URL。根據(jù)過(guò)濾策略判斷新的URL是否與主題相關(guān),如果相關(guān)則轉(zhuǎn)步驟2 把新的URL 添加到隊(duì)列,否則丟棄該URL 轉(zhuǎn)5。
5.判斷是否達(dá)到終止條件,如果達(dá)到終止條件轉(zhuǎn)6,否則轉(zhuǎn)2。6.終止。
Web 上所有網(wǎng)頁(yè)都是通過(guò)超鏈接實(shí)現(xiàn)互相訪問(wèn),本質(zhì)是從種子URL 開始的具有層次的樹型結(jié)構(gòu)。如果一個(gè)種子頁(yè)面A 中包括BCD 四個(gè)子頁(yè)面,頁(yè)面B 包含子頁(yè)面E,頁(yè)面C 包含子頁(yè)面F,形如圖1 所示:
廣度優(yōu)先(Breadth-First-Search)遍歷策略:按照層次由淺到深的次序訪問(wèn),即首先訪問(wèn)第0 層的所有頁(yè)面,再訪問(wèn)第1 層的所有頁(yè)面,第2 層的所有頁(yè)面,……,最后訪問(wèn)第n 層的所有頁(yè)面,同一層頁(yè)面按照從左到右的次序訪問(wèn)。按照此策略對(duì)圖中6 個(gè)頁(yè)面的搜索順序是A-B-C-D-E-F。
深度優(yōu)先(Depth-First-Search)遍歷策略:依然是按照層次由淺到深的次序訪問(wèn),但每層每次僅從左到右訪問(wèn)第1 個(gè)未被訪問(wèn)過(guò)的節(jié)點(diǎn)后進(jìn)入下一層,直到縱深方向沒(méi)有可訪問(wèn)節(jié)點(diǎn)后再回退到種子節(jié)點(diǎn)重新開始下一輪由淺到深的搜索。按照此策略對(duì)圖中6 個(gè)頁(yè)面的搜索順序是A-B-E-CF-D。
除了以上2 種最常用的搜索策略之外,有時(shí)也會(huì)使用反向鏈接數(shù)策略,Partial PageRank 策略,大站優(yōu)先策略等,此處不再贅述。
語(yǔ)義分析是自然語(yǔ)言(Natural Language Processisng,NLP)中的核心部分,主要包括詞法分析、句法分析、語(yǔ)用分析和語(yǔ)境分析等。[2-3]
語(yǔ)義分析在主題網(wǎng)絡(luò)爬蟲中的處理流程如下:
1.對(duì)網(wǎng)頁(yè)的中英文進(jìn)行分詞操作,過(guò)濾掉錯(cuò)誤的短語(yǔ)和停用詞。
2.統(tǒng)計(jì)關(guān)鍵詞出現(xiàn)次數(shù)并計(jì)算頻率,根據(jù)次數(shù)、頻率、主題得出關(guān)鍵詞的權(quán)重。
3.把網(wǎng)頁(yè)信息處理成n 個(gè)分量的網(wǎng)頁(yè)向量,即每個(gè)關(guān)鍵詞在網(wǎng)頁(yè)中所占的權(quán)重。最后根據(jù)余弦公式計(jì)算出向量相似度。
4.根據(jù)相似度值對(duì)網(wǎng)頁(yè)做進(jìn)一步過(guò)濾。
主題網(wǎng)絡(luò)爬蟲應(yīng)用到智能AI 系統(tǒng)中,增強(qiáng)了智能系統(tǒng)的智能性,在沒(méi)有數(shù)據(jù)、數(shù)據(jù)量少或嚴(yán)重依賴網(wǎng)絡(luò)數(shù)據(jù)的系統(tǒng)中顯得尤為重要。根據(jù)2個(gè)基金項(xiàng)目開發(fā)的AI 智能系統(tǒng)的實(shí)踐表明,主題網(wǎng)絡(luò)爬蟲對(duì)獲取、處理特定話題的信息非常有效,而且準(zhǔn)確性較高。在設(shè)計(jì)基于主題網(wǎng)絡(luò)爬蟲的智能應(yīng)用系統(tǒng)時(shí)應(yīng)該注意結(jié)合多種算法提高信息獲取的準(zhǔn)確性,通過(guò)精心設(shè)計(jì)過(guò)濾規(guī)則和爬取條件來(lái)減少不必要的資源開銷,通過(guò)分布式爬蟲解決速度問(wèn)題和反爬問(wèn)題。