文字相似度比較有很多方法,如余弦夾角演算法、歐式距離、jaccard相似度、最長公共子串、編輯距離等,海明距離是其中之一。
在資訊編碼中,兩個合法**對應位上編碼不同的位數稱為碼距,又稱海明距離。
n位的碼字可以用n維空間的超立方體的乙個頂點來表示。兩個碼字之間的海明距離就是超立方體兩個頂點之間的一條邊,而且是這兩個頂點之間的最短距離。
對海明距離的應用,最多的是在海量短文本去重上,效能優,主要方法就是對文字進行向量化,或者說把文字的特徵抽取出來對映成編碼,然後再對編碼進行異或計算出海明距離。
曾遇到的乙個場景是:從龐大的記錄文字中,判斷文字的相似度並做分類。一般做法就是兩兩比較相似度,這時對相似度計算演算法的耗時要求就比較高,一旦資料量龐大,就能立見高下。有興趣的,可以試驗下cos、歐式、海明三者在文字相似度判斷方面的效能,比如2000萬記錄的文字。
package sk.ml;
/* * 功能:計算兩個文字海明距離
先字串二進位制,再統計差異位數
*/
public class hammingdistance {
public static void main(string args) {
string stra="大資料和人工智慧";
string strb="小資料和人工智慧";
string strab=strtobinstr(stra);
string strbb=strtobinstr(strb);
//對兩個二進位制字串,字元數相同,統計差異數
int count=0;
int len=strab.length();
for(int i=0;i執行結果:
海明距離是:4
海明碼與海明距離
一,海明碼 1 傳輸的資料 1101 2 校驗位計算公式 2 k k n 1,n為資料位 在本例中計算的k為3 用p1,p2,p3,表示校驗位,其中 p1,的位數2 0,p2,的位數2 1,p3,的位數2 2則 1 21 2 41 4 2 41 2 4 位數的二進位制 0001 0010 0011 ...
JZOJ3231 海明距離
對於二進位制串a,b,他們之間的海明距離是指兩個串異或之後串中1的個數。異或的規則為 0 xor 0 0 1 xor 0 1 0 xor 1 1 1 xor 1 0 計算兩個串之間的海明距離的時候,他們的長度必須相同。現在我們給出n個不同的二進位制串,請計算出這些串兩兩之間的最短海明距離。inclu...
佛山市選2013 海明距離
description 對於二進位制串a,b,他們之間的海明距離是指兩個串異或之後串中1的個數。異或的規則為 0 xor 0 0 1 xor 0 1 0 xor 1 1 1 xor 1 0 計算兩個串之間的海明距離的時候,他們的長度必須相同。現在我們給出n個不同的二進位制串,請計算出這些串兩兩之間的...