c SimHash匹配相似 演算法

2021-09-22 07:40:01 字數 3845 閱讀 5347

使用場景:google 的 simhash 演算法

//通過大量測試,simhash用於比較大文字,比如500字以上效果都還蠻好,距離小於3的基本都是相似,誤判率也比較低。

//從我的經驗,如果我們假定n是每個塊的大小,m是重疊的字元的數目,n = 4和m = 3是最好的選擇

publicclasssimhashanalyser : ianalyser

privatestaticienumerable<int> dohashtokens(ienumerable<string> tokens)

returnhashedtokens;

}

privatestaticintgethammingdistance(intfirstvalue,intsecondvalue)

}

returnhammin**alue;

}

privatestaticboolisbitset(intb,intpos)

privateintdocalculatesimhash(stringinput)

foreach(varvalueinhashedtokens)

else

}

}

varfingerprint = 0;

for(vari = 0; i < hashsize; i++)

}

returnfingerprint;

}

}

publicinte***ceianalyser

publicinte***ceitokeniser

publicclassfixedsizestringtokeniser : itokeniser

this.tokensize = tokensize;

}

publicienumerable<string> tokenise(stringinput)

returnchunks;

}

}

publicclass

this.overlapsize = overlapsize;

this.chunksize = chunksize;

}

publicienumerable<string> tokenise(stringinput)

returnresult;

}

}

使用:conststringhaystack ="中國香港………………";

conststringneedle ="中國香港 2013………………";

ianalyser analyser =newsimhashanalyser();

varlikeness = 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的公共子串行。找到兩個序列的最長...