public void TestDistanceCharacterInsDelInterface() { var instance = new WeightedLevenshtein(new ExampleCharSub(), new ExampleInsDel()); // Same as testDistance above. Assert.Equal(0.0, instance.Distance("String1", "String1"), 1); Assert.Equal(0.5, instance.Distance("String1", "Srring1"), 1); Assert.Equal(1.5, instance.Distance("String1", "Srring2"), 1); // Cost of insert of 'i' is less than normal, so these scores are // different than testDistance above. Note that the cost of delete // has been set differently than the cost of insert, so the distance // call is not symmetric in its arguments if an 'i' has changed. Assert.Equal(0.5, instance.Distance("Strng", "String"), 1); Assert.Equal(0.8, instance.Distance("String", "Strng"), 1); Assert.Equal(1.0, instance.Distance("Strig", "String"), 1); Assert.Equal(1.0, instance.Distance("String", "Strig"), 1); // Same as above with limits. Assert.Equal(0.0, instance.Distance("String1", "String1", double.MaxValue), 1); Assert.Equal(0.0, instance.Distance("String1", "String1", 2.0), 1); Assert.Equal(1.5, instance.Distance("String1", "Srring2", double.MaxValue), 1); Assert.Equal(1.5, instance.Distance("String1", "Srring2", 2.0), 1); Assert.Equal(1.5, instance.Distance("String1", "Srring2", 1.5), 1); Assert.Equal(1.0, instance.Distance("String1", "Srring2", 1.0), 1); Assert.Equal(4.0, instance.Distance("String1", "Potato", 4.0), 1); NullEmptyTests.TestDistance(instance); }
public void TestDistance() { var instance = new QGram(k: 2); // AB BC CD CE // 1 1 1 0 // 1 1 0 1 // Total: 2 var result = instance.Distance("ABCD", "ABCE"); Assert.Equal(expected: 2.0, actual: result); Assert.Equal( expected: 0.0, actual: instance.Distance("S", "S"), precision: 1); // 0.0 Assert.Equal( expected: 0.0, actual: instance.Distance("012345", "012345"), precision: 1); // 0.0 // NOTE: not using null/empty tests in NullEmptyTests because QGram is different Assert.Equal(0.0, instance.Distance("", ""), 1); Assert.Equal(2.0, instance.Distance("", "foo"), 1); Assert.Equal(2.0, instance.Distance("foo", ""), 1); NullEmptyTests.AssertArgumentNullExceptions(instance); }
public void TestDistance() { var s0 = "ABABABAB"; var s1 = "ABCABCABCABC"; var s2 = "POIULKJH"; var ngram = new NGram(); Assert.True(ngram.Distance(s0, s1) < ngram.Distance(s0, s2)); Assert.Equal( expected: 0.0, actual: ngram.Distance("SIJK", "SIJK"), precision: 1); // 0.0 Assert.Equal( expected: 0.0, actual: ngram.Distance("S", "S"), precision: 1); // 0.0 Assert.Equal( expected: 1.0, actual: ngram.Distance("", "S"), precision: 1); // 0.0 Assert.Equal( expected: 1.0, actual: ngram.Distance("", "SIJK"), precision: 1); // 0.0 NullEmptyTests.TestDistance(ngram); }
public void TestDistance() { var instance = new MetricLCS(); NullEmptyTests.TestDistance(instance); // TODO: regular (non-null/empty) distance tests }
public void TestDistance() { var instance = new JaroWinkler(); NullEmptyTests.TestDistance(instance); // TODO: regular (non-null/empty) distance tests }
public void TestSimilarity() { var instance = new NormalizedLevenshtein(); NullEmptyTests.TestSimilarity(instance); // TODO: regular (non-null/empty) similarity tests }
public void TestDistance() { var instance = new RatcliffObershelp(); NullEmptyTests.TestDistance(instance); /// TODO: regular (non-null/empty) distance tests }
public void TestDistance() { var instance = new NormalizedLevenshtein(); NullEmptyTests.TestDistance(instance); // TODO: regular (non-null/empty) distance tests }
public void TestDistance() { var instance = new WeightedLevenshtein(new ExampleCharSub()); Assert.Equal(0.0, instance.Distance("String1", "String1"), 1); Assert.Equal(0.5, instance.Distance("String1", "Srring1"), 1); Assert.Equal(1.5, instance.Distance("String1", "Srring2"), 1); NullEmptyTests.TestDistance(instance); }
public void TestDistance() { var instance = new Damerau(); Assert.Equal(expected: 1.0, actual: instance.Distance("ABCDEF", "ABDCEF")); Assert.Equal(expected: 2.0, actual: instance.Distance("ABCDEF", "BACDFE")); Assert.Equal(expected: 1.0, actual: instance.Distance("ABCDEF", "ABCDE")); NullEmptyTests.TestDistance(instance); }
public void TestDistance() { var instance = new Levenshtein(); Assert.Equal(expected: 1.0, actual: instance.Distance("My string", "My tring")); Assert.Equal(expected: 2.0, actual: instance.Distance("My string", "M string2")); Assert.Equal(expected: 1.0, actual: instance.Distance("My string", "My $tring")); NullEmptyTests.TestDistance(instance); }
public void TestDistance() { var instance = new Jaccard(k: 2); var result = instance.Distance("ABCDE", "ABCDF"); Assert.Equal(expected: 0.4, actual: result); NullEmptyTests.TestDistance(instance); }
public void TestDistance() { var instance = new LongestCommonSubsequence(); // LCS = GA or GC => distance = 4 (remove 3 letters and add 1) Assert.Equal(expected: 4, actual: instance.Distance("AGCAT", "GAC")); Assert.Equal(expected: 1, actual: instance.Distance("AGCAT", "AGCT")); NullEmptyTests.TestDistance(instance); }
public void TestSimilarity() { var instance = new Cosine(); var result = instance.Similarity("ABC", "ABCE"); Assert.Equal( expected: 0.71, actual: result, precision: 2 // 0.01 ); NullEmptyTests.TestSimilarity(instance); }
public void TestSimilarity() { var instance = new Jaccard(k: 2); // AB BC CD DE DF // 1 1 1 1 0 // 1 1 1 0 1 // => 3 / 5 = 0.6 var result = instance.Similarity("ABCDE", "ABCDF"); Assert.Equal(expected: 0.6, actual: result); NullEmptyTests.TestSimilarity(instance); }
public void TestSimilarity() { var instance = new SorensenDice(2); // AB BC CD DE DF FG // 1 1 1 1 0 0 // 1 1 1 0 1 1 // => 2 x 3 / (4 + 5) = 6/9 = 0.6666 var result = instance.Similarity("ABCDE", "ABCDFG"); Assert.Equal( expected: 0.6667, // last digit should be 7 because of rounding actual: result, precision: 4 //0.0001 ); NullEmptyTests.TestSimilarity(instance); }
public void TestSimilarity() { var instance = new JaroWinkler(); Assert.Equal( expected: 0.974074, actual: instance.Similarity("My string", "My tsring"), precision: 6 // 0.000001 ); Assert.Equal( expected: 0.896296, actual: instance.Similarity("My string", "My ntrisg"), precision: 6 // 0.000001 ); NullEmptyTests.TestSimilarity(instance); }
public void TestDistance() { var instance = new WeightedLevenshtein(new ExampleCharSub()); Assert.Equal(0.0, instance.Distance("String1", "String1"), 1); Assert.Equal(0.5, instance.Distance("String1", "Srring1"), 1); Assert.Equal(1.5, instance.Distance("String1", "Srring2"), 1); // One insert or delete. Assert.Equal(1.0, instance.Distance("Strng", "String"), 1); Assert.Equal(1.0, instance.Distance("String", "Strng"), 1); // With limits. Assert.Equal(0.0, instance.Distance("String1", "String1", double.MaxValue), 1); Assert.Equal(0.0, instance.Distance("String1", "String1", 2.0), 1); Assert.Equal(1.5, instance.Distance("String1", "Srring2", double.MaxValue), 1); Assert.Equal(1.5, instance.Distance("String1", "Srring2", 2.0), 1); Assert.Equal(1.5, instance.Distance("String1", "Srring2", 1.5), 1); Assert.Equal(1.0, instance.Distance("String1", "Srring2", 1.0), 1); Assert.Equal(4.0, instance.Distance("String1", "Potato", 4.0), 1); NullEmptyTests.TestDistance(instance); }
public void TestDistance() { var instance = new OptimalStringAlignment(); // zero length Assert.Equal( expected: 6.0, actual: instance.Distance("", "ABCDEF"), precision: 0 // 0.0 ); Assert.Equal( expected: 6.0, actual: instance.Distance("ABCDEF", ""), precision: 0 // 0.0 ); Assert.Equal( expected: 0.0, actual: instance.Distance("", ""), precision: 0 // 0.0 ); // equality Assert.Equal( expected: 0.0, actual: instance.Distance("ABCDEF", "ABCDEF"), precision: 0 // 0.0 ); // single operation Assert.Equal( expected: 1.0, actual: instance.Distance("ABDCFE", "ABDCEF"), precision: 0 // 0.0 ); Assert.Equal( expected: 1.0, actual: instance.Distance("BBDCEF", "ABDCEF"), precision: 0 // 0.0 ); Assert.Equal( expected: 1.0, actual: instance.Distance("BDCEF", "ABDCEF"), precision: 0 // 0.0 ); Assert.Equal( expected: 1.0, actual: instance.Distance("ABDCEF", "ADCEF"), precision: 0 // 0.0 ); // other Assert.Equal( expected: 3.0, actual: instance.Distance("CA", "ABC"), precision: 0 // 0.0 ); Assert.Equal( expected: 2.0, actual: instance.Distance("BAC", "CAB"), precision: 0 // 0.0 ); Assert.Equal( expected: 4.0, actual: instance.Distance("abcde", "awxyz"), precision: 0 // 0.0 ); Assert.Equal( expected: 5.0, actual: instance.Distance("abcde", "vwxyz"), precision: 0 // 0.0 ); NullEmptyTests.TestDistance(instance); }
public void TestSimilarity() { var instance = new RatcliffObershelp(); /// test data from other algorithms /// "My string" vs "My tsring" /// Substrings: /// "ring" ==> 4, "My s" ==> 3, "s" ==> 1 /// Ratcliff-Obershelp = 2*(sum of substrings)/(length of s1 + length of s2) /// = 2*(4 + 3 + 1) / (9 + 9) /// = 16/18 /// = 0.888888888888889 Assert.Equal( expected: 0.888888888888889, actual: instance.Similarity("My string", "My tsring"), precision: 15 /// 0.000000000000001 ); /// test data from other algorithms /// "My string" vs "My tsring" /// Substrings: /// "My " ==> 3, "tri" ==> 3, "g" ==> 1 /// Ratcliff-Obershelp = 2*(sum of substrings)/(length of s1 + length of s2) /// = 2*(3 + 3 + 1) / (9 + 9) /// = 14/18 /// = 0.777777777777778 Assert.Equal( expected: 0.777777777777778, actual: instance.Similarity("My string", "My ntrisg"), precision: 15 /// 0.000000000000001 ); /// test data from essay by Ilya Ilyankou /// "Comparison of Jaro-Winkler and Ratcliff/Obershelp algorithms /// in spell check" /// https://ilyankou.files.wordpress.com/2015/06/ib-extended-essay.pdf /// p13, expected result is 0.857 Assert.Equal( expected: 0.857, actual: instance.Similarity("MATEMATICA", "MATHEMATICS"), precision: 3 /// 0.001 ); /// test data from stringmetric /// https://github.com/rockymadden/stringmetric /// expected output is 0.736842105263158 Assert.Equal( expected: 0.736842105263158, actual: instance.Similarity("aleksander", "alexandre"), precision: 15 /// 0.000000000000001 ); /// test data from stringmetric /// https://github.com/rockymadden/stringmetric /// expected output is 0.666666666666667 Assert.Equal( expected: 0.666666666666667, actual: instance.Similarity("pennsylvania", "pencilvaneya"), precision: 15 /// 0.000000000000001 ); /// test data from wikipedia /// https://en.wikipedia.org/wiki/Gestalt_Pattern_Matching /// expected output is 14/18 = 0.777777777777778 Assert.Equal( expected: 0.777777777777778, actual: instance.Similarity("WIKIMEDIA", "WIKIMANIA"), precision: 15 /// 0.000000000000001 ); /// test data from wikipedia /// https://en.wikipedia.org/wiki/Gestalt_Pattern_Matching /// expected output is 24/40 = 0.6 Assert.Equal( expected: 0.6, actual: instance.Similarity("GESTALT PATTERN MATCHING", "GESTALT PRACTICE"), precision: 15 /// 0.000000000000001 ); NullEmptyTests.TestSimilarity(instance); }
public void TestDistance() { var instance = new SorensenDice(); NullEmptyTests.TestDistance(instance); }