使用場景:google 的 simhash 演算法
//通過大量測試,simhash用於比較大文字,比如500字以上效果都還蠻好,距離小於3的基本都是相似,誤判率也比較低。
//從我的經驗,如果我們假定n是每個塊的大小,m是重疊的字元的數目,n = 4和m = 3是最好的選擇
public class simhashanalyser : ianalyser
private static ienumerabledohashtokens(ienumerabletokens)
return hashedtokens;
}private static int gethammingdistance(int firstvalue, int secondvalue)
}return hammingvalue;
}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 ienumerabletokenise(string input)
return chunks;}}
this.overlapsize = overlapsize;
this.chunksize = chunksize;
}public ienumerabletokenise(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是最好的選擇 publicclasssimhashan...
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的公共子串行。找到兩個序列的最長...