Apache Nutch 1.3 学习笔记十一(页面评分机制 OPIC)
?
1. Nutch 1.3 的頁(yè)面評(píng)分機(jī)制
? ?Nutch1.3目前默認(rèn)還是使用OPIC作為其網(wǎng)頁(yè)分?jǐn)?shù)算法,但其之后,已經(jīng)引入了PageRank-like算法,以彌補(bǔ)OPIC算法的不足,目前OPIC算法還是作為Nutch中ScoreFilter擴(kuò)展點(diǎn)的一個(gè)擴(kuò)展來(lái)實(shí)現(xiàn)的,而新的LinkRank算法有一個(gè)叫做org.apache.nutch.scoring.webgraph的包來(lái)對(duì)網(wǎng)頁(yè)進(jìn)行分?jǐn)?shù)計(jì)算,它可以解決OPIC解決不了的問(wèn)題,一個(gè)是重復(fù)地抓取頁(yè)面,會(huì)引起那些被抓取的頁(yè)面重要性增加;另一個(gè)是同時(shí)新添加的頁(yè)面必須進(jìn)行抓取,這樣會(huì)使整個(gè)網(wǎng)絡(luò)的總cash流通量增加,這樣會(huì)造成那些沒(méi)有重復(fù)抓取的頁(yè)面重要性降低。
2. 什么是OPIC算法及其特點(diǎn)
下面內(nèi)容來(lái)自[http://www.endless-loops.com/2011/03/nutch%E6%BA%90%E7%A0%81%E4%B8%AD%E7%9A%84%E9%93%BE%E6%8E%A5%E5%88%86%E6%9E%90%E7%AE%97%E6%B3%95-497.html]
OPIC算法是針對(duì)靜態(tài)圖的。OPIC算法的基本思想是:每個(gè)頁(yè)面都有一個(gè)初始的cash,在抓取某頁(yè)面時(shí),該頁(yè)面的cash會(huì)平均地分配到其所接向的頁(yè)面,總的整個(gè)網(wǎng)絡(luò)圖中總的cash量是個(gè)定值,在抓取網(wǎng)頁(yè)的過(guò)程這些一定量的cash在頁(yè)面之間流通,很直觀地,OPIC算法中頁(yè)面的重要性就定義為流通過(guò)程中流過(guò)該頁(yè)面的cash的總量在總流通量中占的比重。
對(duì)于每個(gè)網(wǎng)面(圖中的結(jié)點(diǎn)),OPIC算法維護(hù)兩個(gè)值cash與history,cash是網(wǎng)頁(yè)當(dāng)前的cash值,history表示的則是該網(wǎng)頁(yè)從OPIC算法開(kāi)始到最后一次被抓取,獲得的cash的總和。cash的初始值一般為1/n (n為網(wǎng)頁(yè)總數(shù)),history初始值為0。
OPIC算法使用兩個(gè)向量C[1,…,n] 和H[1,…,n]分別表示各個(gè)網(wǎng)頁(yè)的cash值和history值,為了優(yōu)化算法,還引入一個(gè)變量G,使每一次抓取網(wǎng)頁(yè)時(shí)都有G=|H|=∑i H[i],原論文中OPIC算法的偽代碼如下:
?
?
OPIC算法的幾個(gè)問(wèn)題:
1.無(wú)外向鏈接的sink頁(yè)面處理:
?OPIC算法中有個(gè)虛擬網(wǎng)頁(yè) (virtual page)的概念,虛擬網(wǎng)頁(yè)與所有網(wǎng)頁(yè)之間都有雙向鏈接。
2.收斂性:
OPIC算法將網(wǎng)頁(yè)重要性的計(jì)算集成到了網(wǎng)頁(yè)抓取的過(guò)程中,OPIC算法依賴于反復(fù)的抓取,一個(gè)重要的問(wèn)題就是(*)式的值在頁(yè)面反復(fù)抓取過(guò)程中是收斂的,只有確保這一點(diǎn)算法才是正確有意義的,關(guān)于收斂性的證明,原論文里有嚴(yán)密的證明,這里只提示一下。
3.抓取策略
上面提到OPIC算法依賴于反復(fù)抓取,那么抓取策略就是個(gè)重要問(wèn)題了,抓取策略直接影響網(wǎng)面重要性(*)式的收斂速度,事實(shí)上,理論與實(shí)驗(yàn)都證明貪心法中是最好的策略,即優(yōu)先抓取那些cash值高的頁(yè)面。
為了解決OPIC算法的收斂性問(wèn)題,后來(lái)有人提出了Adaptive OPIC算法,它主要引一個(gè)時(shí)間窗(time window)的概念,它的點(diǎn)主要在于將網(wǎng)頁(yè)重要性的計(jì)算集成到網(wǎng)頁(yè)抓取的過(guò)程中了,簡(jiǎn)化了模型,簡(jiǎn)化了網(wǎng)頁(yè)重要性值的求解。
3. OPIC在NUTCH中的應(yīng)用
? ?在Nutch1.3的源碼org.apache.nutch.scoring.opic包OPICScoringFilter類的注釋里提到Nutch實(shí)現(xiàn)的鏈接分析算法是基于《Adaptive On-Line Page Importance Computaion》。Nutch把它做為一個(gè)ScoringFilter插件來(lái)對(duì)付,也就是說(shuō)用戶可以擴(kuò)展自已的分?jǐn)?shù)算法,
? ?其中ParseOutputFormat是用來(lái)為計(jì)算分?jǐn)?shù)做準(zhǔn)備,而FetchOutputFormat中的RecordWriter集成了ParseOutputFormat,抓取解析后的網(wǎng)頁(yè)都會(huì)通過(guò)ParseOutputFormat生成的RecordWriter寫出去,而這個(gè)計(jì)算OPIC的方法就是在這個(gè)RecordWriter中調(diào)用的。
4. Nutch OPIC源代碼分析
下面是OPICScoringFIlter的distributeScoreToOutlinks方法。源代碼如下:
?
?
5. 總結(jié)
? ?在網(wǎng)頁(yè)抓取中,排序算法的好壞直接影響到搜索引擎出現(xiàn)的更新結(jié)果,特點(diǎn)是在聚焦爬蟲中更是這樣。可能在Nutch 2.0以后就不會(huì)用OPIC,而是使用新的評(píng)分功能,在org.apache.nutch.scoring.webgraph中可以發(fā)現(xiàn)。
6. 參考
[1] Fixing the OPIC algorithm in Nutch ?http://wiki.apache.org/nutch/FixingOpicScoring
[2] Abiteboul et al., 2003 ?http://www2003.org/cdrom/papers/refereed/p007/p7-abiteboul.html
[3] http://www.endless-loops.com/2011/03/nutch%E6%BA%90%E7%A0%81%E4%B8%AD%E7%9A%84%E9%93%BE%E6%8E%A5%E5%88%86%E6%9E%90%E7%AE%97%E6%B3%95-497.html
[4] http://wiki.apache.org/nutch/FixingOpicScoring
?
作者:http://blog.csdn.net/amuseme_lu
?
?
?
?
?
?
?
相關(guān)文章閱讀及免費(fèi)下載:
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記目錄》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記一》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記二》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記三(Inject)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記三(Inject CrawlDB Reader)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記四(Generate)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記四(SegmentReader分析)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記五(FetchThread)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記五(Fetcher流程)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記六(ParseSegment)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記七(CrawlDb - updatedb)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記八(LinkDb)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記九(SolrIndexer)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記十(Ntuch 插件機(jī)制簡(jiǎn)單介紹)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記十(插件擴(kuò)展)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記十(插件機(jī)制分析)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記十一(頁(yè)面評(píng)分機(jī)制 OPIC)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記十一(頁(yè)面評(píng)分機(jī)制 LinkRank 介紹)》
?
?
?
《Apache Nutch 1.3 學(xué)習(xí)筆記十二(Nutch 2.0 的主要變化)》
?
?
?
更多《Apache Nutch文檔》,盡在開(kāi)卷有益360 http://www.docin.com/book_360
?
轉(zhuǎn)載于:https://www.cnblogs.com/ibook360/archive/2011/10/24/2222181.html
總結(jié)
以上是生活随笔為你收集整理的Apache Nutch 1.3 学习笔记十一(页面评分机制 OPIC)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 资金流出股价上涨说明
- 下一篇: 中国银行白金卡宽限期信用卡