public void CatchWordSwaps() { var source = SimpleTokeniser.Tokenise("how now brown cow"); var target = SimpleTokeniser.Tokenise("how brown now cow"); var ld2 = new LevenshteinDistance(); Assert.AreEqual(1, ld2.DamerauLevenshteinDistance(source.ToArray(), target.ToArray())); LevenshteinDistance ld = new LevenshteinDistance(); Assert.AreEqual(2, ld.Computer(source.ToArray(), target.ToArray())); }
public void DistanceTest() { string source = "how now brown cow"; string target = "how now brown crow"; // segment var sourceSegs = source.Split(new char[] {' '}); var targetSegs = target.Split(new char[] {' '}); DateTime a = DateTime.Now; int reps = 10000; for (int i = 0; i < reps; i++ ) { LevenshteinDistance.EditDistance(sourceSegs, targetSegs); } Assert.AreEqual(1, LevenshteinDistance.EditDistance(sourceSegs, targetSegs)); var b = DateTime.Now - a; DateTime c = DateTime.Now; var ld = new LevenshteinDistance(); for (int i = 0; i < reps; i++ ) { ld.Computer(sourceSegs, targetSegs); } Assert.AreEqual(1, ld.Computer(sourceSegs, targetSegs)); var d = DateTime.Now - c; // the static way is slower Assert.IsTrue(b > d); // no matter the order a = DateTime.Now; for (int i = 0; i < reps; i++) { LevenshteinDistance.EditDistance(sourceSegs, targetSegs); } Assert.AreEqual(1, LevenshteinDistance.EditDistance(sourceSegs, targetSegs)); b = DateTime.Now - a; Assert.IsTrue(b > d); var sourceChars = CharacterTokeniser.Tokenise(source); var targetChars = CharacterTokeniser.Tokenise(target); Assert.AreEqual(1, ld.Computer(sourceChars.ToArray(), targetChars.ToArray())); }
public void RaceTime() { var source = SimpleTokeniser.Tokenise("how now brown cow").ToArray(); var target = SimpleTokeniser.Tokenise("how brown now cow").ToArray(); const int reps = 1000000; DateTime a = DateTime.Now; LevenshteinDistance ldd = new LevenshteinDistance(); for (int i = 0; i < reps; i++) { ldd.DamerauLevenshteinDistance(source, target); } var b = DateTime.Now - a; DateTime c = DateTime.Now; LevenshteinDistance ld = new LevenshteinDistance(); for (int i = 0; i < reps; i++) { ld.Computer(source, target); } var d = DateTime.Now - c; Assert.IsTrue(b > d); }