public MinHasher_Buckets3(MinHasher3 mh, double sim_threshold_, double atn_) { this.mh = mh; this.sim_threshold = sim_threshold_; this.atn = atn_; setRowsInBand(rbHashSelector2(sim_threshold, mh.NumHashFunctions, atn)); }
static void processNumbersTest3(bool sample = false, int sample_size = 1000) { int numHashFunctions = 128; int universeSize = 1000; double simThreshold = 0.65; double atn = 0.05; MinHasher2 mh2 = new MinHasher2(numHashFunctions, simThreshold); NumberDocumentCreator numDocCreator2 = new NumberDocumentCreator(10, universeSize); int[] a1 = numDocCreator2.createDocument(universeSize); int[] a2 = numDocCreator2.createDocument(universeSize); Console.WriteLine("Actual jaccaard: " + MinHasher2.calculateJaccard(a1, a2)); Console.WriteLine("MinHash jaccaard: " + MinHasher2.calculateJaccard(mh2.getMinHashSignature(a1), mh2.getMinHashSignature(a2))); return; MinHasher3 mh = new MinHasher3(universeSize, numHashFunctions); MinHasher_Buckets3 mhb = new MinHasher_Buckets3(mh, simThreshold, atn); NumberDocumentCreator numDocCreator = new NumberDocumentCreator(10, universeSize); List <int> s1 = numDocCreator.createDocument(universeSize).ToList(); List <int> s2 = numDocCreator.createDocument(universeSize).ToList(); Console.WriteLine("Actual jaccaard: " + Jaccard.Calc(s1, s2)); Console.WriteLine("MinHash jaccaard: " + Jaccard.Calc(mh.GetMinHash(s1), mh.GetMinHash(s2))); return; Dictionary <int, List <int> > wordList = numDocCreator.documentCollectionList; //Now create a MinHasher object to minhash each of the documents created above //using 300 unique hashing functions. //MinHasher minHasher = new MinHasher(500, 5); Console.WriteLine("\r\nGenerating MinHash signatures ... "); Dictionary <int, List <uint> > docMinhashes = mhb.createMinhashCollection(wordList); //minHasher.createMinhashCollection(wordList); double avg_diff_perc_from_actual_and_minhash_jaccard = Util.calculateMinHashFunctionsAccuracy(wordList, docMinhashes); /*StringDocumentCreator strDocCreator = new StringDocumentCreator(100, 10000); * * Dictionary<int, string[]> wordList2 = strDocCreator.documentCollection; * * //Now create a MinHasher object to minhash each of the documents created above * //using 300 unique hashing functions. * //MinHasher minHasher = new MinHasher(500, 5); * Console.WriteLine("\r\nGenerating MinHash signatures ... "); * Dictionary<int, int[]> docMinhashes2 = minHasher.createMinhashCollection(wordList2); * double avg_diff_perc_from_actual_and_minhash_jaccard2 = Util.calculateMinHashFunctionsAccuracy(wordList2, docMinhashes2); */ Console.ReadKey(); }
public static void MinHasher3TestFunc1() { List <int> inums1 = new List <int>(); inums1.Add(10); inums1.Add(8); inums1.Add(11); inums1.Add(13); inums1.Add(2); inums1.Add(17); inums1.Add(3); inums1.Add(1); inums1.Add(19); inums1.Add(11); inums1.Add(100); inums1.Add(82); inums1.Add(115); inums1.Add(13); inums1.Add(2); inums1.Add(107); inums1.Add(3); inums1.Add(1); inums1.Add(19); inums1.Add(110); inums1.Add(10); inums1.Add(8); inums1.Add(110); inums1.Add(131); inums1.Add(2); inums1.Add(173); inums1.Add(3); inums1.Add(1); inums1.Add(19); inums1.Add(114); inums1.Add(10); inums1.Add(8); inums1.Add(11); inums1.Add(13); inums1.Add(2); inums1.Add(17); inums1.Add(3); inums1.Add(1); inums1.Add(19); inums1.Add(115); inums1.Add(10); inums1.Add(8); inums1.Add(11); inums1.Add(133); inums1.Add(2); inums1.Add(17); inums1.Add(3); inums1.Add(1); inums1.Add(19); inums1.Add(11); inums1.Add(10); inums1.Add(8); inums1.Add(11); inums1.Add(13); inums1.Add(2); inums1.Add(17); inums1.Add(3); inums1.Add(1); inums1.Add(19); inums1.Add(171); List <int> inums2 = new List <int>(); inums2.Add(1); inums2.Add(2); inums2.Add(5); inums2.Add(9); inums2.Add(12); inums2.Add(17); inums2.Add(13); inums2.Add(11); inums2.Add(9); inums2.Add(10); inums2.Add(1); inums2.Add(2); inums2.Add(5); inums2.Add(9); inums2.Add(12); inums2.Add(17); inums2.Add(13); inums2.Add(11); inums2.Add(9); inums2.Add(10); inums2.Add(1); inums2.Add(2); inums2.Add(5); inums2.Add(9); inums2.Add(12); inums2.Add(17); inums2.Add(13); inums2.Add(151); inums2.Add(9); inums2.Add(510); inums2.Add(1); inums2.Add(2); inums2.Add(5); inums2.Add(9); inums2.Add(12); inums2.Add(17); inums2.Add(13); inums2.Add(11); inums2.Add(95); inums2.Add(10); inums2.Add(1); inums2.Add(23); inums2.Add(5); inums2.Add(9); inums2.Add(162); inums2.Add(17); inums2.Add(13); inums2.Add(11); inums2.Add(93); inums2.Add(10); inums2.Add(19); inums2.Add(23); inums2.Add(5); inums2.Add(9); inums2.Add(12); inums2.Add(17); inums2.Add(13); inums2.Add(141); inums2.Add(94); inums2.Add(10); int universeSize = Jaccard.unionSize(inums1, inums2); MinHasher3 mh = new MinHasher3(universeSize, 135); List <uint> hvs1 = mh.GetMinHash(inums1).ToList(); List <uint> hvs2 = mh.GetMinHash(inums2).ToList(); Console.WriteLine(); Console.WriteLine("Estimated similarity: " + mh.Similarity(hvs1, hvs2)); Console.WriteLine("Jaccard similarity: " + Jaccard.Calc(inums1, inums2)); Console.WriteLine("done"); }