c SimHash匹配相似 演算法

2021-09-06 11:58:59 字數 1477 閱讀 5969

使用場景: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的公共子串行。找到兩個序列的最長...