コード例 #1
0
        public void JaccardDistanceTest()
        {
            JaccardDistance dist = new JaccardDistance();

            //Assert.Throws<ArgumentException>(() => dist.GetDistance(p0, q4));

            double result = dist.GetDistance(p0, q0);

            Assert.AreEqual(result, 1);

            result = dist.GetDistance(p1, q1);
            Assert.AreEqual(result, 1);

            result = dist.GetDistance(p2, q2);
            Assert.AreEqual(result, 0);

            result = dist.GetDistance(p3, q3);
            Assert.AreEqual(result, 0);

            result = dist.GetDistance(p4, q4);
            Assert.AreEqual(result, 0.66666, 0.00001);

            result = dist.GetDistance(p5, q5);
            Assert.AreEqual(result, 0.9, 0.1);
        }
コード例 #2
0
        /// <summary>
        /// Checks if the user question matches the current question pulled from quizlet
        /// </summary>
        /// <returns></returns>
        public FoundTypeWithPercent Matches()
        {
            if (FoundTypeWithPercent.foundType == FoundType.NEVER_SET)
            {
                JaccardDistance jaccardDistance = new JaccardDistance();

                decimal d = jaccardDistance.Distance(Question, UserEnterQuestion);


                if (d == 100)
                {
                    FoundTypeWithPercent.foundType = FoundType.CORRECT;
                    FoundTypeWithPercent.Percent   = 100;
                }
                else if (d >= 50)
                {
                    FoundTypeWithPercent.foundType = FoundType.POSSIBLE;
                    FoundTypeWithPercent.Percent   = d;
                }
                else
                {
                    FoundTypeWithPercent.foundType = FoundType.NONE;
                }
            }


            return(FoundTypeWithPercent);
        }
コード例 #3
0
        public static void TestJaccard()
        {
            string fn1 = "stree";
            string fn2 = "street";
            string fn3 = "steere";

            JaccardDistance jd = new JaccardDistance(2);

            double x = jd.GetDistanceFast(fn1, fn2);
            double y = jd.GetDistanceFast(fn1, fn3);

            double z = 1;
        }
コード例 #4
0
        /// <summary>
        /// JaccardDistance calculation to determine
        /// matching similar responses
        /// </summary>
        /// <param name="input"></param>
        /// <param name="memory"></param>
        /// <returns></returns>
        protected double calculateMatchRateJ(ArrayList input, ArrayList memory)
        {
            // instantiate new distance class
            JaccardDistance dist = new JaccardDistance();

            // create two vectors for inputs
            //double[] p = new double[] { 2.5, 3.5, 3.0, 3.5, 2.5, 3.0 };
            double[] p = DigitizePhonemes(input);
            //double[] q = new double[] { 3.0, 3.5, 1.5, 5.0, 3.5, 3.0 };
            double[] q = DigitizePhonemes(memory);

            List <double> q1 = EqualizeVector(p, q);

            double[] q2 = q1.ToArray();
            // get distance between the two vectors
            double distance = dist.GetDistance(p, q2);

            return(distance);
        }