Apache Nutch 1.3 学习笔记十一(页面评分机制 OPIC)
?
1. Nutch 1.3 的頁面評分機制
? ?Nutch1.3目前默認還是使用OPIC作為其網頁分數算法,但其之后,已經引入了PageRank-like算法,以彌補OPIC算法的不足,目前OPIC算法還是作為Nutch中ScoreFilter擴展點的一個擴展來實現的,而新的LinkRank算法有一個叫做org.apache.nutch.scoring.webgraph的包來對網頁進行分數計算,它可以解決OPIC解決不了的問題,一個是重復地抓取頁面,會引起那些被抓取的頁面重要性增加;另一個是同時新添加的頁面必須進行抓取,這樣會使整個網絡的總cash流通量增加,這樣會造成那些沒有重復抓取的頁面重要性降低。
2. 什么是OPIC算法及其特點
下面內容來自[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算法是針對靜態圖的。OPIC算法的基本思想是:每個頁面都有一個初始的cash,在抓取某頁面時,該頁面的cash會平均地分配到其所接向的頁面,總的整個網絡圖中總的cash量是個定值,在抓取網頁的過程這些一定量的cash在頁面之間流通,很直觀地,OPIC算法中頁面的重要性就定義為流通過程中流過該頁面的cash的總量在總流通量中占的比重。
對于每個網面(圖中的結點),OPIC算法維護兩個值cash與history,cash是網頁當前的cash值,history表示的則是該網頁從OPIC算法開始到最后一次被抓取,獲得的cash的總和。cash的初始值一般為1/n (n為網頁總數),history初始值為0。
OPIC算法使用兩個向量C[1,…,n] 和H[1,…,n]分別表示各個網頁的cash值和history值,為了優化算法,還引入一個變量G,使每一次抓取網頁時都有G=|H|=∑i H[i],原論文中OPIC算法的偽代碼如下:
?
?
OPIC算法的幾個問題:
1.無外向鏈接的sink頁面處理:
?OPIC算法中有個虛擬網頁 (virtual page)的概念,虛擬網頁與所有網頁之間都有雙向鏈接。
2.收斂性:
OPIC算法將網頁重要性的計算集成到了網頁抓取的過程中,OPIC算法依賴于反復的抓取,一個重要的問題就是(*)式的值在頁面反復抓取過程中是收斂的,只有確保這一點算法才是正確有意義的,關于收斂性的證明,原論文里有嚴密的證明,這里只提示一下。
3.抓取策略
上面提到OPIC算法依賴于反復抓取,那么抓取策略就是個重要問題了,抓取策略直接影響網面重要性(*)式的收斂速度,事實上,理論與實驗都證明貪心法中是最好的策略,即優先抓取那些cash值高的頁面。
為了解決OPIC算法的收斂性問題,后來有人提出了Adaptive OPIC算法,它主要引一個時間窗(time window)的概念,它的點主要在于將網頁重要性的計算集成到網頁抓取的過程中了,簡化了模型,簡化了網頁重要性值的求解。
3. OPIC在NUTCH中的應用
? ?在Nutch1.3的源碼org.apache.nutch.scoring.opic包OPICScoringFilter類的注釋里提到Nutch實現的鏈接分析算法是基于《Adaptive On-Line Page Importance Computaion》。Nutch把它做為一個ScoringFilter插件來對付,也就是說用戶可以擴展自已的分數算法,
? ?其中ParseOutputFormat是用來為計算分數做準備,而FetchOutputFormat中的RecordWriter集成了ParseOutputFormat,抓取解析后的網頁都會通過ParseOutputFormat生成的RecordWriter寫出去,而這個計算OPIC的方法就是在這個RecordWriter中調用的。
4. Nutch OPIC源代碼分析
下面是OPICScoringFIlter的distributeScoreToOutlinks方法。源代碼如下:
?
?
5. 總結
? ?在網頁抓取中,排序算法的好壞直接影響到搜索引擎出現的更新結果,特點是在聚焦爬蟲中更是這樣。可能在Nutch 2.0以后就不會用OPIC,而是使用新的評分功能,在org.apache.nutch.scoring.webgraph中可以發現。
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
?
?
?
?
?
?
?
相關文章閱讀及免費下載:
?
?
?
《Apache Nutch 1.3 學習筆記目錄》
?
?
?
《Apache Nutch 1.3 學習筆記一》
?
?
?
《Apache Nutch 1.3 學習筆記二》
?
?
?
《Apache Nutch 1.3 學習筆記三(Inject)》
?
?
?
《Apache Nutch 1.3 學習筆記三(Inject CrawlDB Reader)》
?
?
?
《Apache Nutch 1.3 學習筆記四(Generate)》
?
?
?
《Apache Nutch 1.3 學習筆記四(SegmentReader分析)》
?
?
?
《Apache Nutch 1.3 學習筆記五(FetchThread)》
?
?
?
《Apache Nutch 1.3 學習筆記五(Fetcher流程)》
?
?
?
《Apache Nutch 1.3 學習筆記六(ParseSegment)》
?
?
?
《Apache Nutch 1.3 學習筆記七(CrawlDb - updatedb)》
?
?
?
《Apache Nutch 1.3 學習筆記八(LinkDb)》
?
?
?
《Apache Nutch 1.3 學習筆記九(SolrIndexer)》
?
?
?
《Apache Nutch 1.3 學習筆記十(Ntuch 插件機制簡單介紹)》
?
?
?
《Apache Nutch 1.3 學習筆記十(插件擴展)》
?
?
?
《Apache Nutch 1.3 學習筆記十(插件機制分析)》
?
?
?
《Apache Nutch 1.3 學習筆記十一(頁面評分機制 OPIC)》
?
?
?
《Apache Nutch 1.3 學習筆記十一(頁面評分機制 LinkRank 介紹)》
?
?
?
《Apache Nutch 1.3 學習筆記十二(Nutch 2.0 的主要變化)》
?
?
?
更多《Apache Nutch文檔》,盡在開卷有益360 http://www.docin.com/book_360
?
轉載于:https://www.cnblogs.com/ibook360/archive/2011/10/24/2222181.html
總結
以上是生活随笔為你收集整理的Apache Nutch 1.3 学习笔记十一(页面评分机制 OPIC)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 资金流出股价上涨说明
- 下一篇: 中国银行白金卡宽限期信用卡