數學之美 資訊指紋及其應用

2021-08-28 03:32:00 字數 1862 閱讀 8193

前面在介紹網路爬蟲時說道為了避免重複爬取,爬蟲需要維護乙個url表來標記是否已經訪問該url。乙個問題是這個url只是我們用於驗證是否訪問,而沒有其他作用。但網頁url長度很長,佔據100位元組左右,這大大浪費了資源。所以需要我們對url進行資訊壓縮,要求壓縮後的url佔據記憶體少,且不會出現重複問題。這就像對資訊建立類似人類的指紋,用於驗證資訊。這就涉及到加密演算法md5,sha256等的使用。相信大家都使用過對密碼的不對稱加密。這類hash演算法在特徵工程中也有一定作用。ctr領域由於大部分特徵都是categorical,造成特徵空間極其龐大,使用hash演算法在一定程度上可以壓縮特徵空間大小。

判定集合相同:

判斷集合「aaa bbb ccc」和集合「bbb ccc aaa」是否相同,允許次序不同。最糟糕做法是對集合元素一一作比較,複雜度o(n**2);另一種是對兩個集合進行排序,然後順序比較,複雜度(nlogn);還可以對乙個集合建立雜湊表,然後與另乙個集合做比,複雜度(n),但佔據額外空間。最好辦法是對集合中每個元素做雜湊,然後相加,對比:

判定集合基本相同:

但是如果有人對集合稍微修改一點,上述方法就會出問題。如集合「aaa bbb ccc」和集合「bbb ccc ddd」。這是我們可以按照某種規則,對兩個集合隨機抽取部分進行驗證。如只取前兩個元素。

在比較網頁相同時,由於頁面過大,不會將整個網頁進行比較,而是從網頁中取幾個詞做hash比較。在網頁中常見詞一般都會出現,不能作為兩篇文章的特徵,而少見詞只出現一次,可能是噪音。我們可以利用td-idf特性找出詞鑑能力強的幾個詞做比較。

上面演算法稍作改進可以用於判斷文章抄襲,具體做法是將文章分割成小段,對片段提取特徵詞集合,然後計算指紋,進行比較,找出大致相同的文字。最後根據時間找出原創和抄襲。

youtube防盜版:

資訊指紋重複可能性:

相似雜湊(simhash):

相似雜湊可以用來判斷兩個頁面的相似性,兩個雜湊差越小其頁面相似性越大。如果兩個頁面完全相同,相似雜湊也會相同;如果只有少數權重小的詞不同,其餘數相同,幾乎相似雜湊也會相同。如果兩頁面相似雜湊不同,但差距很小,則頁面也很相似。原理如下:

其實這種方法也很好理解,如果兩個網頁相似性非常高的話,只有部分極少出現詞不同。通過各網頁計算出來的相同詞的tf-idf大部分非常接近。通過雜湊後二進位制雜湊在大多數字上也非常相似,這時根據二進位制位重新組成新的實數,並再轉換成二進位制,在一定程度上可以將那些出現極少的詞帶來的雜訊給覆蓋掉。

數學之美(系列十三) 之 資訊指紋及其應用

2006年8月3日 上午 11 17 00 發表者 吳軍,google 研究員 任何一段資訊文字,都可以對應乙個不太長的隨機數,作為區別它和其它資訊的指紋 fingerprint 只要演算法設計的好,任何兩段資訊的指紋都很難重複,就如同人類的指紋一樣。資訊指紋在加密 資訊壓縮和處理中有著廣泛的應用。...

數學之美 系列十三 資訊指紋及其應用

資訊指紋及其應用 吳軍,google 研究員 任何一段資訊文字,都可以對應乙個不太長的隨機數,作為區別它和其它資訊的指紋 fingerprint 只要演算法設計的好,任何兩段資訊的指紋都很難重複,就如同人類的指紋一樣。資訊指紋在加密 資訊壓縮和處理中有著廣泛的應用。我們在圖論和網路爬蟲 現在常用的m...

數學之美 系列十三 資訊指紋及其應用

2006年8月3日 上午 11 17 00 發表者 吳軍,google 研究員 任何一段資訊文字,都可以對應乙個不太長的隨機數,作為區別它和其它資訊的指紋 fingerprint 只要演算法設計的好,任何兩段資訊的指紋都很難重複,就如同人類的指紋一樣。資訊指紋在加密 資訊壓縮和處理中有著廣泛的應用。...