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); }
/// <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); }
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; }
/// <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); }