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));
 }
Exemple #2
0
        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();
        }
Exemple #3
0
        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");
        }