加入收藏 | 設為首頁 | 會員中心 | 我要投稿 | RSS
您當前的位置:首頁 > 社會科學 > 軍事論文

軍事教育主題爬蟲的設計與實現

時間:1970-01-01  作者:秩名

論文導讀:網絡信息資源也爆炸般的增長。如果沒有一個好的搜索引擎。試驗結果表明軍事教育主題爬蟲抓取網頁的準確度及準確率都比普通爬蟲的高。本文通過設計一個軍事教育主題爬蟲從網絡上收集有關理財網頁(代替軍隊的教育網頁),以解決本實驗室面向軍事教育主題的個性化搜索引擎的資源問題。
關鍵詞:網絡,主題爬蟲,搜索引擎,軍事教育主題爬蟲
 

l1引言

當今,隨著Intemet在國內的迅猛發展,軍隊正在向現代化建軍目標發展,為了使軍隊更快的向信息化,數字化方向發展,軍隊都在著手建設自己的信息網,網絡信息資源也爆炸般的增長,在軍隊內的信息服務器上,同樣能夠獲取許多有用的資源。如果沒有一個好的搜索引擎,查詢起來困難就可想而知。現在www網上基本都是一些商業性的探索引擎,這些引擎深度和廣度都很大,有些甚至是整個環球網進行檢索。論文發表,搜索引擎。而軍隊只需要搜索其內部網絡即可。因此在軍隊網中安置一個針對軍隊信息資源進行搜索的爬蟲十分必要。

l2軍事教育主題爬蟲的爬行策略

搜索引擎中最關鍵的部分是網絡爬蟲,它的性能好壞直接影響著搜索引擎的整體性能和處理速度。傳統的網絡爬蟲是按照預先設定的廣度優先策略、深度優先策略或這兩種策略相結合的方式爬行網頁[ 1 ] 。網絡爬蟲的搜索策略與搜索引擎的性質和任務密切相關。決定網絡爬蟲搜索策略的關鍵是如何將不相關的網頁快速地過濾并刪除掉,因為網頁過濾的速度和準確性將會直接影響網絡爬蟲的性能。以何種策略訪問Web,成為近年來主題搜索引擎網絡爬蟲研究的焦點之一。軍事教育主題爬蟲是按照最佳優先的爬行策略爬行網頁即軍事教育主題爬行時按照主題相關度優先的爬行策略爬行網頁。爬蟲從網絡上抓取到的新網頁在爬行之前都要進行主題相關度分析,與初始種子網頁相關度最高的網頁被優先爬行,而與初始種子網頁不相關或相關度不大的網頁則被拋棄。因此與傳統網絡爬蟲相比,軍事教育主題爬蟲的工作量大大減少、爬行的準確度大大提高。

l3軍事教育主題爬蟲的系統實現

3.1 設計思路與總體柜架

從設計思路上,構造Spider有兩種比較常用的方法。第一種是把Spider設計成一個遞歸的程序,第二種是編寫一個非遞歸的Spider程序,程序維護一個要訪問的網頁列表,考慮到Java對數組、隊列的包支持較為豐富,實現相對容易,本程序使用了第二種設計思路。

程序中總共維護了四個不同的隊列,它們的總結如下。每一個這樣的隊列保存著同一處理狀態的URL。

等待隊列 當Spider程序開始處理URL時,它們被傳送到這一隊列。重要的是同一個URL不能被多次處理,因為這樣是浪費的。當一個URL被處理過后,它被移送到或者是錯誤隊列或者是完成隊列。論文發表,搜索引擎。論文發表,搜索引擎。

運行隊列 當前正在處理的URL隊列。

錯誤隊列 如果在下載當前網頁時發生錯誤,它的URL將被加入到錯誤隊列。該URL到達這一隊列后將不再移入其它隊列。論文發表,搜索引擎。一旦網頁移入錯誤隊列,Spider程序將不會再對它作進一步處理。

完成隊列 如果在下載網頁時沒有發生錯誤,該URL將被加入到完成隊列。該URL到達這一隊列后將不再移入其他隊列。

明顯,每個得到的URL都只能存在于一個隊列中。其狀態流程圖如下(圖1):

評定分數計算公式采用信息檢索中常用的詞條權值計算方法為

TF-IDF 函數

Wi,j=Avg(TFi)*(1/(log(nDoc/ni)+1/log(nDoc-1)))

Avg(TFi):對詞i取其在各文檔中的TF值進行平均;

nDoc:文檔數目;

ni:出現詞i的文檔個數;

3.2程序結構及具體實現

網絡爬蟲種類很多,如有基于全文搜索的網絡爬蟲[2],聚類網絡爬蟲,主題網絡爬蟲,基于本體的網絡爬蟲等。在引入BOT包的基礎上,實現了以并發進程方式對指定站點內部網頁數據的訪問和基于隊列的處理,將抓取到的網頁數據存儲在本地數據庫中。程序由四個文件組成:CheckLinks.java; HTMLParse.java; ISpiderReportable.java;Spider.java,程序工程報告如圖2:

圖2

用TF-IDF 函數算出各個詞語的權值,最終得到全部詞的權值wordWeightOfAllDocument

public class segmenter {

public TreeMap zhwords;//用Treemap形式定義,帶標簽,方便對應查找

//下面定義的是一些統計詞項與詞頻的鏈表

public ArrayList wordSum;

public ArrayList wordCount;

public ArrayList wordAll;

public ArrayList wordCountAll;

//根據選取網頁的編碼類型,選擇不同的詞庫文件。

String newword = null;

try {

InputStream worddata = null;

if(charform == SIMP) {

worddata= getClass().getResourceAsStream('simplexu8.txt');

} else if(charform == TRAD) {

worddata= getClass().getResourceAsStream('tradlexu8.txt');

} else if(charform == BOTH) {

worddata= getClass().getResourceAsStream('bothlexu8.txt');

}

//wordSum ; wordCount; wordAll; wordCountAll;wordCountMax;這些鏈表都是為了分詞后統計出每個詞的tf值和IDF值,最后根據公式算出每個詞語的權值!

//這個是tf值的計算并記錄文件

public ArrayList getTfValue(String args){

int tmpIndex;

BufferedWriter fileOut;

ArrayList tmpArrayList = newArrayList(3);

File tmpTfFilePath=newFile('tf');

tmpTfFilePath.mkdir();

try{

fileOut=newBufferedWriter ( new FileWriter (args+'.tf'));

for(int k =0;k<wordSum.size();k++){

tmpIndex=k;

double tmp =(double)(Integer)wordCount.get(tmpIndex)).intValue()/(double) wordCountMax;

Double dTmp = newDouble(tmp); tmpArrayList.add(dTmp/*(Object)tmp*/);

//這個是IDF值的計算

for(int idfi=0;idfi<wordOfAllDocument.size();idfi++)

{

int ni=0;//how many document contains a word

String tmpString=(String)wordOfAllDocument.get(idfi);

for(int idfj=0; idfj<nDoc; idfj++)

{

if(((ArrayList)wordOfOneDocument.get(idfj)).contains(tmpString))

ni++;

}

Double dTmpdouble = newDouble(1/(Math.log(nDoc/ni)+1/Math.log(nDoc-1)));

wordIdfValueOfAllDocument.add(/*1/(Math.log(nDoc/ni)+1/Math.log(nDoc-1))*/dTmpdouble);

//IDF 采用倒數,表明在專題訓練文檔中在越多文檔中出現,其越重要。

//最后利用公式算出該詞在訓練主題中的權重 W=Avg(tf)*IDF

for(int tfi=0;tfi<wordOfAllDocument.size();tfi++){

inttmpIndex=-1;

inttni=0;

doubletfall=0.0;

StringtmpString=(String)wordOfAllDocument.get(tfi);

for(inttfj=0; tfj<nDoc; tfj++){

if((tmpIndex=((ArrayList)wordOfOneDocument.get(tfj)).indexOf(tmpString))!=-1){

tni++; tfall=tfall+((Double)(((ArrayList)wordTfValueOfOneDocument.get(tfj)).get(tmpIndex))).doubleValue();

}

}

Double dTmpdouble = newDouble(tfall/tni);

Double dTmpdoubleElse = newDouble((tfall/tni)*(((Double)wordIdfValueOfAlDocument

-.get(tfi)).doubleValue()));

wordTfValueOfAllDocument.add(dTmpdouble); wordWeightOfAllDocument.add(dTmpdoubleElse);

}

實現的流程如下,首先,CheckLinks得到一個起始的URL,在CheckLinks.run()中,新建Spider實例,把起始URL加入到等待隊列中,并通過setKeyWord()方法設置關鍵詞,setCheckRobots()、setCheckMetaTag()配置選項,程序進入正常工作。

Spider通過getWorkloadWaiting()方法得到等待隊列中的URL,調用processURL()方法對取出的URL進行處理,對此,processURL()方法內以URL為地址建立鏈接,取回對象通過parse.parse()方法對HTML進行解釋,主要是從得到的HTML中獲取新的URL并添加到等待隊列中,及對主題字的匹配。經過parse返回,則從等待隊列中移走處理的URL,如果沒有錯誤,把它添加到完成隊列中,否則添加到錯誤隊列中,程序又去等待隊列中取出URL,進行同樣的處理流程,循環一直到等待隊列為空。

3.3開發環境

實驗條件:搜索深度= 2 (設的較小,為了防止搜索規模過大) ,線程數= 100 (要求在網絡環境較好的情況下) ,起始種子= 10 (都是經過人工選擇的較好的種子) ,閾值r = 0. 6 ,中文分詞主要以中科院計算所免費版的分詞工具(C 語言開發) 為基礎。機器配置: Intel(R)Core™2 CPU T5500 @1.66Ghz,內存2048 MB。試驗結果表明軍事教育主題爬蟲抓取網頁的準確度及準確率都比普通爬蟲的高。論文發表,搜索引擎。

3.4 實驗總結及系統存在的問題

爬行速度太慢,特別是對超鏈接較多的頁面;頁面內容的多少對評分有一定影響,雖然不大,但仍需考慮;若能在網頁架構分析上添加一定的過濾,抓取核心內容,相信對抓取質量會有更大的提高,這方面也待改善。

l4結束語

本文通過設計一個軍事教育主題爬蟲從網絡上收集有關理財網頁(代替軍隊的教育網頁),以解決本實驗室面向軍事教育主題的個性化搜索引擎的資源問題。論文發表,搜索引擎。從實驗結果來看爬蟲達到了我們初步的預定目標,下一步我們將不斷對其進行完善以進一步提高其搜索精度及搜索速度。


參考文獻
[1]周立柱,林玲1聚焦爬蟲技術研究綜述1計算機應用1第25卷第9期2005年9月:1966
[2]徐遠超,劉江華,劉麗珍等.基于Web 的網絡爬蟲的設計與實現.微計算機信息.2007,23(7):119-121
[2[Programming a Spider in Java,Jeff Heaton
Biography:JinPeng(1982-),male, qingdao,China University Of Petroleum, research interests are in areas of computernetwork and. Search Engine
 

查看相關論文專題
加入收藏  打印本文
上一篇論文:淺談ZigBee技術在軍事中的應用(圖文)
下一篇論文:對普通高校軍事理論課程進行教學改革的思考
社會科學分類
職稱論文 政治論文
小學音樂論文 音樂論文
音樂鑒賞論文 美術論文
社會實踐論文 軍事論文
馬克思主義論文 職業生涯規劃論文
職業規劃論文 人文歷史論文
法律論文 文學藝術論文
企業文化論文 旅游論文
體育論文 哲學論文
鄧小平理論論文
相關軍事論文
最新軍事論文
讀者推薦的軍事論文
北京pk10开户