日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

网页去重||SimHash(高效的文本相似度去重算法)——适合大批量文档的相似度计算

發布時間:2025/4/16 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网页去重||SimHash(高效的文本相似度去重算法)——适合大批量文档的相似度计算 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

網頁去重

之前我們對下載的url地址進行了去重操作,避免同樣的url下載多次。其實不光url需要去重,我們對下載的內容也需要去重。

在網上我們可以找到許多內容相似的文章。但是實際我們只需要其中一個即可,同樣的內容沒有必要下載多次,那么如何進行去重就需要進行處理了



去重方案介紹

指紋碼對比

最常見的去重方案是生成文檔的指紋門。例如對一篇文章進行MD5加密生成一個字符串,我們可以認為這是文章的指紋碼,再和其他的文章指紋碼對比,一致則說明文章重復。

但是這種方式是完全一致則是重復的,如果文章只是多了幾個標點符號,那仍舊被認為是重復的,這種方式并不合理。



BloomFilter

這種方式就是我們之前對url進行去重的方式,使用在這里的話,也是對文章進行計算得到一個數,再進行對比,缺點和方法1是一樣的,如果只有一點點不一樣,也會認為不重復,這種方式不合理。



KMP算法

KMP算法一種改進的字符串匹配算法KMP算法的關鍵是利用匹配失敗后的信息,盡量減少模式串與主串的匹配次數以達到快速匹配的目的。能夠找到兩個文章有哪些是一樣的,哪些不一樣。

這種方式能夠解決前面兩個方式的“只要一點不一樣就是不重復”的問題但是它的時空復雜度太高了,不適合大數據量的重復比對。



還有一些其他的去重方式:最長公共子串、后綴數組、字典樹、DFA等等,但是這些方式的空復雜度并不適合數據量較大的工業應用場景我們需要找到一款性能高速度快,能夠進行相似度對比的去重方案



Google 的 simhash 算法產生的簽名,可以滿足上述要求。這個算法并不深奧,比較容易理解。這種算法也是目前Google搜索引擎所目前所使用的網頁去重算法。



SimHash

???????流程介紹

simhash是由 Charikar 在2002年提出來的,為了便于理解盡量不使用數學公式,分為這幾步:

1、分詞,把需要判斷文本分詞形成這個文章的特征單詞。

2、hash,通過hash算法把每個詞變成hash值,比如“美國”通過hash算法計算為 100101,“51區”通過hash算法計算為 101011。這樣我們的字符串就變成了一串串數字。

3、加權,通過 2步驟的hash生成結果,需要按照單詞的權重形成加權數字串,“美國”的hash值為“100101”,通過加權計算為“4 -4 -4 4 -4 4”

“51區”計算為 “ 5 -5 5 -5 5 5”。

4、合并,把上面各個單詞算出來的序列值累加,變成只有一個序列串。

?“美國”的 “4 -4 -4 4 -4 4”,“51區”的 “ 5 -5 5 -5 5 5”

把每一位進行累加, “4+5 -4+-5 -4+5 4+-5 -4+5 4+5”à“9 -9 1 -1 1 9”

5、降維,把算出來的 “9 -9 1 -1 1 9”變成 0 1 串,形成最終的simhash簽名。



???????簽名距離計算

我們把庫里的文本都轉換為simhash簽名,并轉換為long類型存儲,空間大大減少現在我們雖然解決了空間,但是如何計算兩個simhash的相似度呢?

我們通過海明距離(Hamming distance)就可以計算出兩個simhash到底相似不相似。兩個simhash對應二進制(01串)取值不同的數量稱為這兩個simhash的海明距離。

舉例如下: 10101 和 00110 從第一位開始依次有第一位、第四、第五位不同,則海明距離為3。對于二進制字符串的a和b,海明距離為等于在a XOR b運算結果中1的個數(普遍算法)。

總結

以上是生活随笔為你收集整理的网页去重||SimHash(高效的文本相似度去重算法)——适合大批量文档的相似度计算的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。