版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、 PAGE50 / NUMPAGES56畢 業(yè) 論 文(設(shè) 計(jì))論文(設(shè)計(jì))題目: 基于Nutch的新聞主題搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)姓 名學(xué) 號(hào)學(xué) 院專業(yè)年 級(jí)指導(dǎo)教師2014年 5月20日目 錄 TOC o 1-3 h z u HYPERLINK l _Toc388948687 摘要 PAGEREF _Toc388948687 h I HYPERLINK l _Toc388948688 ABSTRACT PAGEREF _Toc388948688 h II HYPERLINK l _Toc388948689 第1章緒論 PAGEREF _Toc388948689 h 1 HYPERLINK l
2、_Toc388948690 1.1 課題研究背景 PAGEREF _Toc388948690 h 1 HYPERLINK l _Toc388948691 1.1.1 搜索引擎發(fā)展史 PAGEREF _Toc388948691 h 1 HYPERLINK l _Toc388948692 1.1.2 通用搜索引擎面臨的問(wèn)題 PAGEREF _Toc388948692 h 3 HYPERLINK l _Toc388948693 1.2主題搜索引擎 PAGEREF _Toc388948693 h 3 HYPERLINK l _Toc388948694 1.2.1 什么是主題搜索引擎 PAGEREF _
3、Toc388948694 h 3 HYPERLINK l _Toc388948695 1.2.2 主題搜索引擎研究現(xiàn)狀 PAGEREF _Toc388948695 h 4 HYPERLINK l _Toc388948696 1.3 文本組織結(jié)構(gòu) PAGEREF _Toc388948696 h 5 HYPERLINK l _Toc388948697 第2章主題搜索引擎相關(guān)技術(shù)介紹 PAGEREF _Toc388948697 h 6 HYPERLINK l _Toc388948698 2.1 JavaCC簡(jiǎn)介 PAGEREF _Toc388948698 h 6 HYPERLINK l _Toc38
4、8948699 2.2 Tomcat 簡(jiǎn)介 PAGEREF _Toc388948699 h 8 HYPERLINK l _Toc388948700 2.3 Nutch介紹 PAGEREF _Toc388948700 h 9 HYPERLINK l _Toc388948701 2.3.1 系統(tǒng)架構(gòu) PAGEREF _Toc388948701 h 9 HYPERLINK l _Toc388948702 2.3.2 抓取過(guò)程詳解 PAGEREF _Toc388948702 h 11 HYPERLINK l _Toc388948703 2.4 中文分詞技術(shù) PAGEREF _Toc388948703
5、h 13 HYPERLINK l _Toc388948704 2.4.1 基于字典匹配的分詞方法 PAGEREF _Toc388948704 h 14 HYPERLINK l _Toc388948705 2.4.2 基于詞頻統(tǒng)計(jì)的分詞方法 PAGEREF _Toc388948705 h 14 HYPERLINK l _Toc388948706 2.4.3 基于語(yǔ)義理解的分詞方法 PAGEREF _Toc388948706 h 15 HYPERLINK l _Toc388948707 2.4.4 IK分詞器簡(jiǎn)介 PAGEREF _Toc388948707 h 15 HYPERLINK l _To
6、c388948708 2.5 本章小結(jié) PAGEREF _Toc388948708 h 15 HYPERLINK l _Toc388948709 第3章爬蟲搜索策略的研究 PAGEREF _Toc388948709 h 16 HYPERLINK l _Toc388948710 3.1 基于結(jié)構(gòu)特征 PAGEREF _Toc388948710 h 16 HYPERLINK l _Toc388948711 3.1.1 PageRank算法 PAGEREF _Toc388948711 h 16 HYPERLINK l _Toc388948712 3.1.2 HITS算法 PAGEREF _Toc38
7、8948712 h 18 HYPERLINK l _Toc388948713 3.1.3 本文實(shí)現(xiàn)的算法 PAGEREF _Toc388948713 h 19 HYPERLINK l _Toc388948714 3.2 基于容評(píng)價(jià) PAGEREF _Toc388948714 h 20 HYPERLINK l _Toc388948715 3.2.1 Fish Search算法 PAGEREF _Toc388948715 h 20 HYPERLINK l _Toc388948716 3.2.2 Shark Search算法 PAGEREF _Toc388948716 h 21 HYPERLINK
8、l _Toc388948717 3.3 其他相關(guān)策略 PAGEREF _Toc388948717 h 23 HYPERLINK l _Toc388948718 3.3.1基于鞏固學(xué)習(xí)的聚焦搜索 PAGEREF _Toc388948718 h 23 HYPERLINK l _Toc388948719 3.3.2 基于語(yǔ)境圖的聚焦搜索 PAGEREF _Toc388948719 h 23 HYPERLINK l _Toc388948720 3.4 本章小結(jié) PAGEREF _Toc388948720 h 23 HYPERLINK l _Toc388948721 第4章主題搜索引擎的實(shí)現(xiàn) PAGER
9、EF _Toc388948721 h 24 HYPERLINK l _Toc388948722 4.1 開發(fā)環(huán)境介紹 PAGEREF _Toc388948722 h 24 HYPERLINK l _Toc388948723 4.2 系統(tǒng)的體系結(jié)構(gòu) PAGEREF _Toc388948723 h 24 HYPERLINK l _Toc388948724 4.3 主題爬蟲的配置 PAGEREF _Toc388948724 h 25 HYPERLINK l _Toc388948725 4.3.1 配置Java環(huán)境 PAGEREF _Toc388948725 h 25 HYPERLINK l _Toc
10、388948726 4.3.2 配置Nutch PAGEREF _Toc388948726 h 25 HYPERLINK l _Toc388948727 4.4 Tomcat的配置 PAGEREF _Toc388948727 h 26 HYPERLINK l _Toc388948728 4.5 添加中文分詞 PAGEREF _Toc388948728 h 28 HYPERLINK l _Toc388948729 4.6 系統(tǒng)測(cè)試 PAGEREF _Toc388948729 h 30 HYPERLINK l _Toc388948730 4.7 本章小結(jié) PAGEREF _Toc388948730
11、 h 31 HYPERLINK l _Toc388948731 第5章總結(jié)與體會(huì) PAGEREF _Toc388948731 h 32 HYPERLINK l _Toc388948732 致 PAGEREF _Toc388948732 h 33 HYPERLINK l _Toc388948733 參考文獻(xiàn) PAGEREF _Toc388948733 h 34 HYPERLINK l _Toc388948734 附錄: PAGEREF _Toc388948734 h 35摘要互聯(lián)網(wǎng)上豐富的信息資源給人們的工作和生活帶來(lái)巨大效益和便利的同時(shí),也帶來(lái)了巨大的信息冗余。我們?cè)谑褂脗鹘y(tǒng)的通用搜索引擎時(shí),
12、經(jīng)常會(huì)遇到這樣的問(wèn)題,為了搜索到一些專業(yè)的基礎(chǔ)知識(shí),不得不在眾多的中,花費(fèi)大量的時(shí)間去尋找,而主題搜索引擎的出現(xiàn)為解決這類問(wèn)題提供了很好的方法。另外,由于Nutch具有高透明度,任何單位或個(gè)人都可以查看搜索引擎的工作原理并且程序設(shè)置靈活,用戶可以根據(jù)自己需求定制,通過(guò)長(zhǎng)時(shí)間的實(shí)際應(yīng)用,結(jié)果表明Nutch運(yùn)行非常穩(wěn)定,因此選擇Nutch為愛(ài)好搜索引擎的人們提供了一個(gè)很好的研究平臺(tái)。本課題的主要容是基于Nutch的新聞主題搜索引擎的設(shè)計(jì)與實(shí)現(xiàn)。現(xiàn)在很多人都喜歡從互聯(lián)網(wǎng)閱讀新聞,但是各大新聞為了獲得點(diǎn)擊率收錄了很多低質(zhì)量新聞,而報(bào)紙很難滿足人們對(duì)不同地域和不同類型新聞的需求,所以一個(gè)新聞主題的搜索引
13、擎是十分有必要的。論文首先介紹了搜索引擎的發(fā)展歷史、面臨的問(wèn)題,以與主題搜索引擎的的優(yōu)勢(shì)和研究現(xiàn)狀,并在了解Nutch工作原理的基礎(chǔ)上對(duì)主題爬蟲抓取策略進(jìn)了詳細(xì)的討論,分析了新聞主題搜索引擎的可行方案,接著介紹了Nutch、Tomcat等各組件的安裝配置,測(cè)試運(yùn)行結(jié)果并與百度做比較。最后對(duì)論文進(jìn)行了總結(jié)分析。關(guān)鍵字:Nutch;搜索引擎;Crawler;抓取策略;新聞ABSTRACTAbundant Internet information resources bring enormous benefits and convenience for our work and life; thes
14、e also bring a great deal of redundant information. When we use general Search Engine, weoften encounter this problem; in order to search some basic professional knowledge, we had to spend alot of time to find the knowledge in many websites. While the Vertical Search Engine willsolve this problem. I
15、n addition, Nutch has highly transparent, any unit or individual can view the searchengine work, and the program configuration flexibility, Users can customize according totheir needs. Through a long period of practical application, the results show that Nutch runsvery stable. Therefore, selecting t
16、he Nutch Search Engine can provide a good researchingplatform for the loving people.The object of this project is to set up a News Vertical Search Engine based on Nutch. Nowadays plenty of people read news from the Internet. While the news websites always put some low-quality news to catch readers e
17、yes, and the newspaper websites can hardly feed readers various needs. Thus, it is very necessary to provide a News Vertical Search Engine for them. The paper first introduced the history, present problems of Search Engine, and the advantages, present situation of Topical Search Engine. Then we disc
18、ussed the strategies of Focused Crawler and proposed a solution of News Topical Search Engine with knowledge in the process of Nutch. After that, we talked about setting up and configuring the components we need. Then we ran the engine so we could compare the results with Baidus. At last, we tested
19、the Search Engine and made a summary of this project.Keywords: Nutch; Search Engine; Crawler; Fetching Strategy; News 第1章 緒論1.1 課題研究背景隨著社會(huì)的進(jìn)步和科技的發(fā)展,人們對(duì)信息的需求量越來(lái)越大,對(duì)質(zhì)量的要求也越來(lái)越高。而互聯(lián)網(wǎng)已經(jīng)成為很多人獲取信息的主要渠道。怎樣從海量的信息和龐大的地址群中找到自己想要的信息呢?搜索引擎的出現(xiàn)很好的解決了這個(gè)問(wèn)題,成為大多數(shù)用戶的“上網(wǎng)第一站”1。1.1.1搜索引擎發(fā)展史所謂搜索引擎,就是一種能夠自動(dòng)對(duì)WWW資源建立索引或進(jìn)行主題分
20、類,并通過(guò)查詢?yōu)橛脩舴祷叵嚓P(guān)資源的系統(tǒng)。在互聯(lián)網(wǎng)發(fā)展初期,相對(duì)較少,信息查找比較容易。然而伴隨互聯(lián)網(wǎng)爆炸性的發(fā)展,普通網(wǎng)絡(luò)用戶想找到所需的資料簡(jiǎn)直如同大海撈針,這時(shí)為滿足大眾信息檢索需求的專業(yè)搜索便應(yīng)運(yùn)而生了。 現(xiàn)代意義上的搜索引擎的祖先,是1990年由蒙特利爾大學(xué)學(xué)生Alan Emtage發(fā)明的Archie。雖然當(dāng)時(shí)World Wide Web還未出現(xiàn),但網(wǎng)絡(luò)中文件傳輸還是相當(dāng)頻繁的,而且由于大量的文件散布在各個(gè)分散的FTP主機(jī)中,查詢起來(lái)非常不便,因此Alan Emtage想到了開發(fā)一個(gè)可以以文件名查找文件的系統(tǒng),于是便有了Archie2。 Archie工作原理與現(xiàn)在的搜索引擎已經(jīng)很接近,
21、它依靠腳本程序自動(dòng)搜索網(wǎng)上的文件,然后對(duì)有關(guān)信息進(jìn)行索引,供使用者以一定的表達(dá)式查詢。由于Archie深受用戶歡迎,受其啟發(fā),美達(dá)大學(xué)于1993年開發(fā)了另一個(gè)與之非常相似的搜索工具System Computing Services,不過(guò)此時(shí)的搜索工具除了索引文件外,已能檢索網(wǎng)頁(yè)。 當(dāng)時(shí),“機(jī)器人”一詞在編程者中十分流行。電腦“機(jī)器人”(Computer Robot)是指某個(gè)能以人類無(wú)法達(dá)到的速度不間斷地執(zhí)行某項(xiàng)任務(wù)的軟件程序。由于專門用于檢索信息的“機(jī)器人”程序象蜘蛛一樣在網(wǎng)絡(luò)間爬來(lái)爬去,因此,搜索引擎的“機(jī)器人”程序就被稱為“蜘蛛”程序。 世界上第一個(gè)用于監(jiān)測(cè)互聯(lián)網(wǎng)發(fā)展規(guī)模的“機(jī)器人”程序是
22、Matthew Gray開發(fā)的World wide Web Wanderer。剛開始它只用來(lái)統(tǒng)計(jì)互聯(lián)網(wǎng)上的服務(wù)器數(shù)量,后來(lái)則發(fā)展為能夠檢索域名。 與Wanderer相對(duì)應(yīng),Martin Koster于1993年10月創(chuàng)建了ALIWEB,它是Archie的 版本3。ALIWEB不使用“機(jī)器人”程序,而是靠主動(dòng)提交信息來(lái)建立自己的索引,類似于現(xiàn)在我們熟知的Yahoo。 隨著互聯(lián)網(wǎng)的迅速發(fā)展,使得檢索所有新出現(xiàn)的網(wǎng)頁(yè)變得越來(lái)越困難,因此,在Matthew Gray的Wanderer基礎(chǔ)上,一些編程者將傳統(tǒng)的“蜘蛛”程序工作原理作了些改進(jìn)。其設(shè)想是,既然所有網(wǎng)頁(yè)都可能有連向其他的,那么從跟蹤一個(gè)的開始
23、,就有可能檢索整個(gè)互聯(lián)網(wǎng)。到1993年底,一些基于此原理的搜索引擎開始紛紛涌現(xiàn),其中以JumpStation、The World Wide Web Worm(Goto的前身,也就是今天Overture),和Repository-Based Software Engineering (RBSE) spider最負(fù)盛名。 然而JumpStation和WWW Worm只是以搜索工具在數(shù)據(jù)庫(kù)中找到匹配信息的先后次序排列搜索結(jié)果,因此毫無(wú)信息關(guān)聯(lián)度可言。而RBSE是第一個(gè)在搜索結(jié)果排列中引入關(guān)鍵字串匹配程度概念的引擎。 最早現(xiàn)代意義上的搜索引擎出現(xiàn)于1994年7月。當(dāng)時(shí)Michael Mauldin將J
24、ohn Leavitt的蜘蛛程序接入到其索引程序中,創(chuàng)建了大家現(xiàn)在熟知的Lycos4。同年4月,斯坦福(Stanford)大學(xué)的兩名博士生,David Filo和美籍華人致遠(yuǎn)(Gerry Yang)共同創(chuàng)辦了超級(jí)目錄索引Yahoo,并成功地使搜索引擎的概念深入人心。從此搜索引擎進(jìn)入了高速發(fā)展時(shí)期。目前,互聯(lián)網(wǎng)上有名有姓的搜索引擎已達(dá)數(shù)百家,其檢索的信息量也與從前不可同日而語(yǔ)。比如最近風(fēng)頭正勁的Google,其數(shù)據(jù)庫(kù)中存放的網(wǎng)頁(yè)已達(dá)30億之巨! 隨著互聯(lián)網(wǎng)規(guī)模的急劇膨脹,一家搜索引擎光靠自己?jiǎn)未颡?dú)斗已無(wú)法適應(yīng)目前的市場(chǎng)狀況,因此現(xiàn)在搜索引擎之間開始出現(xiàn)了分工協(xié)作,并有了專業(yè)的搜索引擎技術(shù)和搜索數(shù)
25、據(jù)庫(kù)服務(wù)提供商。象國(guó)外的Inktomi(已被Yahoo收購(gòu)),它本身并不是直接面向用戶的搜索引擎,但向包括Overture(原GoTo,已被Yahoo收購(gòu))、LookSmart、MSN、HotBot等在的其他搜索引擎提供全文網(wǎng)頁(yè)搜索服務(wù)。國(guó)的百度也屬于這一類,搜狐和新浪用的就是它的技術(shù)。因此從這個(gè)意義上說(shuō),它們是搜索引擎的搜索引擎。1.1.2 通用搜索引擎面臨的問(wèn)題通用搜索引擎信息采集的目標(biāo)就是盡可能多地采集信息、頁(yè)面,甚至是整個(gè)Web上的資源。隨著WWW信息的爆炸性增長(zhǎng),信息采集的速度越來(lái)越不能滿足實(shí)際應(yīng)用的需要。最近的試驗(yàn)表明,即使大型的搜索引擎,它對(duì)Web的覆蓋率也只有30-40%。解決
26、這一問(wèn)題的直接辦法是升級(jí)信息采集器的硬件,采用處理能力更強(qiáng)的計(jì)算機(jī)系統(tǒng),然而這種方法的擴(kuò)展性有限,性價(jià)比也不高。一個(gè)更好的解決方法是采用分布式方法來(lái)提高并行能力,但是并行不但增加了系統(tǒng)的開銷和設(shè)計(jì)的復(fù)雜性,并且并行換來(lái)的效益也隨著并行采集器數(shù)目的增加而顯著地減小。目前,一般的大型搜索引擎都采用了并行機(jī)制,但并行帶來(lái)的改善效果仍遠(yuǎn)不能滿足人們的需要,人們需要從其它角度改善目前的困境。針對(duì)上述情況,另一種形式的搜索引擎悄然出現(xiàn),它可以在較小的圍取得比通用搜索引擎更令人滿意的結(jié)果,以滿足某些特定用戶的需要,這就是主題搜索引擎。1.2主題搜索引擎1.2.1 什么是主題搜索引擎所謂主題搜索引擎(Topi
27、cal Search Engine),是針對(duì)某一特定領(lǐng)域、某一特定人群或某一特定需求提供的有一定價(jià)值的信息和相關(guān)服務(wù)。其特點(diǎn)就是“專、精、深”,且具有行業(yè)色彩。它是與通用搜索引擎截然不同的引擎類型。主題搜索引擎專注具體、深入的縱向服務(wù),致力于某一特定領(lǐng)域信息的全面和容的深入,這個(gè)領(lǐng)域外的閑雜信息不收錄。從競(jìng)爭(zhēng)的角度來(lái)講,主題搜索引擎要做通用搜索引擎無(wú)法做到的事情,或者說(shuō),要做得更勝一籌。通用搜索引擎像一堵大墻,而墻上有很多裂紋,主題搜索引擎就是要去補(bǔ)這些墻上的裂紋5。1.2.2主題搜索引擎研究現(xiàn)狀主題搜索引擎的優(yōu)勢(shì),將決定它在互聯(lián)網(wǎng)的一席之地。那么主題搜索的突破點(diǎn)和創(chuàng)新的東西在哪里?實(shí)時(shí)性主題
28、搜索引擎需要獲取的信息來(lái)自于某一特定領(lǐng)域的,這比起通用搜索引擎漫無(wú)邊際的信息抓取,有一個(gè)非常大的優(yōu)勢(shì),那就是信息的實(shí)時(shí)性。由于互聯(lián)網(wǎng)上的信息量非常巨大,通用搜索引擎的數(shù)據(jù)更新周期短則十幾天,長(zhǎng)則幾個(gè)月,而主題搜索引擎的數(shù)據(jù)更新完全可以以秒為單位??嵊崳╧ooxoo.)的火車票搜索就是典型的實(shí)時(shí)性主題搜索。數(shù)據(jù)挖掘分析行業(yè)的歷史發(fā)展、最新動(dòng)向、趨勢(shì)都是行業(yè)從業(yè)人員非常關(guān)注的話題。主題搜索引擎集中了行業(yè)海量的信息和數(shù)據(jù),基于這些信息和數(shù)據(jù)的商務(wù)智能分析,將為行業(yè)創(chuàng)造非常有價(jià)值的信息增值服務(wù)。目前,各個(gè)主題搜索引擎開始加強(qiáng)數(shù)據(jù)分析功能,分析的結(jié)果尚未向公眾免費(fèi)開放,畢竟,這也是一個(gè)非常好的盈利點(diǎn)。個(gè)
29、性化,社會(huì)化 查詢服務(wù)只是主題搜索引擎的一部分,主題搜索引擎在用戶的個(gè)性化方向的發(fā)展非常重要。主題搜索引擎不能只提供一個(gè)窗口,它應(yīng)該是一個(gè)用戶高度參與交互的社會(huì)化平臺(tái)。這不光是用戶粘度,忠誠(chéng)度的問(wèn)題,更為重要的是,主題搜索引擎需要能夠獲取并且分析用戶的偏好信息,從而提供更加完善而且準(zhǔn)確的數(shù)據(jù)服務(wù)。職友集(.jobui.)可以說(shuō)走在了前面,其職友圈為找工作的人提供了參與性很高的平臺(tái)。智能化語(yǔ)義網(wǎng) 語(yǔ)義網(wǎng)(Semantic Web)將有可能成為下一代互聯(lián)網(wǎng),這樣網(wǎng)絡(luò)上的數(shù)據(jù)和信息將被計(jì)算機(jī)程序所理解。這將為主題搜索引擎提供一個(gè)巨大的機(jī)會(huì),爬蟲程序如果能理解網(wǎng)絡(luò)上的數(shù)據(jù),將對(duì)信息的收集和整理更加準(zhǔn)確
30、和專業(yè),搜索服務(wù)的查全率和查準(zhǔn)率將更高。國(guó)外的Pluggd(.Pluggd.)正在向這個(gè)方向努力。多元化查詢目前的搜索引擎,都只局限于關(guān)鍵字搜索,其中主要的原因是,對(duì)用戶的查詢需求無(wú)法建模,無(wú)法模式化。而關(guān)鍵字搜索帶來(lái)的問(wèn)題是,搜索結(jié)果過(guò)多,并且不準(zhǔn)確。互聯(lián)網(wǎng)信息量越大,這種情況越嚴(yán)重,可以說(shuō)是災(zāi)難。多元化查詢服務(wù)的提供,將會(huì)成為對(duì)競(jìng)爭(zhēng)對(duì)手的殺手锏。Riya(.riya.)正在這方面嘗試,它提出了可視化查詢(Visual Search)的概念6。1.3 文本組織結(jié)構(gòu)本文共分為五章,全文結(jié)構(gòu)安排如下:第一章緒論主要介紹了課題的研究背景以與發(fā)展現(xiàn)狀;第二章總體介紹了開發(fā)主題搜索引擎所用到的各個(gè)組件
31、與軟件,其中重點(diǎn)介紹了Nutch搜索引擎的系統(tǒng)架構(gòu)、Crawler的組成和Crawler的工作流程以與中文分詞的實(shí)現(xiàn)方法;第三章討論了幾種實(shí)現(xiàn)主題爬取的爬蟲搜索策略,包括本文所使用的爬蟲策略;第四章是基于Nutch的主題搜索引擎的具體實(shí)現(xiàn),包括開發(fā)環(huán)境的搭建、環(huán)境變量的設(shè)置、主題爬蟲和索引的設(shè)計(jì);第五章為本論文的結(jié)束語(yǔ),對(duì)本次設(shè)計(jì)做了總結(jié)和展望。第2章 主題搜索引擎相關(guān)技術(shù)介紹因?yàn)楸疚氖窃贏pache的兩個(gè)開源項(xiàng)目Nutch、Tomcat的基礎(chǔ)上進(jìn)行主題判別,而這兩個(gè)項(xiàng)目的相關(guān)資料很少,只有在了解其工作原理的基礎(chǔ)上才能做更好的改進(jìn),所以我們通過(guò)本章來(lái)分析項(xiàng)目中的關(guān)鍵技術(shù)。2.1 JavaCC簡(jiǎn)
32、介JavaCC是一個(gè)功能極其強(qiáng)大的“編譯器的編譯器”工具,可用于編制上下文無(wú)關(guān)的語(yǔ)法,集分詞和語(yǔ)法分析于一身的針對(duì)Java語(yǔ)言的文本自動(dòng)分詞軟件包,類似于UNIX系統(tǒng)中的LEX和YACC工具。JavaCC把這兩者的功能結(jié)合,形成了一個(gè)功能強(qiáng)大的分析工具。用戶只需寫出分析腳本,JavaCC就會(huì)生成符合用戶要求的類,用來(lái)進(jìn)行詞法和語(yǔ)法分析。JavaCC使用了自動(dòng)機(jī)的理論,而不是遞歸下降分析,Nutch正是利用JavaCC這個(gè)十分強(qiáng)大的工具,生成系統(tǒng)的分詞器。JavaCC的語(yǔ)法定義是由正規(guī)式 (RegularExpression)來(lái)完成的7。這里指的是上下文無(wú)關(guān)文法。理解形式文法的定義,才能更好地理
33、解和使用JavaCC。在一種語(yǔ)言中,存在非終結(jié)符和終結(jié)符兩種單詞。正規(guī)式就定義了一個(gè)非終結(jié)符怎樣被替換為另一個(gè)字符串。正規(guī)式可以描述一種語(yǔ)言,符合該正規(guī)式定義的所有句子都是這個(gè)語(yǔ)言的句子。或者,正規(guī)式描述了正規(guī)文法,又稱線性文法,或上下文無(wú)關(guān)文法。稱為線性是因?yàn)檫@種文法可以從前到后順序的被指定為一個(gè)句子。JavaCC的語(yǔ)法定義功能十分強(qiáng)大,可以做幾乎所有的限制和指定。JavaCC的長(zhǎng)處在于它的簡(jiǎn)單性和可擴(kuò)展性。要編譯由JavaCC生成的Java代碼,無(wú)需任何外部JAR文件或目錄。僅僅用基本的編譯器就可以進(jìn)行編譯。而該語(yǔ)言的布局也使得它易于添加產(chǎn)生式規(guī)則和行為。JavacCC的輸入文本是一個(gè)詞法
34、和語(yǔ)法的規(guī)文件,其中也包括一些動(dòng)作的描述,它的后綴應(yīng)該是jj。一個(gè)jj文本由下面幾個(gè)部分構(gòu)成:Options部分:這個(gè)部分對(duì)產(chǎn)生的語(yǔ)法分析器的特性進(jìn)行說(shuō)明,例如向前看的token的個(gè)數(shù)(用來(lái)解除沖突)。這一部分是可以省略的,因?yàn)槊恳粋€(gè)選項(xiàng)都有默認(rèn)值,當(dāng)我們沒(méi)有對(duì)某個(gè)選項(xiàng)進(jìn)行說(shuō)明時(shí),它就采用默認(rèn)值。也可以把這些選項(xiàng)作為JavaCC命令的參數(shù)來(lái)啟動(dòng)JavaCC,可以達(dá)到同樣的效果。分析器類的聲明:這個(gè)部分指定了分析器類的名字,以與其他類中成員的聲明。這個(gè)部分是必須有的。這個(gè)部分的聲明如下:PARSER_BEGIN(elassname)ClasselassnamePARSER_END(classna
35、me)8詞法部分的聲明:這里面有四類:SKIP、TOKEN、SPECIALJOKEN、MORE。其中,SKIP用來(lái)說(shuō)明被忽略的串,TOKEN用來(lái)說(shuō)明在詞法層次上識(shí)別的token。在詞法聲明部分,以#開頭的token只是在詞法分析時(shí)使用,不能作為語(yǔ)法分析的輸入,也就是說(shuō),它相對(duì)詞法分析是局部的。語(yǔ)法聲明和動(dòng)作代碼:這一部分生成的代碼會(huì)直接插入分析器類聲明的結(jié)束括號(hào)之前。一般而言,語(yǔ)法中的每一個(gè)非終結(jié)符都對(duì)應(yīng)一個(gè)函數(shù)。以上說(shuō)明的是jj文件的組成部分,下面再說(shuō)明一下jj文件中語(yǔ)法的表示方法。JavaCC中的語(yǔ)法表示吸收了UNIX中正規(guī)文法的一些記號(hào):其中的容是可選的。+:前面的容出現(xiàn)一次或多次。-:
36、前后構(gòu)成的閉區(qū)間。 *:前面的容出現(xiàn)0次或多次。?:前面的容出現(xiàn)0次或一次。:后面的容的補(bǔ)。| :前面或后面。():改變運(yùn)算的優(yōu)先級(jí),把其中的容作為一個(gè)整體9。利用JavaCC構(gòu)造中文分析模塊:JavaCC是根據(jù)西方語(yǔ)言的形式文法理論設(shè)計(jì)的,不能直接解決中文問(wèn)題。當(dāng)仔細(xì)研究后,發(fā)現(xiàn)所謂的“中文問(wèn)題”實(shí)際上就是如何把上下文無(wú)關(guān)文法轉(zhuǎn)變?yōu)樯舷挛南嚓P(guān)文法。EBNF當(dāng)然不能解決這個(gè)問(wèn)題。通過(guò)寫入Java代碼,用各種對(duì)象和標(biāo)志變量制作特殊的“上下文”環(huán)境,就可以實(shí)現(xiàn)JavaCC的中文分詞。Nutch原來(lái)的腳本在TOKEN段進(jìn)行了精細(xì)的刻畫,對(duì)于英文單詞、主機(jī)地址、電子地址、數(shù)字、縮寫等各種格式都進(jìn)行了考
37、慮。只需利用中文分詞功能,直接傳入中文句子,得到ArrayList類型的返回結(jié)果。因此,所做的工作就是事先分出一個(gè)全部是中文的字符串,這一點(diǎn)通過(guò)下面的定義實(shí)現(xiàn):CHINESE: ()+ (“”)上面的CHINESE的定義為:由漢字開頭,包含漢字或空格的最長(zhǎng)的字符串,而漢字則定義為CJK。CJK即中國(guó)、日本、朝鮮和國(guó)使用的中國(guó)漢字的總稱,全稱為 CJK Ideographs(CJK象形文字),這是Unieode標(biāo)準(zhǔn)所定義的10。2.2 Tomcat簡(jiǎn)介用戶一般通過(guò)瀏覽器進(jìn)行查詢,這就需要系統(tǒng)提供Web服務(wù)器并且與索引數(shù)據(jù)庫(kù)進(jìn)行連接。用戶在瀏覽器中輸入查詢條件,Web服務(wù)器接收到用戶的查詢條件后在
38、索引數(shù)據(jù)庫(kù)中進(jìn)行查詢、排列然后返回給用戶。Web服務(wù)器是在網(wǎng)絡(luò)中為實(shí)現(xiàn)信息發(fā)布、資料查詢、數(shù)據(jù)處理等諸多應(yīng)用搭建基本平臺(tái)的服務(wù)器。在Web頁(yè)面處理致可分為三個(gè)步驟,第一步,Web瀏覽器向一個(gè)特定的服務(wù)器發(fā)出Web頁(yè)面請(qǐng)求;第二步,Web服務(wù)器接收到Web頁(yè)面請(qǐng)求后,尋找所請(qǐng)求的Web頁(yè)面,并將所請(qǐng)求的Web頁(yè)面?zhèn)魉徒oWeb瀏覽器;第三步,Web服務(wù)器接收到所請(qǐng)求的Web頁(yè)面,并將它顯示出來(lái)。我們選擇Tomcat的原因是因?yàn)樗粌H僅是一個(gè)Servlet容器,也具有傳統(tǒng)的Web服務(wù)器的功能,是Apache基金會(huì)的Jakarta項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun和其它一些公司與個(gè)人共同開發(fā)
39、而成。由于有了Sun的參與和支持,最新的Servlet和Jsp規(guī)總能在Tomcat中得到體現(xiàn)。本系統(tǒng)中用到的Tomeat6.0.26完整地實(shí)現(xiàn)了Servlet2.4和JavaServer Pages2.0規(guī)11。由于Java的跨平臺(tái)特性,基于Java的Tomcat也具有跨平臺(tái)性。與傳統(tǒng)的桌面應(yīng)用程序不同,Tomcat中的應(yīng)用程序是一個(gè) WAR(Web Archive)文件。WAR是Sun提出的一種Web應(yīng)用程序格式,與JAR類似,也是許多文件的一個(gè)壓縮包。這個(gè)包中的文件按一定目錄結(jié)構(gòu)來(lái)組織:通常其根目錄下包含有Html和Jsp文件或者包含這兩種文件的目錄,另外還會(huì)有一個(gè)WEB-INF目錄,這個(gè)
40、目錄很重要。在WEB-INF目錄下有一個(gè)web.xml文件和一個(gè)classes目錄,web.xml是這個(gè)應(yīng)用的配置文件,而classes目錄下則包含編譯好的Servlet類和Jsp或Servlet所依賴的其它類(如JavaBean)。通常這些所依賴的類也可以打包成JAR放到WEB-INF下的lib目錄下,當(dāng)然也可以放到系統(tǒng)的CLASSPATH中,但那樣移植和管理起來(lái)不方便。Tomcat能處理Html頁(yè)面。在Tomcat中,可以利用Servlet提供的事件監(jiān)聽器功能,對(duì)應(yīng)用或者Session實(shí)行監(jiān)聽。Tomcat也提供其它的一些特征,如與SSL集成到一塊,實(shí)現(xiàn)安全傳輸。Tomcat與應(yīng)用服務(wù)器的
41、主要區(qū)別是:應(yīng)用服務(wù)器提供更多的J2EE特征,如E,JMS,JAAS等,同時(shí)也支持Jsp和Servlet。而Tomcat功能則沒(méi)有那么強(qiáng)大,它不提供E等支持。但如果與oss(一個(gè)開源的應(yīng)用服務(wù)器)集成到一塊,則可以實(shí)現(xiàn)J2EE的全部功能。既然應(yīng)用服務(wù)器具有Tomcat的功能,那么Tomcat有沒(méi)有存在的必要呢?事實(shí)上,我們的很多中小應(yīng)用不需要采用E等技術(shù),Jsp和Servlet己經(jīng)足夠,這時(shí)如果用應(yīng)用服務(wù)器就有些浪費(fèi)了。而Tomcat短小精悍,配置方便,能滿足我們的需求。2.3 Nutch介紹2.3.1系統(tǒng)架構(gòu)總體上Nutch可以分為2個(gè)部分:抓取部分和搜索部分。抓取部分抓取頁(yè)面并把抓取回來(lái)的
42、數(shù)據(jù)做成倒排索引,搜索部分則搜索倒排索引以回答用戶的請(qǐng)求。抓取部分和搜索部分的接口是索引,兩者都使用索引中的字段。抓取部分和搜索部分可以分別位于不同的機(jī)器上。下面詳細(xì)介紹一下抓取部分組成。抓取部分是由Nutch的抓取工具驅(qū)動(dòng)的。這組工具用來(lái)建立和維護(hù)幾個(gè)不同的數(shù)據(jù)結(jié)構(gòu):WebDB,segment,index。 WebDB。是一個(gè)特殊存儲(chǔ)數(shù)據(jù)結(jié)構(gòu),保存被抓取數(shù)據(jù)的結(jié)構(gòu)和屬性,只被抓取程序使用,搜索程序并不使用它。WebDB存儲(chǔ)2種實(shí)體:頁(yè)面和。頁(yè)面表示網(wǎng)絡(luò)上的一個(gè)網(wǎng)頁(yè),這個(gè)網(wǎng)頁(yè)的URL作為標(biāo)識(shí)被索引,同時(shí)建立一個(gè)對(duì)網(wǎng)頁(yè)容的MDS哈希簽名,跟網(wǎng)頁(yè)相關(guān)的其它容也被存儲(chǔ),主要包括:頁(yè)面中的數(shù)量(外)、
43、頁(yè)面抓取信息(在頁(yè)面被重復(fù)抓取的情況下)、表示頁(yè)面級(jí)別的分?jǐn)?shù) Score。表示從一個(gè)網(wǎng)頁(yè)的到其它網(wǎng)頁(yè)的。因此WebDB可以說(shuō)是一個(gè)網(wǎng)絡(luò)圖,頁(yè)面作為節(jié)點(diǎn),是邊。WebDB由以下數(shù)據(jù)組成:a、爬行數(shù)據(jù)庫(kù)(crawdb):包含所有Nutch已知的URL,這個(gè)URL是否被爬過(guò),如果被爬過(guò),是什么時(shí)候。b、數(shù)據(jù)庫(kù)(linkdb):這里面包含的信息是每個(gè)URL己知的信息。WebDB里有4個(gè)文件,在物理視圖上是文件夾:pagesByURL:按URL排序的page對(duì)象數(shù)組pageSByMDS:按MD5排序的page對(duì)象數(shù)組linksByURL:按URL排序的Link對(duì)象數(shù)組linksByMDS:按MD5排序的
44、Link對(duì)象數(shù)組segment。被索引的網(wǎng)頁(yè)集合。每個(gè)segment由5個(gè)文件夾組成,如果建立了索引就是六個(gè)文件夾。其中每個(gè)文件夾是一個(gè)ArrayFile對(duì)象。Segment的Fetehlist保存的是從WebDB中生成的抓取程序使用的URL列表。Fetcher文件夾里保存的是抓取狀態(tài)信息,輸出數(shù)據(jù)是從fetchlist中抓取到的網(wǎng)頁(yè)。Fetcher的輸出數(shù)據(jù)先被索引,索引后的結(jié)果存儲(chǔ)在segment中。文件夾Content里保存抓取回來(lái)的網(wǎng)頁(yè)容,包括 頭信息和其它元信息。搜索時(shí),如果選查看緩存頁(yè)面,就從此處讀數(shù)據(jù)。parse_data文件夾里保存的是從網(wǎng)頁(yè)中解析出來(lái)的一些數(shù)據(jù),例如元數(shù)據(jù)。p
45、arse_text文件夾中保存從網(wǎng)頁(yè)中解析出來(lái)的文本數(shù)據(jù)。Segment的生命周期是有限制的,當(dāng)下一輪抓取開始后它就沒(méi)有用了。默認(rèn)的重新抓取間隔是30天。因此可以刪除超過(guò)這個(gè)時(shí)間期限的segment,而且也可以節(jié)省不少磁盤空間。Segment的命名是日期加時(shí)間,因此很直觀的可以看出他們的存活周期。index。索引系統(tǒng)中所有被抓取的頁(yè)面,它并不直接從頁(yè)面產(chǎn)生,而是合并很多小的segment的索引。Nuteh使用Lueene來(lái)建立索引,但Lucene的segment的概念和Nutch的segment概念是完全不同的。簡(jiǎn)單來(lái)說(shuō)Lucene的segment是Lucene索引庫(kù)的一部分,而Nutch的S
46、egment是WebDB中被抓取和索引的一部分。2.3.2 抓取過(guò)程詳解抓取是一個(gè)循環(huán)的過(guò)程:抓取工具從WebDB中生成了一個(gè)fetchlist集合;抽取工具根據(jù)fetchlist從Web上下載網(wǎng)頁(yè)容;根據(jù)抽取工具發(fā)現(xiàn)的新更新WebDB;然后再生成新的fetchlist,周而復(fù)始。這個(gè)抓取循環(huán)在Nutch中經(jīng)常指:generate/fetch/update循環(huán)12。一般來(lái)說(shuō)同一域名下的URL會(huì)被合成到同一個(gè)fetchlist。當(dāng)同時(shí)使用方法多個(gè)工具抓取的時(shí)候,這樣做就不會(huì)產(chǎn)生重復(fù)抓取的現(xiàn)象。Nutch遵循Robots Exclusion協(xié)議,可以用robots.txt定義保護(hù)私有網(wǎng)頁(yè)數(shù)據(jù)不被抓
47、去。此抓取工具的組合是Nutch最外層的,也可以直接使用更底層的工具。上述過(guò)程分別詳述如下,括號(hào)是底層工具的名字:1、 創(chuàng)建一個(gè)新的 WebDB (admin db -create)2、 把開始抓取的根URL放入WebDB (inject)3、 從WebDB的新segment中生成fetchlist (generate)4、 根據(jù)fetchlist列表抓取網(wǎng)頁(yè)的容 (fetch)5、 根據(jù)抓取回來(lái)的網(wǎng)頁(yè)URL更新WebDB (updatedb)6、 重復(fù)上面3-5步直到達(dá)到指定抓取層數(shù)7、 用計(jì)算出來(lái)的網(wǎng)頁(yè)URL權(quán)重scores更新segments (updatesegs)8、 對(duì)抓取回來(lái)的網(wǎng)
48、頁(yè)建立索引 (index)9、 在索引中消除重復(fù)的容和重復(fù)的URL (dedup)10、合并多個(gè)索引到一個(gè)大索引,為搜索提供索引庫(kù) (merge)在創(chuàng)建了一個(gè)新的WebDB后,抓取循環(huán)generate/fetch/update就根據(jù)第二步指定的根URL在一定周期下自動(dòng)循環(huán)了。抓取循環(huán)結(jié)束后,生成一個(gè)最終的索引(第7步到第10步)。第8步中每個(gè)segment的索引都是單獨(dú)建立的,之后才消重(第9步)。第10步就大功告成,合并單獨(dú)的索引到一個(gè)大索引庫(kù)。Dedup工具可以從segment的索引中去除重復(fù)的URL。因?yàn)閃ebDB中不允許重復(fù)的URL,也就是說(shuō)fetchlist中不會(huì)有重復(fù)的URL,所以
49、不需要對(duì)fetchlist執(zhí)行dedup操作。默認(rèn)的抓取周期是30天,如果已經(jīng)生成的舊fetch沒(méi)有刪除,而又生成了新的fetch,還是會(huì)出現(xiàn)重復(fù)的URL的。當(dāng)只有一個(gè)抓取程序運(yùn)行的時(shí)候是不會(huì)發(fā)生上述情況的。在爬蟲中,抓取是最主要的操作,其作用就是抓取網(wǎng)頁(yè),但抓取的單位不是單個(gè)網(wǎng)頁(yè),而是同屬于一個(gè)segment的網(wǎng)頁(yè)集合。下面我們仔細(xì)分析下這個(gè)類。Run()函數(shù)逐個(gè)實(shí)例化抓取線程FetcherThread對(duì)象,然后觸發(fā)各個(gè)線程的start()函數(shù),在其初始化threadCount個(gè)線程并等待線程結(jié)束后或者出現(xiàn)大的異常后,此函數(shù)調(diào)用close()結(jié)束輸入輸出流。FetcherThread是Fet
50、cher類的一個(gè)部類它繼承于java.lang, Thread類,只有一個(gè)實(shí)體方法run()和三個(gè)靜態(tài)函數(shù):handleFetch(),handleNoFetch(),logError()。FetcherThread.run()實(shí)例化了一個(gè)新的FetchListEntry實(shí)例,叫“fle”然后執(zhí)行以下循環(huán):1、如果出現(xiàn)錯(cuò)誤,記錄并退出循環(huán)2、從FetchList中取得下一個(gè)URL集,如果取得結(jié)果為空,退出循環(huán)3、從FetchListEntry解析出URL4、如果FetchListEntry沒(méi)有被標(biāo)記為“fetch”(未抓取此URL的網(wǎng)頁(yè)),調(diào)用this.handleNoFetch()函數(shù),設(shè)置
51、status=1。然后逐步執(zhí)行:取得此URL的MD5摘要建立Fetcheroutput (fle,hash,status)建立空的Content、ParseText和ParseData對(duì)象利用這些對(duì)象調(diào)用FetcherOutputPage()函數(shù)5、如果標(biāo)記為“fetch”(己抓取此URL的網(wǎng)頁(yè)),調(diào)用ProtocolFactory并取得符合此URL的協(xié)議和容對(duì)象。6、調(diào)用Cal1 this.handleFetch(url,fle,content),然后逐步執(zhí)行:調(diào)用符合此容類型的ParserFactory.getParser()執(zhí)行parser.getParse(content)利用新建立的
52、Fetcheroutput和URL的MD5摘要,產(chǎn)生的容對(duì)象和己解析的ParseText調(diào)用Feteher.outputPage()函數(shù)7、循環(huán)100次,在log中記錄8、撲捉各種小的異常以與記錄寫入log文件Nutch 的目標(biāo)是讓每個(gè)人都很容易配置世界上一流的 Web 搜索引擎,為了完成這個(gè)目標(biāo),研發(fā)人員做出了不懈的努力,使得 Nutch 必須作到:每個(gè)月都需從互聯(lián)網(wǎng)上取幾十億的網(wǎng)頁(yè),并為這幾十億的網(wǎng)頁(yè)維護(hù)作一個(gè)索引,同時(shí)對(duì)建立的索引文件需要進(jìn)行每秒千萬(wàn)次的搜索,為用戶提供高質(zhì)量、高效率的搜索結(jié)果,并且以最小的成本運(yùn)作。其中Nutch 結(jié)構(gòu)圖如圖2.1 : 圖2.1 Nutch結(jié)構(gòu)圖2.4
53、中文分詞技術(shù) 搜索引擎在處理英文信息和中文信息時(shí)有所不同,因?yàn)橛⑽男畔⑹峭ㄟ^(guò)詞、空格以與標(biāo)點(diǎn)符號(hào)組成,所以在切分英文信息的時(shí)候只要以空格和標(biāo)點(diǎn)符號(hào)作為分割符,整個(gè)過(guò)程不需要考慮分詞算法。但是對(duì)于中文信息來(lái)說(shuō),由于中文信息與英文信息不同,是以連續(xù)的句子組成,在字與字之問(wèn)沒(méi)有明顯的分割符,所以如何有效分析成了一道難題,例如“我是一名研究生”,如果按照英文這種切分方法的話可能只能分出“我”、“是”、“一”、“名”、“研”、“究”、“生”。事實(shí)上需要計(jì)算機(jī)能夠分出“研究生”這個(gè)詞組,而不是單個(gè)切分。中文分詞技術(shù)對(duì)于中文搜索引擎搜索結(jié)果的準(zhǔn)確性上具有十分重要的作用,好的中文切分技術(shù)不僅能夠提高分詞準(zhǔn)確性
54、,而且能夠提高分詞速度。目前主流的搜索引擎基本上都支持中文分詞技術(shù),但由于中文分詞有一定的難度,尤其是如何理解基于上下文特殊語(yǔ)境下的詞語(yǔ),所以分詞結(jié)果還有很大提升的空間。2.4.1 基于字典匹配的分詞方法字典匹配分詞技術(shù)是以字典分詞為基礎(chǔ)發(fā)展起來(lái)的,常使用標(biāo)志切分或者特征掃描將輸入的字符串中具有顯著特征的詞匯識(shí)別和切分出來(lái),然后以這些詞匯為間隔,將原字符串分割為較小串后再進(jìn)行字典分詞。根據(jù)不同長(zhǎng)度優(yōu)先匹配原則,將字典匹配方法分為最長(zhǎng)匹配方法和最短匹配方法,根據(jù)匹配掃描方式將其分為逆向匹配和正向匹配,實(shí)際上,可以結(jié)合幾種方法,比如正向最長(zhǎng)匹配分詞,逆向最長(zhǎng)匹配分詞,以與這兩種相結(jié)合的分詞方法。2
55、.4.2 基于詞頻統(tǒng)計(jì)的分詞方法詞頻統(tǒng)計(jì)分詞,顧名思義,就是基于詞頻統(tǒng)計(jì)來(lái)進(jìn)行分詞,即根據(jù)在上下文語(yǔ)境中,相鄰字搭配出現(xiàn)的頻率越高就越可能成為一個(gè)詞。具體是通過(guò)對(duì)中文文本中統(tǒng)計(jì)相鄰出現(xiàn)的各個(gè)字的組合頻度,根據(jù)兩個(gè)字的統(tǒng)計(jì)信息,計(jì)算它們之間相鄰出現(xiàn)概率,當(dāng)出現(xiàn)概率超過(guò)某個(gè)閾值時(shí),認(rèn)為這兩字是一個(gè)詞,將其切分出來(lái),否則,不認(rèn)為這兩個(gè)字為一個(gè)詞。這樣做會(huì)出現(xiàn)一些問(wèn)題,比如一些不重要或者無(wú)意義但是出現(xiàn)頻率很高的字詞會(huì)被切分出來(lái),這就需要對(duì)切分詞語(yǔ)配備一個(gè)詞典庫(kù),對(duì)切分詞語(yǔ)進(jìn)行匹配,過(guò)濾不重要詞。這種分詞方法具有分詞速度快、實(shí)現(xiàn)簡(jiǎn)單和效率高的優(yōu)點(diǎn)。2.4.3 基于語(yǔ)義理解的分詞方法基于語(yǔ)義理解的分詞方法
56、指通過(guò)分詞、語(yǔ)法與語(yǔ)義分析模擬人腦對(duì)語(yǔ)言的理解能力來(lái)對(duì)語(yǔ)句進(jìn)行識(shí)別分詞,一般包括句法語(yǔ)義模塊、控制模塊和分詞模塊??刂颇K協(xié)調(diào)句法語(yǔ)義模塊和分詞模塊,使得分詞模塊從句法語(yǔ)義模塊獲得詞語(yǔ)、句子的句法和語(yǔ)義,根據(jù)當(dāng)前語(yǔ)境對(duì)句子進(jìn)行分詞。這一方法能夠理解中文上下文環(huán)境,避免分詞出現(xiàn)歧義的優(yōu)點(diǎn),正成為國(guó)外學(xué)者的研究熱點(diǎn),目前還沒(méi)有成熟的系統(tǒng)出現(xiàn)。2.4.4 IK分詞器簡(jiǎn)介IKAnalyzer是一個(gè)開源基于JAVA語(yǔ)言的輕量級(jí)的中文分詞第三方工具包,從2006年推出已經(jīng)經(jīng)歷了三個(gè)較為完整的版本,目前最新版本為3.2.8,它基于lucene為應(yīng)用主體,但是,它也支持脫離lucene,成為一個(gè)獨(dú)立的面向JA
57、VA的分詞工具。其結(jié)構(gòu)圖如圖2-2:圖2-2 IK Analyzer結(jié)構(gòu)圖2.5 本章小結(jié) 本章主要介紹了Nutch相關(guān)技術(shù),包括Nutch的組成部分:抓取和搜索,重點(diǎn)介紹了抓取部分,即Fetcher、Crawler的詳細(xì)工作過(guò)程,以方便將此其修改成主題爬蟲。第3章 爬蟲搜索策略的研究主題爬行策略是根據(jù)某種爬行策略自動(dòng)保留與特定主題相關(guān)網(wǎng)頁(yè),過(guò)濾與主題不相關(guān)網(wǎng)頁(yè),爬行策略的好壞直接決定了主題爬蟲器爬行效率和網(wǎng)頁(yè)的質(zhì)量,因此主題爬行策略已成為研究熱點(diǎn),目前很多學(xué)者提出了主題爬行策略,各有優(yōu)劣,主要可以分為基于的爬行策略、基于容的爬行策略以與其他相關(guān)爬行策略,下面介紹這幾種策略。3.1 基于結(jié)構(gòu)特
58、征3.1.1 PageRank算法搜索引擎的性能和處理速度取決于信息抓取系統(tǒng)性能的好壞。通用搜索引擎以提高Web 的覆蓋率和盡可能多的下載網(wǎng)頁(yè)為主要目的,它的網(wǎng)絡(luò)爬蟲采用了數(shù)據(jù)結(jié)構(gòu)中圖的遍歷算法(廣度或深度優(yōu)先策略)。主題搜索引擎具有較強(qiáng)的針對(duì)性,面向某一專業(yè)行業(yè)或者某一特定主題,因此在搜索過(guò)程就可以有選擇檢索互聯(lián)網(wǎng)上的信息,無(wú)需將整個(gè)互聯(lián)網(wǎng)資源檢索一次,只需要檢索與主題相關(guān)的頁(yè)面或者某一專業(yè)行業(yè),比通用搜索引擎更注重檢索到頁(yè)面的正確性。主題信息的搜索策略是整個(gè)主題搜索引擎系統(tǒng)的關(guān)鍵和核心,目前啟發(fā)式搜索策略是主題搜索引擎主要采用的策略。啟發(fā)式搜索策略即先通過(guò)查詢領(lǐng)域的知識(shí)相關(guān)對(duì)網(wǎng)頁(yè)中超進(jìn)行價(jià)
59、值評(píng)定,并用來(lái)判斷網(wǎng)絡(luò)信息資源的分布情況,然后按照優(yōu)先選擇原則對(duì)價(jià)值評(píng)定值最大的頁(yè)面進(jìn)行更深一步的搜索。目前,主題搜索引擎主要采用基于結(jié)構(gòu)的搜索策略和基于容價(jià)值評(píng)定的搜索策略。PageRank 算法是根據(jù)網(wǎng)頁(yè)之間的超來(lái)確定頁(yè)面的等級(jí)。它的計(jì)算過(guò)程可以比喻成“投票”的過(guò)程。的 PageRank值的高低取決于其它給它“投票”的總和。由于重要投的票應(yīng)該有較大的分量。于是需要用 PageRank值來(lái)衡量一個(gè)的重要性13。事實(shí)上,PageRank就是一個(gè)概率,它反映了一個(gè)人在網(wǎng)絡(luò)中不同的頁(yè)面上隨機(jī)點(diǎn)擊會(huì)到達(dá)某個(gè)特定的概率。我們假設(shè)考慮的所有的 PageRank是均勻分布的,就是說(shuō)如果互聯(lián)網(wǎng)上有N個(gè),那么
60、每個(gè)的PageRank 都是 1/N。雖然 Web 頁(yè)面的重要性需要人來(lái)判斷,判斷結(jié)果取決于人的主觀判斷、人的知識(shí)、興趣、意見(jiàn)等,但是人們還是可以利用一些頁(yè)面的重要性和客觀性來(lái)判斷其它頁(yè)面。在傳統(tǒng)情報(bào)檢索理論中的分析方法,當(dāng)一個(gè)頁(yè)面 T 可以到另個(gè)頁(yè)面 A 時(shí),我就認(rèn)為 A 的重要性也非常高,也就是說(shuō) A 得到一個(gè)很高的分值,也就是說(shuō) T 的越重要,網(wǎng)頁(yè)A 得到的分值就會(huì)越高。PageRank算法的基本思路:PageRank是一個(gè)值,它用來(lái)衡量一個(gè)頁(yè)面的重要性。當(dāng)一個(gè)頁(yè)面被其他許多頁(yè)面引用,那么這個(gè)頁(yè)面很有可能是重要頁(yè)面,盡管一個(gè)頁(yè)面不曾被其它頁(yè)面多次應(yīng)用,但是只要被重要頁(yè)面引用過(guò),那么這個(gè)頁(yè)
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 積木游戲在幼兒園學(xué)習(xí)中的應(yīng)用計(jì)劃
- 公司客服工作總結(jié)5篇
- 校園安全管理總結(jié)10篇
- 旅行婚禮策劃方案6篇
- 活動(dòng)計(jì)劃范文錦集六篇
- 2025物業(yè)管理移交合同
- 學(xué)校校本培訓(xùn)活動(dòng)總結(jié)十篇
- 誠(chéng)信演講稿模板九篇
- 2024年離婚協(xié)議簽訂中的子女撫養(yǎng)權(quán)爭(zhēng)議處理及注意事項(xiàng)3篇
- 2024年中國(guó)亞克力眼鏡展示架市場(chǎng)調(diào)查研究報(bào)告
- 成都錦城學(xué)院《算法分析與設(shè)計(jì)》2022-2023學(xué)年期末試卷
- 可行性報(bào)告編制服務(wù)方案
- 牛頓法在圖像處理中的應(yīng)用
- 英語(yǔ)KET官方樣題Test1- Test 2
- 《贏利》精讀圖解
- 2024年一級(jí)造價(jià)工程師考試《建設(shè)工程造價(jià)管理》真題及解析
- 2025屆江蘇揚(yáng)州中學(xué)數(shù)學(xué)高一上期末考試試題含解析
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識(shí) CCAA年度確認(rèn) 試題與答案
- Unit 1 - Unit 6 知識(shí)點(diǎn)(知識(shí)清單)-2024-2025學(xué)年人教PEP版(2024)英語(yǔ)三年級(jí)上冊(cè)
- 2024 AI專題:從模型視角看端側(cè)AI模型技術(shù)持續(xù)演進(jìn)交互體驗(yàn)有望升級(jí)
- 運(yùn)動(dòng)場(chǎng)捐建協(xié)議書模板
評(píng)論
0/150
提交評(píng)論