Exemple #1
0
        private static void CheckOnCriteria(double scienceFile, double funFile, double poemFile, double file, ParserFileInfo fileClass)
        {
            var sumCriteria = Math.Abs(scienceFile - file) +
                              Math.Abs(funFile - file) +
                              Math.Abs(poemFile - file);
            CheckFile data = new CheckFile();

            if (sumCriteria == 0)
            {
                sumCriteria = 1;
            }

            data.ScienceClass = (sumCriteria - Math.Abs(scienceFile - file)) / sumCriteria * 100;
            data.FunClass     = (sumCriteria - Math.Abs(funFile - file)) / sumCriteria * 100;
            data.PoemClass    = (sumCriteria - Math.Abs(poemFile - file)) / sumCriteria * 100;
            fileClass.checkData.Add(data);
        }
Exemple #2
0
        public void LoadFile(string Type, bool directory = false)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Title = "Выберите имя";
            string path = string.Empty;


            if (Type != "Проверка")
            {
                foreach (var item in _info)
                {
                    if (Type == item.Type)
                    {
                        _info.Remove(item);
                        break;
                    }
                }
            }
            else
            {
                int count = 0;
                foreach (var item in _info)
                {
                    switch (item.Type)
                    {
                    case "Эталон Научной":
                        count++;
                        break;

                    case "Эталон художественного":
                        count++;
                        break;

                    case "Эталон стихотворения":
                        count++;
                        break;
                    }
                }
                if (count != 3)
                {
                    MessageBox.Show("Загрузите все 3 эталона");
                    return;
                }
            }

            if (openFileDialog.ShowDialog() == true)
            {
                path = openFileDialog.FileName;
            }

            string[] files = { path };
            if (directory)
            {
                files = Directory.GetFiles(Path.GetDirectoryName(path));
            }

            if (string.IsNullOrEmpty(path))
            {
                return;
            }

            foreach (var file in files)
            {
                var fileInfo = new ParserFileInfo();
                fileInfo.Type     = Type;
                fileInfo.FileName = file.Split('\\').Last();
                if (Type == "Проверка")
                {
                    fileInfo.NeedCheck = true;
                }

                LoadFile(file, fileInfo);

                fileInfo.CorrelationFirstCriteria = Math.Round(FirstCriteriaWork(fileInfo.CriteriaFirst), 4);
                if (double.IsNaN(fileInfo.CorrelationFirstCriteria))
                {
                    fileInfo.CorrelationFirstCriteria = 0;
                }
                fileInfo.CorrelationSecondCriteria = Math.Round(FirstCriteriaWork(fileInfo.CriteriaSecond), 4);
                if (double.IsNaN(fileInfo.CorrelationSecondCriteria))
                {
                    fileInfo.CorrelationSecondCriteria = 0;
                }

                Infos.Add(fileInfo);
            }
        }
Exemple #3
0
        private static void LoadFile(string path, ParserFileInfo fileInfo)
        {
            var text = File.ReadAllText(path, Encoding.UTF8);

            for (int i = 0; i < 10; i++)
            {
                text = text.Replace("\r\n\r\n\r\n", "\r\n\r\n");
            }

            var pattern        = "\r\n\r\n";
            var paragraphSplit = System.Text.RegularExpressions.Regex.Split(text, pattern);
            var paragraphWords = 0;

            fileInfo.WordCount         = text.Split(' ').Where(q => q.Length > 2).ToArray().Length;
            fileInfo.AverageWordLength = fileInfo.WordCount / text.Length;

            Dictionary <string, int> wordsLanguages = new Dictionary <string, int>();

            foreach (var word in text.Split(' ').Where(q => q.Length > 2).ToArray())
            {
                var language = LanguagetText(word);
                if (wordsLanguages.ContainsKey(language))
                {
                    wordsLanguages[language]++;
                }
                else
                {
                    wordsLanguages.Add(language, 1);
                }
            }
            var mainLanguage = wordsLanguages.First(q => q.Value == wordsLanguages.Max(l => l.Value));

            fileInfo.ForeignWordsCount = wordsLanguages.Where(q => q.Key != mainLanguage.Key).Sum(q => q.Value);

            foreach (var paragparh in paragraphSplit)
            {
                var line = paragparh.Split(' ');
                paragraphWords = line.Where(q => q.Length > 2).ToArray().Length;

                var sentece       = paragparh.Split(new char[] { '.', '!', '?' });
                var sentenceWords = paragraphWords / (double)sentece.Length;

                fileInfo.CriteriaFirst.Add(new CriteriaData()
                {
                    Words       = paragraphWords,
                    SenteceWord = sentenceWords,
                });

                var newLineCount = System.Text.RegularExpressions.Regex.Split(paragparh, "\r\n");
                foreach (var newLine in newLineCount)
                {
                    var words        = newLine.Split(' ');
                    var LineSenteces = newLine.Split(new char[] { '.', '!', '?' });
                    fileInfo.CriteriaSecond.Add(new CriteriaData()
                    {
                        Words       = words.Where(q => q.Length > 2).ToArray().Length,
                        SenteceWord = LineSenteces.Length,
                    });
                }
            }

            fileInfo.ParagraphWordsCount = fileInfo.WordCount / paragraphSplit.Length;
            for (int i = 0; i < text.Length; i++)
            {
                var letter = text[i];
                if (letter == '.' || letter == '!' || letter == '?')
                {
                    fileInfo.SentenceCount++;
                }
                if (letter == '\n')
                {
                    if (i + 2 < text.Length && text[i + 2] == '\n')
                    {
                        fileInfo.ParagraphCount++;
                        while (i + 2 < text.Length && text[i + 2] == '\n')
                        {
                            i += 2;
                        }
                    }
                    else
                    {
                        fileInfo.LineBreaksCount++;
                    }
                }
                if (letter == ',')
                {
                    fileInfo.CommasCount++;
                }
                if (letter == '–' && text[i - 2] == '\n')
                {
                    fileInfo.DirectSpeechCount++;
                }
                if (letter == '\"' || letter == '«')
                {
                    fileInfo.QuotesCount++;
                }
            }
        }