- 相關推薦
網(wǎng)頁消重中多維布隆過濾器算法的運用
布隆過濾器的原理,通過對原理、實現(xiàn)步驟進行分析,得出此算法在網(wǎng)頁消重中的作用以及缺陷,以下是小編搜集整理的一篇探究網(wǎng)頁消重中多維布隆過濾器算法運用的論文范文,歡迎閱讀查看。
引言
進入21世紀以后,隨著電子計算機以及相關技術的迅猛發(fā)展和網(wǎng)絡通信設備的大量普及,互聯(lián)網(wǎng)的總體規(guī)模日益增大,日新月異的互聯(lián)網(wǎng)技術以及海量的互聯(lián)網(wǎng)信息也促進了社會、經(jīng)濟和科技的高速發(fā)展,增加了人們獲取信息的渠道和速度。根據(jù)2015年11月的最新數(shù)據(jù),互聯(lián)網(wǎng)上活動網(wǎng)站的數(shù)量達到了902,997,800個[1].網(wǎng)站的快速增長同時也意味著互聯(lián)網(wǎng)中信息的急速膨脹,這些信息有些是有用的、有些是沒用的、有些甚至完全是一些垃圾頁面。面對由于互聯(lián)網(wǎng)信息爆炸帶來的信息孤島、信息搜集困難等現(xiàn)象,人們發(fā)明了搜索引擎[2-4]以解決人們快速在互聯(lián)網(wǎng)中找到所求的需求。但是,由于搜索引擎的采集器是由程序自動運行的,所以在抓取網(wǎng)頁信息的同時,也會收集到很多重復網(wǎng)頁。因此,如果沒有一個高效的URL去重模塊,用以防止系統(tǒng)對已經(jīng)抓取過的網(wǎng)頁進行重復抓取,浪費寶貴的網(wǎng)絡帶寬和CPU時間,網(wǎng)絡爬蟲系統(tǒng)必將不堪重負。
在眾多的URL去重技術中[5-7],布隆過濾器(BloomFilter)[8]是其中優(yōu)秀的一個,而其主要缺點在于較高的誤識別率,但若使用多維布隆過濾器進行識別,可以大大降低誤識別率。本文充分利用多維布隆過濾器查詢快速、資源占有量少的特點,提出一種基于多維布隆過濾器的網(wǎng)頁搜索去重方法,并給出程序設計方案及偽代碼描述。
1布隆過濾器
在互聯(lián)網(wǎng)中,要查找一個URL是否己經(jīng)被抓取過,首先會想到的方法就是建立一個已抓取URL集合,然后查找新的URL是否存在已抓取URL集合中,如果用普通的順序查找法,效率顯然很低。而另一個比較簡單的辦法是采取傳統(tǒng)的hash方法,即把每個URL看成一個元素,這就需要把每個元素存儲在hash表中。在每次發(fā)現(xiàn)一個新的元素時,首先會通過hash函數(shù)計算出這個元素的對應位置,之后使用這個位置的元素與這個新元素進行對比,如果兩者相同,就說明這個新元素是重復的,反之則說明這個新元素是還未保存過的。傳統(tǒng)的hash方法不會發(fā)生錯誤,而且存在于hash表中的數(shù)據(jù)也可以隨時刪除。但是,對于網(wǎng)頁去重來說,只需判斷一個特定的元素是否存在于集合中。因此,使用hash表保存下整個URL的內(nèi)容會造成很大的內(nèi)存浪費,然而內(nèi)存資源有限,顯然傳統(tǒng)的hash方法不能很好的滿足需求。
布隆過濾器[9-11]是由HowardBloom在1970年提出的。他僅使用了一系列的bit位來保存數(shù)據(jù),就可以檢測一個元素是否已經(jīng)存在于集合內(nèi),因此這種算法有著很好的空間利用率。但是為了節(jié)約空間,這種算法也存在著一些問題,它會對元素產(chǎn)生錯判。不過慶幸的是,這個算法只會對在集合內(nèi)的元素產(chǎn)生錯判,但是并不會對不在集合內(nèi)的元素產(chǎn)生錯判。也就是說,如果布隆過濾器返還的結果如果是false,說明元素確實不在集合內(nèi);如果返還的是ture,只能說明元素可能存在于集合中。因此布隆過濾器實際上是一種犧牲了正確率換取時間和空間的算法。
1.1布隆過濾器介紹
布隆過濾器的原理如下[12]:一個布隆過濾器由k個相互獨立的哈希函數(shù)h1,h2,…,hk(k值域為[0,1,2,…,m],是整數(shù))和一個位向量組成,初始時,位向量內(nèi)全部為0.當需要插入一個新數(shù)據(jù)時,用k個哈希函數(shù)對n個數(shù)據(jù)對象的集合S={sl,s2,…,sn}(m>n)的某個數(shù)據(jù)對象計算一個地址序(hi(s1),h2(sl),…,hk(sl)),然后將位向量對應地址序列的位置置為1,稱該位向量裝入了s1.
對于查詢某個數(shù)據(jù)對象s2是否存在于集合時,同樣先檢查表示s2的位向量對應該數(shù)據(jù)對象地址序列的位,如果均為1,則該數(shù)據(jù)對象屬于位向量集,否則不屬于位向量集。但是,即使是采用均勻的哈希函數(shù),并且使用了多個不同的hash函數(shù),地址沖突也是不能避免的,因此布隆過濾器算法可能對位向量中的同一個位多次置1.所以在進行數(shù)據(jù)查詢時可能出現(xiàn)錯判。關于布隆過濾器算法的缺點,會在1.3做詳細討論。
由以上分析可知,當布隆過濾器算法用于URL去重時,由于每個地址不需要存儲URL內(nèi)容,只需存儲1或0.因此,每個地址只需要一個bit的空間。在每次網(wǎng)絡爬蟲得到一個新的URL的時候,會先判斷這個元素是否屬于集合,此時會對該元素重新進行多次哈希,當哈希后所得的對應位置都為1時,就判斷該元素已經(jīng)存在于集合中。那么就拋棄這個URL,反之,就保存這個URL,并且更新集合信息。具體原理圖如下圖1.
1.2布隆過濾器的優(yōu)點
布隆過濾器的優(yōu)點是空間效率和查詢時間都遠遠超過一般的算法。在占用空間上,布隆過濾器只需要哈希表1/8~1/4的大小就能解決同樣的問題[13];更重要的是,在時間復雜度方面,布隆過濾器的查找時間為常數(shù),不隨過濾器增大而變慢。
1.3布隆過濾器的缺點
由以上分析可知,布隆過濾器算法比起普通算法,在時間和空間利用率上有著明顯的優(yōu)勢,但是布隆過濾器算法也并非十全十美的,他存在著以下問題:
(1)因為利用固定的hash函數(shù),并且得到的存儲結果僅僅是某個槽號,因此查找的時間是個常數(shù),但是每個槽中存儲的不是實際url,因此,可能會出現(xiàn)某個url映像的幾個位置都己經(jīng)被其他url占據(jù)的情況,產(chǎn)生錯判。
(2)因為一個url對應多個槽,而且這些槽是可以重復利用的,因此不用處理沖突。但是正因為如此該算法不能隨便刪除某個已經(jīng)存在的url,否則會出錯。
2一種改進布隆過濾器算法
根據(jù)上文提及到的,布隆過濾器的缺點是其誤識別率,因此,如何在不降低判別性能的前提下降低布隆過濾器的誤識別率就是研究的主要方向,本文基于此目的提出了一種改進的布隆過濾器算法,稱為多維布隆過濾器。
2.1基本思想
多維布隆過濾器的基本想法是,通過使用S組位向量來表達數(shù)據(jù)集合,每組位向量對應k個hash函數(shù),每組位向量包含2個位向量,其中一個是N位大小的V1,另一個是N/k位大小的V2,每組hash函數(shù)劃分到兩部分k1和d2,用于V1映射的是k1,用于V2映射的是d2.
插入元素時,對于每組位向量,k1把該元素映射到V1中并在V1對應位置置1,k2把數(shù)據(jù)元素映射到V2中并在V2對應位置置1.判定元素時,分別檢查經(jīng)過每組的hash函數(shù)k1和k2的映射后,V1和V2的相關位置是否為1,若有一組位向量全為1,則認為該元素屬于集合。
2.2性能分析
分析上述算法,可以看出來,多維布隆過濾器實際上是由多組基本的布隆過濾器構成的。每個布隆過濾器都作為多維布隆過濾器的一部分,參加整體運算。
因此,這里可以得到每組兩個位向量的誤識別率為:
由公式可知,在s,k,n這些參數(shù)一致的情況下,多維布隆過濾器同標準布隆過濾器相比,具有較低的誤判率,并且維數(shù)越高,誤判率越低。
不同維度的過濾器在搜索去重中處于并行工作的狀態(tài),因此,基于此技術應用實現(xiàn)的多維布隆過濾器引擎查詢時間和標準布隆過濾器引擎查詢時間相等。
多維布隆過濾器引擎每一維都使用了2個標準的布隆過濾器引擎,參數(shù)一致的情況下,占用的存儲空間是標準的布隆過濾器引擎的2S倍。
但是當維數(shù)過多時,要讓每一個維度都處于并行工作狀態(tài)對CPU要求較高,而且維數(shù)越多,對存儲空間的需求也就越大。
3應用與評價
對于上面章節(jié)討論的改進布隆過濾器算法-多維布隆過濾器算法的理論研究,我們?nèi)孕枰M行大量的實驗對其進行驗證。本論文設計實現(xiàn)程序,從而模擬了兩種算法,進而通過實驗對兩種算法的性能進行比較。
3.1實驗評價標準
為了能夠更加直觀的對比試驗結果,試驗根據(jù)重復網(wǎng)頁對搜索引擎的影響制定了以下三個主要的比較數(shù)據(jù)。他們是:
(1)運行速度:在一定抓取范圍內(nèi),每種算法完成所用的時間。因為實際運用中網(wǎng)頁數(shù)量過于龐大,因此這里設定一個固定時間,在這段時間內(nèi)抓取到非重復URL的數(shù)量越多,則算法運行的速度越快。
速度=非重復URL數(shù)量/時間
(2)重復率:也就是在第二章提到的重要評價指標。
重復率=重復的URL/抓取到的URL總數(shù)
(3)空間利用率:用于去重的位向量組所占空間。
用Bit為單位。
3.2實驗步驟
本實驗使用Heritrix作為爬蟲,主要抓取一些時事新聞。因此,實驗首先抓取幾個常用的門戶網(wǎng)站頁面做基礎。本論文中是先抓取的新浪,網(wǎng)易,騰訊,搜狐。之后在百度里搜索某個新聞關鍵詞做為基礎。
開始抓取搜索到的網(wǎng)頁。之后分別使用三種不同的算法,在抓取范圍相同的前提下,設定時間為1小時。
并且,為了實驗數(shù)據(jù)更加準確,本實驗為每種算法設置不同的可選參數(shù)來驗證前面的結論,具體如下:
●布隆過濾器:hash函數(shù)個數(shù)k;向量空間大小N
●多維布隆過濾器:每組hash函數(shù)個數(shù)k;向量空間大小N;向量維度S
3.3結果與分析
對于實驗結果,我們首先對比多維布隆過濾器中,在k=4,N=150時,不同向量維度S下的誤識別率變化,如圖2所示。
從圖4.5中,我們可以得到結論,誤識別率隨著S值的增加而減小。S值增加往往意味著,多維布隆過濾器算法所需的空間大小也相應提高,所以,在實際中,我們一般取S的值小于4.
隨后,我們固定S=4,k=4,對比標準布隆過濾器和多維布隆過濾器在位向量空間變化時的誤識別率,如圖3所示。
由上圖可得,多維布隆過濾器和標準布隆過濾器的誤識別率隨著位向量空間的增加一直降低,而且多維布隆過濾器誤識別率相比標準過濾器一直都要低。
最后,我們固定S=4,N=150,對比標準布隆過濾器和多維布隆過濾器在hash函數(shù)數(shù)量k變化時的誤識別率,如圖4所示。
從圖4中,我們可以得到結論,誤識別率隨著k值的增加而減小。k值增加往往意味著,hash算法所需的運算時間也相應提高,所以,在實際中,我們一般取k的值小于4.
綜上,通過實驗可以得到結論,hash函數(shù)數(shù)量以及位向量空間大小都可以影響布隆過濾器和多維布隆過濾器的誤識別率,向量的維度也可以影響多維布隆過濾器的誤識別率。并且,在相同hash函數(shù)數(shù)量或向量空間大小時,多維布隆過濾器的誤識別率均低于布隆過濾器。
4結語
本文詳細闡述了布隆過濾器的原理,通過對原理、實現(xiàn)步驟進行分析,得出此算法在網(wǎng)頁消重中的作用以及缺陷。此后,根據(jù)布隆過濾器存在的誤識別率的缺點,本文提出了一種改進的布隆過濾器算法--多維布隆過濾器,降低了傳統(tǒng)布隆過濾器算法的誤識別率。實驗結果表明:多維布隆過濾器的誤識別率要顯著低于傳統(tǒng)的布隆過濾器算法,能夠顯著提高網(wǎng)頁消重的性能。
參考文獻
[1]Netcraft.November2015WebServerSurvey[OL].[2015-11-16].
[2]阮衛(wèi)華。搜索引擎優(yōu)化技術的研究與實現(xiàn)[J].軟件,2014,35(7):72-77
[3]鄭曉健。面向領域主題的智能搜索引擎設計[J].軟件,2014,35(3):4-5
[4]郭世龍,王晨升。主題爬蟲設計與實現(xiàn)[J].軟件,2013,34(12):107-109
[5]ManberU.Findingsimilarfilesinalargefilesystem[A].ProceedingsoftheUSENIXwinter1994technicalconference[C].1994,1.
【網(wǎng)頁消重中多維布隆過濾器算法的運用】相關文章:
生物技術在制藥中的運用04-19
企業(yè)并購中的期權價值理論運用08-23
淺談異化與歸化方法在翻譯中的運用10-13
《紅樓夢》中預言敘事手法的運用06-10
色彩在手機界面設計中的運用10-19
淺談人性假設理論在學校管理中的運用04-15
論高校行政管理中績效考核的運用06-13