private double countScore(ComparationResult result, int countOfSequence)
        {
            double score = 1;

            if (countOfSequence > 0)
            {
                score = (double)((2.0 * (double)result.details.Count) / (double)countOfSequence);
            }
            return(Math.Round(score, 2, MidpointRounding.AwayFromZero));;
        }
        public override ComparationResult compare(ComparationInput input)
        {
            List <string> text1ToAnalyze, text2ToAnalyze;

            prepareTextsTOAnalyze(input, out text1ToAnalyze, out text2ToAnalyze);

            ComparationResult result = new ComparationResult();

            result.filename1 = input.filename1;
            result.filename2 = input.filename2;
            result.details   = new List <ComparationDetail>();

            int countOfWords = input.countOfWord;
            int countOfParts = 0;

            for (int i = 0; i < text1ToAnalyze.Count(); i++)
            {
                for (int j = 0; j < text2ToAnalyze.Count(); j++)
                {
                    var sentence1 = text1ToAnalyze[i];
                    var sentence2 = text2ToAnalyze[j];

                    List <String> words1 = splitToWord(sentence1);
                    List <String> words2 = splitToWord(sentence2);

                    if (words1.Count > countOfWords - 1 && words2.Count > countOfWords - 1)
                    {
                        IEnumerable <IEnumerable <String> > parts1 = GetPermutations <String>(words1.AsEnumerable(), countOfWords);
                        IEnumerable <IEnumerable <String> > parts2 = GetPermutations <String>(words2.AsEnumerable(), countOfWords);
                        countOfParts += parts1.Count() + parts2.Count();

                        List <List <String> > commonParts = new List <List <string> >();
                        foreach (var part1 in parts1)
                        {
                            foreach (var part2 in parts2)
                            {
                                if (part1.All(p => part2.Contains(p)))
                                {
                                    commonParts.Add(part1.ToList());
                                }
                            }
                        }

                        List <ComparationDetail> detailsPart = prepareDetails(i, j, sentence1, sentence2, commonParts);
                        result.details.AddRange(detailsPart);
                    }
                }
            }

            result.score  = countScore(result, countOfParts);
            result.weigth = prepareWeight(countOfWords);
            return(result);
        }
示例#3
0
        public override ComparationResult compare(ComparationInput input)
        {
            List <String> text1toAnalyze = splitToWord(changeManySpacesToOne(input.file1));
            List <String> text2toAnalyze = splitToWord(changeManySpacesToOne(input.file2));

            ComparationResult result = new ComparationResult();

            result.filename1 = input.filename1;
            result.filename2 = input.filename2;
            result.weigth    = weight;
            result.score     = text1toAnalyze.Count.Equals(text2toAnalyze.Count) ? 1 : 0;
            return(result);
        }
示例#4
0
        public override ComparationResult compare(ComparationInput input)
        {
            String text1toAnalyze = removeAllPunctuation(removeWhitespace(input.file1));
            String text2toAnalyze = removeAllPunctuation(removeWhitespace(input.file2));

            ComparationResult result = new ComparationResult();

            result.filename1 = input.filename1;
            result.filename2 = input.filename2;
            result.weigth    = weight;
            result.score     = text1toAnalyze.Length.Equals(text2toAnalyze.Length) ? 1 : 0;
            return(result);
        }
示例#5
0
        public void testIsNotEqualsLenghtNullCheck()
        {
            IComparator      comparator = new NumerOfLettersComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1 = "filename1";
            input.filename2 = "filename2";

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(1, result.score);
            Assert.AreEqual(1, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
        public void testNullCheck()
        {
            IComparator      comparator = new WordsIndependentOrderInSentenceComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1 = "Loca Con Su Tiguere";
            input.filename2 = "Loca ";

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(1, result.score);
            Assert.AreEqual(0, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
示例#7
0
        public void testIsEqualsNumerOfWordNullCheck()
        {
            IComparator      comparator = new NumberOfWordComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1 = "filename1";
            input.filename2 = "filename2";

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(1, result.score);
            Assert.AreEqual(0.5, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
示例#8
0
        public void testWithoutSimilarity()
        {
            IComparator      comparator = new SameSentenceComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1 = "filename1";
            input.filename2 = "filename2";
            input.file1     = "to      JEST test.";
            input.file2     = "to  nie    JEST test.";

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(0, result.score);
            Assert.AreEqual(3, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
示例#9
0
        public override ComparationResult compare(ComparationInput input)
        {
            String text1LowerCase = toLowerCase(input.file1);
            String text2LowerCase = toLowerCase(input.file2);

            String text1RemovedManySpaces = changeManySpacesToOne(text1LowerCase);
            String text2RemovedManySpaces = changeManySpacesToOne(text2LowerCase);

            List <String> text1Sentences = splitToSentence(text1RemovedManySpaces);
            List <String> text2Sentences = splitToSentence(text2RemovedManySpaces);

            List <String> text1ToAnalyze = reduceListByEmpty(trim(text1Sentences));
            List <String> text2ToAnalyze = reduceListByEmpty(trim(text2Sentences));


            ComparationResult result = new ComparationResult();

            result.filename1 = input.filename1;
            result.filename2 = input.filename2;
            result.details   = new List <ComparationDetail>();
            for (int i = 0; i < text1ToAnalyze.Count(); i++)
            {
                for (int j = 0; j < text2ToAnalyze.Count(); j++)
                {
                    var sentence1 = text1ToAnalyze[i];
                    var sentence2 = text2ToAnalyze[j];
                    if (sentence1.Equals(sentence2))
                    {
                        ComparationDetail detail = new ComparationDetail();
                        detail.file1_full_sentence   = sentence1;
                        detail.file1_sentence_number = i;
                        detail.file2_full_sentence   = sentence2;
                        detail.file2_sentence_number = j;
                        detail.similarity            = new List <String>(sentence1.Split(SPACE_CHAR));
                        result.details.Add(detail);
                    }
                }
            }
            HashSet <String> uniqueResult    = new HashSet <String>(result.details.Select(r => r.file1_full_sentence));
            HashSet <String> uniqueSentence1 = new HashSet <String>(text1ToAnalyze);
            HashSet <String> uniqueSentence2 = new HashSet <String>(text2ToAnalyze);

            result.score  = countScore(uniqueResult, uniqueSentence1, uniqueSentence2);
            result.weigth = weight;
            return(result);
        }
示例#10
0
        public void testIsNotEqualsNumerOfWordMix()
        {
            IComparator      comparator = new NumberOfWordComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1 = "filename1";
            input.filename2 = "filename2";
            input.file1     = "testtest.test";
            input.file2     = "estt.estte   stt";

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(0, result.score);
            Assert.AreEqual(0.5, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
示例#11
0
        public void testIsEqualsLenghtRemoveWhiteSpacedAndPunctuation()
        {
            IComparator      comparator = new NumerOfLettersComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1 = "filename1";
            input.filename2 = "filename2";
            input.file1     = "test,te   stt.est";
            input.file2     = "e   st,test.testt";

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(1, result.score);
            Assert.AreEqual(1, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
示例#12
0
        public void testIsEqualsNumerOfSentenceDotComma()
        {
            IComparator      comparator = new NumberOfSentenceComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1 = "filename1";
            input.filename2 = "filename2";
            input.file1     = "test.test.test";
            input.file2     = "estt,estte,stt";

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(1, result.score);
            Assert.AreEqual(0.5, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
示例#13
0
        public void testTheSameTwoSentenceDuplicate()
        {
            IComparator      comparator = new SameSentenceComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1 = "filename1";
            input.filename2 = "filename2";
            input.file1     = "TO jest    test. to     JEST test. to     JEST test.";
            input.file2     = "to     JEST test.    . to     JEST test.";

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(1, result.score);
            Assert.AreEqual(3, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
        public void testOneDiffrentSentence()
        {
            IComparator      comparator = new WordsIndependentOrderInSentenceComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1   = "filename1";
            input.filename2   = "filename2";
            input.file1       = "to jest tylko test.to jest tylko test";
            input.file2       = "to jest tylko test.to nie jest tylko test";
            input.countOfWord = 2;

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(0.86, result.score);
            Assert.AreEqual(1.0, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
示例#15
0
        public void testTheSameTwoSentenceCoW3()
        {
            IComparator      comparator = new WordsSequenceInSentenceComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1   = "filename1";
            input.filename2   = "filename2";
            input.file1       = "to jest test.";
            input.file2       = "to jest test.";
            input.countOfWord = 3;

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(1, result.score);
            Assert.AreEqual(1.8, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
示例#16
0
        public void testDuplicateSentence()
        {
            IComparator      comparator = new WordsSequenceInSentenceComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1   = "filename1";
            input.filename2   = "filename2";
            input.file1       = "to jest tylko test.to jest tylko test";
            input.file2       = "to jest tylko test.";
            input.countOfWord = 2;

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(1, result.score);
            Assert.AreEqual(1.5, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
        public void testBigTextCoW3()
        {
            IComparator      comparator = new WordsIndependentOrderInSentenceComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1   = "Loca Con Su Tiguere";
            input.filename2   = "Loca ";
            input.file1       = "Ella ta por mi y por ti borro y eso que tu tiene to y yo ni un kiki.Ella ta por mi y por ti borro y eso que tu tiene to y yo ni un kiki..Tu rueda en un BM to la vaina con de to,.Vive en un cason con picina en el millon,.Come de lo bueno, viste de lo caro, joven empresario que fuma buen abano,.Mi casa e de sin y me mojo cuando llueve, si me tiro pa lomina me quedo en el nueve,.Luchi con el billa y mafu cuando empeno, manlleo si e que jayo y si no hay toy feo,.Tu apuesta a la carrera y practica al polo, yo apuesto al ma jodio y siempre ando en bolo,.Tu rueda bajo aire, yo bajo el solazo, tu bebe perinon y yo bebo agua en jarro,..Ella e loca con su tiguere, loca loca loca.ella e loca con su tiguere, tu suave.Ella e loca con su tiguere, loca loca loca.ella e loca con su tiguere, me tiene sultio..Ella ta por mi y por ti borro y eso que tu tiene to y yo ni un kiki.Ella ta por mi y por ti borro y eso que tu tiene to y yo ni un kiki..Tu la saca a casa e campo yo la llevo a bocachica,.Tu la baja a cabare yo la etrallo en la matica..Tu le rueda a tony y romo, y le gata un billeton, yo la invito a villa mella y la jalto e chicharron..Ella e loca con su tiguere, loca loca loca.ella e loca con su tiguere, con su tiguere..Ella ta por mi y por ti borro y eso que tu tiene to y yo ni un kiki..Ella ta pol mi y pol ti borro.....musica............... tu ta chari con mily..Ella ta por mi y por ti borro y eso que tu tiene to y yo ni un kiki.Ella ta por mi y por ti borro y eso que tu tiene to y yo ni un kiki..Tu viaja pa lo USA y te da bueno Resort, yo viajo si pa Herrera y me doy mi chapuson.Tu tiene to mangao si embargo te dien borra, el nueve ta por mi porque tengo pila e cotorra..Ella e loca con su tiguere, loca loca loca.ella e loca con su tiguere, loca con su tiguere..Ella ta por mi y por ti borro y eso que tu tiene to y yo ni un kiki.Ella ta por mi y por ti borro y eso que tu tiene to y yo ni un kiki";
            input.file2       = "Loca (Loca).No te pongas bruto (Loca).Que te la bebe’.Dance or Die (Loca).Ra-ta-ta..Ella se hace la bruta pa’ cotizar.Cinco minutitos de su saldo del celu contigo.Te cotorrea el oído pa’ tenerte en alta.Ella muere por ti pero por mi es que matas...Sigo tranquila como una paloma de e’quina.Mientras ella se pasa en su BM.Mira yo de aquí no me voy, se que está está por mí.Y ninguna va poder quitármelo de un tirón..Yo soy loca con mi tigre Loca, Loca, Loca.Soy loca con mi tigre Loca, Loca, Loca.Soy loca con mi tigre (Loca, Loca, Loca).Soy Loca con mi tigre (Lloca, Loca, Loca)..El está por mí.Y por ti borró (borró).Y eso que tú tienes to’.Y yo ni un Kikí..El está por mí.Y por ti borró (borró).Y eso que tú tienes to’.Y yo ni un Kikí..Mientras ella te complace con todos tus caprichos.Yo te llevo al malecón por un caminito.Me dicen que tu novia anda con un rifle.Porque te vio bailando mambo pa’ mi ¿Qué no lo permite?..Yo no tengo la culpa de que tú te enamore’.Mientras él te compra flores yo compro condo’ (whooo)..Yo soy loca con mi tigre.Cuando amarro ya no he mira eso es lo que dicen..Yo soy loca con mi tigre, Loca, Loca, Loca.Soy loca con mi tigre, Loca, Loca, Loca.Soy loca con mi tigre (Loca, Loca, Loca).Soy loca con mi tigre.Dios mio! (ah, ah)..Se colán lo ra-ta-ta.No te ponga’ bruto.Que te la bebe Loca (loca) loca...El está por mi.Y por ti borró (borró).Y eso que tu tienes to’.Y yo ni un Kikí..Yo soy loca con mi tigre, Loca, Loca, Loca.Soy loca con mi tigre, Loca, Loca, Loca.La loca, la loca, la loca..Loca, Loca, Loca...";
            input.countOfWord = 3;

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(0.02, result.score);
            Assert.AreEqual(1.2, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
        public void testTheSameTwoSentenceCoW4()
        {
            IComparator      comparator = new WordsIndependentOrderInSentenceComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1   = "filename1";
            input.filename2   = "filename2";
            input.file1       = "to jest tylko test.";
            input.file2       = "to jest tylko test.";
            input.countOfWord = 4;

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(1, result.score);
            Assert.AreEqual(1.33, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
        public void testDiffrent()
        {
            IComparator      comparator = new WordsIndependentOrderInSentenceComparator();
            ComparationInput input      = new ComparationInput();

            input.filename1   = "Loca Con Su Tiguere";
            input.filename2   = "Loca ";
            input.file1       = "ala ma kota.";
            input.file2       = "kot ma ale.";
            input.countOfWord = 2;

            ComparationResult result = comparator.compare(input);

            Assert.AreEqual(0, result.score);
            Assert.AreEqual(1.0, result.weigth);
            Assert.AreEqual(input.filename1, result.filename1);
            Assert.AreEqual(input.filename2, result.filename2);
        }
        public override ComparationResult compare(ComparationInput input)
        {
            List <string> text1ToAnalyze, text2ToAnalyze;

            prepareTextsTOAnalyze(input, out text1ToAnalyze, out text2ToAnalyze);

            ComparationResult result = new ComparationResult();

            result.filename1 = input.filename1;
            result.filename2 = input.filename2;
            result.details   = new List <ComparationDetail>();

            int countOfWords    = input.countOfWord;
            int countOfSequence = 0;

            for (int i = 0; i < text1ToAnalyze.Count(); i++)
            {
                for (int j = 0; j < text2ToAnalyze.Count(); j++)
                {
                    var sentence1 = text1ToAnalyze[i];
                    var sentence2 = text2ToAnalyze[j];

                    List <String> words1 = splitToWord(sentence1);
                    List <String> words2 = splitToWord(sentence2);

                    if (words1.Count > countOfWords - 1 && words2.Count > countOfWords - 1)
                    {
                        List <String> sequence1 = createSequence(words1, countOfWords);
                        List <String> sequence2 = createSequence(words2, countOfWords);
                        countOfSequence += sequence1.Count() + sequence2.Count();
                        List <String>            commonParts = sequence1.Where(item => sequence2.Contains(item)).ToList();
                        List <ComparationDetail> detailsPart = prepareDetails(i, j, sentence1, sentence2, commonParts);
                        result.details.AddRange(detailsPart);
                    }
                }
            }
            result.score  = countScore(result, countOfSequence);
            result.weigth = prepareWeight(countOfWords);
            return(result);
        }