Пример #1
0
        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()));
        }
Пример #2
0
        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()));
        }
Пример #3
0
        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);
        }