Пример #1
0
        public void WordLevensteinAlgorithm_ShouldWork_CustomCharacterSimiarityResolver()
        {
            var resolver = new CharacterSimilarityResolverDefault(null, StringComparisonOptions.CaseSensitive);

            resolver.SetMistakeSimilarity('m', 'n', 0.8f);
            resolver.SetMistakeSimilarity('o', 'u', 0.7f);
            resolver.SetMistakeSimilarity('i', 'y', 0.8f);
            resolver.SetMistakeSimilarity('c', 'k', 0.6f);

            resolver.SetMistakeSimilarity('X', 'A', 0.9f);

            var algorithm = new LevensteinAlgorithm <Word, char>(resolver);

            AreSimilar(algorithm, "XXXXX", "AAAAA");
            NotSimilar(algorithm, "xxxxx", "aaaaa");


            AreSimilar(algorithm, "Mehran", "Nehran");
            NotSimilar(algorithm, "MEHRAN", "mehran");
            AreSimilar(algorithm, "Afshin", "Aphshin");
            AreSimilar(algorithm, "Mehran", "Nahran");
            AreSimilar(algorithm, "Monica", "Monika");
            AreSimilar(algorithm, "Nonica", "Nomika");
            AreSimilar(algorithm, "Crespo", "Krespo");
            NotSimilar(algorithm, "Mehran", "RamMeh");
            NotSimilar(algorithm, "Penalty", "People");


            AreSimilar(algorithm, "Monica", "Numyka");
            NotSimilar(algorithm, "Monica", "NUmYkA");
        }
Пример #2
0
        public void PhraseLevensteinAlgorithm_ShouldWork_Default()
        {
            var algorithm =
                new LevensteinAlgorithm <Phrase, Word>(
                    new WordSimilarityResolverDefault()
                    );

            AreSimilar(algorithm, "Mehran Davoudi", "Nehran Dawoody");
            AreSimilar(algorithm, "Afshin Alizadeh", "Aphshin Alizade");

            NotSimilar(algorithm, "Lilian Alpha", "Lamborghini Beta");
            NotSimilar(algorithm, "Crash the world", "Clash of clawns");
        }
Пример #3
0
        public void WordLevensteinAlgorithm_ShouldWork_CustomCharacterSimiarityResolver_NotCaseSensitive()
        {
            var resolver = new CharacterSimilarityResolverDefault(null, StringComparisonOptions.None);

            resolver.SetMistakeSimilarity('m', 'n', 0.8f);
            resolver.SetMistakeSimilarity('o', 'u', 0.7f);
            resolver.SetMistakeSimilarity('i', 'y', 0.8f);
            resolver.SetMistakeSimilarity('c', 'k', 0.6f);
            resolver.SetMistakeSimilarity('X', 'A', 0.9f);

            var algorithm = new LevensteinAlgorithm <Word, char>(resolver);

            AreSimilar(algorithm, "XXXXX", "AAAAA");
            AreSimilar(algorithm, "xxxxx", "aaaaa");

            AreSimilar(algorithm, "Monica", "Numyka");
            AreSimilar(algorithm, "Monica", "NUmYkA");
        }
Пример #4
0
        public void WordLevensteinAlgorithm_ShouldWork_Default_NotCaseSensitive()
        {
            var algorithm = new LevensteinAlgorithm <Word, char>(new CharacterSimilarityResolverDefault()
            {
                StringComparisonOptions = StringComparisonOptions.None
            });

            AreSimilar(algorithm, "Mehran", "Nehran");
            AreSimilar(algorithm, "MEHRAN", "mehran");
            AreSimilar(algorithm, "Afshin", "Aphshin");
            AreSimilar(algorithm, "Mehran", "Nahran");
            AreSimilar(algorithm, "Monica", "Monika");
            AreSimilar(algorithm, "Nonica", "Nomika");
            AreSimilar(algorithm, "Crespo", "Krespo");
            AreSimilar(algorithm, "Monica", "Numyka");

            NotSimilar(algorithm, "Mehran", "RamMeh");
            NotSimilar(algorithm, "Penalty", "People");
        }
Пример #5
0
        private void NotSimilar(LevensteinAlgorithm <Phrase, Word> algorithm, string left, string right)
        {
            var similarity = algorithm.GetSimilarity(left, right);

            Assert.IsTrue(similarity < 0.5, string.Format("{0}-{1} should NOT be similar (Similarity: {2})", left, right, similarity));
        }
Пример #6
0
        private void NotSimilar(LevensteinAlgorithm <Word, char> algorithm, string left, string right)
        {
            var similarity = algorithm.GetSimilarity(left, right);

            Assert.Less(similarity, 0.5, string.Format("{0}-{1} should NOT be similar (Similarity: {2})", left, right, similarity));
        }
Пример #7
0
        private void AreSimilar(LevensteinAlgorithm <Word, char> algorithm, string left, string right)
        {
            var similarity = algorithm.GetSimilarity(left, right);

            Assert.Greater(similarity, 0.6, string.Format("{0}-{1} should be similar (Similarity: {2})", left, right, similarity));
        }