網頁排重演算法 資訊指紋演算法

2021-09-06 06:12:22 字數 2637 閱讀 6767

2009-11-13 11:04

1.1資訊指紋演算法

判斷重複網頁的思想:為每個網頁計算出一組資訊指紋(fingerprint),若兩個網頁有一定數量相同的資訊指紋,則認為這兩個網頁的內容重疊性很高,也就是說兩個網頁是內容複製的。

判斷內容複製的方法中最關鍵的兩點:

1、計算資訊指紋(fingerprint)的演算法;

2、判斷資訊指紋的相似程度的引數。

資訊指紋就是提取網頁正文資訊的特徵,通常是一組詞或者一組詞+權重,然後根據這組詞呼叫特別的演算法,例如md5,將之轉化為一組**,這組**就成為標識這個資訊的指紋。從理論上講,每兩個不同文字的特徵資訊是不同的,那麼得到的**也應該是不一樣的,就象人的指紋。

得到預處理後的網頁,然後對網頁進行向量化處理,簡單的講就是分詞,統計,並按照詞頻生成乙個列表.

例如:網頁12

搜尋10

引擎7...

...1.2分段簽名演算法

這種演算法是按照一定的規則把網頁切成n段,對每一段進行簽名,形成每一段的資訊指紋。如果這n個資訊指紋裡面有m個相同時(m是系統定義的閾值),則認為兩者是複製網頁。

這種演算法對於小規模的判斷複製網頁是很好的一種演算法,但是對於像google這樣海量的搜尋引擎來說,演算法的複雜度相當高。

1.3

像google這類搜尋引擎,他在抓取網頁的時候都會記下以下網頁資訊:

2、提取meta descrīption或者每個網頁的512個位元組的有效文字。

在以下演算法描述中,首先約定幾個資訊指紋變數:

pi表示第i個網頁;

以上資訊指紋都用md5函式進行加密。

1、md5(des(pi))=md5(des(pj)),就是說摘要資訊完全一樣,i和j兩個網頁就認為是複製網頁;

4、md5(con(ti))=md5(con(tj))並且wi-wj的平方除以wi和wj的平方之和小於某個闕值a,則認為兩者是複製網頁。

5、md5(sort(ti))=md5(sort(tj))並且wi-wj的平方除以wi和wj的平方之和小於某個闕值a,則認為兩者是複製網頁。

關於第4和第5的那個閾值a,主要是因為前乙個判斷條件下,還是會有很多內容部分相同的網頁被認為相同而被排除掉,因此要根據權重的分布比例調節a的大小。

1.4

隨機對映(random projection)演算法:

先給每個詞語(token)生成隨機的特徵向量,儲存為乙個集合,然後對網頁正文進行分詞,得到一系列的詞語,從詞語的特徵向量集合中取出這些詞語的特徵向量(如果詞語不在在集合中,那麼給詞語生成乙個隨機的特徵向量,將其加入集合),將這些特徵向量按位進行乙個特殊的加運算,最後得到網頁的特徵向量。判斷兩個網頁是否具有相似或重複內容就可以通過判斷它們特徵向量相同的位數(bit)來進行。

1.5近似網頁發現演算法

首先,定義幾個演算法中用到的引數:

演算法如下:

1、對網頁正文切詞,生成網頁正文的特徵向量(已經去掉了停用詞)

6、以5中生成的字串為源串呼叫md5函式得到該網頁的指紋。

指紋比較的過程中只要對網頁的指紋值直接排序就可以將重複的網頁聚到一起。

1.6

1、對於每乙個xml檔案去標記,得到文字內容並進行分詞,生成分詞後的語料庫c;

2、 遍歷語料庫c,計算詞語的idf值;

3、 對於每一篇文件,保留其idf值較大的前70%,並降序排列,構成該文件的特徵向量;

4、 計算任一文件的特徵串的hash值,(擬用elfhash),生成二元組。對具有相同hash值的文件,比較兩個文件的特徵串是否相同,如果相同,則是重合文件,否則不是重合文件。

簡單說明:

a. hash函式的選擇很關鍵,如果hash選擇很好,時間複雜度為o(n), n為文件規模

,最壞情況下所有特徵串的hash值相等,則時間複雜度是 o(n*n);

b.我們新增了對同hash值文件的特徵串進行比較,所以增加了時間複雜度;

經過幾天程式設計方法已經實現,本方法相對對重複的要求更嚴格,內容完全重複的一定可以識別,另外對hash函式的選擇也很關鍵;

為了更好選擇hash函式,做了以下實驗,語料為1000個xml部落格檔案;

實際重複文件數:419

實際應該產生衝突數:419

elfhash產生衝突數: 594 所用時間為:60s

rshash產生衝突數:584 所用時間為:60s

jshash產生衝突數:546 所用時間為:58s

pjwhash產生衝突數:594 所用時間為:61.4s

bkdrhash產生衝突數:601 所用時間為:64.5s

sdbmhash產生衝突數:546 所用時間為:61.5s

djbhas產生衝突數: 595 所用時間為:66s

aphash產生衝突數: 543 所用時間為:57.1s

經以上實驗,選用了aphash函式來處理重複文件檢測

高效網頁去重演算法 SimHash

記得以前有人問過我,網頁去重演算法有哪些,我不假思索的說出了余弦向量相似度匹配,但如果是數十億級別的網頁去重呢?這下糟糕了,因為每兩個網頁都需要計算一次向量內積,查重效率太低了!我當時就想 論查詢效率肯定是要考慮hash演算法,相同字串的hashcode肯定相同,不同字串的hashcode卻是大不相...

os指紋匹配演算法

1.ipv4 matching nmap用於檢測匹配的演算法相對簡單。它需要乙個受試者指紋,並針對nmap os db中的每個參考指紋進行測試。當針對參考指紋進行測試時,nmap依次檢視來自受試者指紋 例如seq或t1 的每個探針class行。跳過參考指紋中不存在的任何探測行。當參考指紋確實具有匹配...

演算法 錯排演算法

1.認識 什麼是錯排演算法?舉個簡單的例子,教室裡有十個座位 1 10 十位同學分別坐在乙個不同的位置上 1 10 現要求打亂所有同學的位置,打亂規則如下 所有的同學都不能出現在原來的位置上,問有多少種打亂的方法?引出錯排問題 有n個正整數1,2,3,n,將這n個正整數重新排列,使其中的每乙個數都不...