使用場景:google 的 simhash 演算法
//通過大量測試,simhash用於比較大文字,比如500字以上效果都還蠻好,距離小於3的基本都是相似,誤判率也比較低。
//從我的經驗,如果我們假定n是每個塊的大小,m是重疊的字元的數目,n = 4和m = 3是最好的選擇
public
class
simhashanalyser : ianalyser
private
static
ienumerable<
int
> dohashtokens(ienumerable<
string
> tokens)
return
hashedtokens;
}
private
static
int
gethammingdistance(
int
firstvalue,
int
secondvalue)
}
return
hammin**alue;
}
private
static
bool
isbitset(
int
b,
int
pos)
private
int
docalculatesimhash(
string
input)
foreach
(
var
value
in
hashedtokens)
else
}
}
var
fingerprint = 0;
for
(
var
i = 0; i < hashsize; i++)
}
return
fingerprint;
}
}
public
inte***ce
ianalyser
public
inte***ce
itokeniser
public
class
fixedsizestringtokeniser : itokeniser
this
.tokensize = tokensize;
}
public
ienumerable<
string
> tokenise(
string
input)
return
chunks;
}
}
public
class
this
.overlapsize = overlapsize;
this
.chunksize = chunksize;
}
public
ienumerable<
string
> tokenise(
string
input)
return
result;
}
}
使用:const
string
haystack =
"中國香港………………"
;
const
string
needle =
"中國香港 2013………………"
;
ianalyser analyser =
new
simhashanalyser();
var
likeness = analyser.getlikenessvalue(needle, haystack);
console.clear();
console.writeline(
"likeness: %"
, likeness * 100);
console.readkey();
simhash for c#
c SimHash匹配相似 演算法
使用場景 google 的 simhash 演算法 通過大量測試,simhash用於比較大文字,比如500字以上效果都還蠻好,距離小於3的基本都是相似,誤判率也比較低。從我的經驗,如果我們假定n是每個塊的大小,m是重疊的字元的數目,n 4和m 3是最好的選擇 public class simhash...
java演算法之 相似度匹配
package com.hxqc.pricemonitor.util 比較兩個字串的相似度 public class similarityutil private static int levenshtein distance string str1,string str2 if m 0 matri...
相似度匹配
同學們的實驗報告抄襲現象嚴重,現為了防止實驗報告抄襲的惡習,讓真正撰寫實驗報告的組能夠獲得公平的分數,需要設計乙個系統能夠查詢兩個實驗報告中相同的文字內容,從而計算兩個實驗報告的相似度。給定2個字串行x和y,當另一串行z既是x的子串行又是y的子串行時,稱z是序列x和y的公共子串行。找到兩個序列的最長...