基於simhash的微博去重 - 呂新建 -
一、需求:對微博資料進行去重,資料量比較小,幾十萬條左右。二、解決方案
1、採用simhash的指紋資訊去重方法。
三、實現方案
1、對每一條微博使用tf-idf與特徵詞
2、使用每條微博的特徵詞,通過simhash方法生成資訊指紋。
四、具體細節
1、simhash的計算
b) 生成乙個包含32個元素,且元素均為0的陣列(記做simhashvalue)
e)取simhashvalue,把32個陣列元素有序的對映成乙個32位數。如果陣列元素的值天於0,則對映為1,否則對映為0。從而得到了乙個32位simhash值。
2、計算simhash的海明距離
此處計算參考《程式設計之美》中「求二進位制中1的個數」小節中給出的方法,有效提高計算效率。
五、小結
1、simhash是谷歌開源的乙個演算法,用來網頁去重。用在短文本去重中,效果也不錯。
2、minhash也是個不錯的去重、聚類的好方法。在這裡由於資料量本身比較小,所以採用了simhash這個比較簡單的方法。如果資料量較大的話,可以寫成mapreduce的。另,mahout提供了minhash的聚類方法。
基於simhash的短文本去重
usr bin env python coding utf 8 利用simhash進行文字去重 from simhash import simhash,simhashindex import jieba import codecs import datetime import os class du...
基於simhash的文字去重原理
simhash 是 google 用來處理海量文字去重的演算法。simhash 可以將乙個文件轉換成乙個 64 位的位元組,暫且稱之為特徵字。判斷文件是否重複,只需要判斷文件特徵字之間的漢明距離。根據經驗,一般當兩個文件特徵字之間的漢明距離小於 3,就可以判定兩個文件相似。傳統的hash演算法只負責...
文字去重之SimHash演算法
說到文字相似性計算,大家首先想到的應該是使用向量空間模型vsm vector space model 使用vsm計算相似度,先對文字進行分詞,然後建立文字向量,把相似度的計算轉換成某種特徵向量距離的計算,比如余弦角 歐式距離 jaccard相似係數等。這種方法存在很大乙個問題 需要對文字兩兩進行相似...