示例#1
0
        public static void Main(string[] args)
        {
            // Запуск автоматических тестов. Ниже список тестовых наборов, который нужно запустить.
            // Закомментируйте тесты на те задачи, к которым ещё не приступали, чтобы они не мешались в консоли.
            // Все непрошедшие тесты
            var testsToRun = new string[]
            {
                //"TextAnalysis.SentencesParser_Tests",
                // "TextAnalysis.FrequencyAnalysis_Tests",
                "TextAnalysis.TextGenerator_Tests",
            };

            new AutoRun().Execute(new[]
            {
                "--stoponerror", // Останавливать после первого же непрошедшего теста. Закомментируйте, чтобы увидеть все падающие тесты
                "--noresult",
                "--test=" + string.Join(",", testsToRun)
            });

            var text      = File.ReadAllText("HarryPotterText.txt");
            var sentences = SentencesParserTask.ParseSentences(text);
            var frequency = FrequencyAnalysisTask.GetMostFrequentNextWords(sentences);

            while (true)
            {
                Console.Write("Введите первое слово (например, harry): ");
                var beginning = Console.ReadLine();
                if (string.IsNullOrEmpty(beginning))
                {
                    return;
                }
                var phrase = TextGeneratorTask.ContinuePhrase(frequency, beginning.ToLower(), 13);
                Console.WriteLine(phrase);
            }
        }
示例#2
0
        public void IgnoreSentencesWithSingleWord([Values("x. ax. y. z")] string text)
        {
            var parsedText = ParseText(text);
            var expected   = new Dictionary <string, string>();

            var actual = FrequencyAnalysisTask.GetMostFrequentNextWords(parsedText);

            AssertResult(expected, actual, text);
        }
示例#3
0
        public void ReturnCorrectResult_OnTextWithTwoSentencesWithOneWord()
        {
            var text       = "x.y";
            var parsedText = ParseText(text);
            var expected   = new Dictionary <string, string>();

            var actual = FrequencyAnalysisTask.GetMostFrequentNextWords(parsedText);

            AssertResult(expected, actual, text);
        }
示例#4
0
        public void ReturnEmptyDictionary_OnEmptyText()
        {
            var text       = "";
            var parsedText = ParseText(text);
            var expected   = new Dictionary <string, string>();

            var actual = FrequencyAnalysisTask.GetMostFrequentNextWords(parsedText);

            AssertResult(expected, actual, text);
        }
示例#5
0
        public static void Main(string[] args)
        {
            // Запуск автоматических тестов. Ниже список тестовых наборов, который нужно запустить.
            // Закомментируйте тесты на те задачи, к которым ещё не приступали, чтобы они не мешались в консоли.
            // Все непрошедшие тесты
            File.WriteAllText("C:\test\new.txt", "123456");
            var testsToRun = new string[]
            {
                "TextAnalysis.SentencesParser_Tests",
                "TextAnalysis.FrequencyAnalysis_Tests",
                "TextAnalysis.TextGenerator_Tests",
            };

            new AutoRun().Execute(new[]
            {
                "--stoponerror", // Останавливать после первого же непрошедшего теста. Закомментируйте, чтобы увидеть все падающие тесты
                "--noresult",
                "--test=" + string.Join(",", testsToRun)
            });

            var text      = File.ReadAllText("HarryPotterText.txt");
            var sentences = SentencesParserTask.ParseSentences(text);
            var frequency = FrequencyAnalysisTask.GetMostFrequentNextWords(sentences);

            //Расскомментируйте этот блок, если хотите выполнить последнюю задачу до первых двух.

            /*
             * frequency = new Dictionary<string, string>
             * {
             *  {"harry", "potter"},
             *  {"potter", "boy" },
             *  {"boy", "who" },
             *  {"who", "likes" },
             *  {"boy who", "survived" },
             *  {"survived", "attack" },
             *  {"he", "likes" },
             *  {"likes", "harry" },
             *  {"ron", "likes" },
             *  {"wizard", "harry" },
             * };
             */
            while (true)
            {
                Console.Write("Введите первое слово (например, harry): ");
                var beginning = Console.ReadLine();
                if (string.IsNullOrEmpty(beginning))
                {
                    return;
                }
                var phrase = TextGeneratorTask.ContinuePhrase(frequency, beginning.ToLower(), 10);
                Console.WriteLine(phrase);
            }
        }
示例#6
0
        public void ReturnResult_WithMostFrequentBigrams([Values("x y. x z. x y.", "x z. x y. x y", "x y. x y.", "x y")]
                                                         string text)
        {
            var parsedText = ParseText(text);
            var expected   = new Dictionary <string, string>
            {
                { "x", "y" }
            };

            var actual = FrequencyAnalysisTask.GetMostFrequentNextWords(parsedText);

            AssertResult(expected, actual, text);
        }
示例#7
0
        public void ReturnPairForEveryBigram([Values("x y. y z.", "y z. x y.")] string text)
        {
            var parsedText = ParseText(text);
            var expected   = new Dictionary <string, string>
            {
                { "x", "y" },
                { "y", "z" }
            };

            var actual = FrequencyAnalysisTask.GetMostFrequentNextWords(parsedText);

            AssertResult(expected, actual, text);
        }
示例#8
0
        public void ReturnCorrectResult_OnTextWithOneSentenceWithMultipleWords()
        {
            var text       = "x y z";
            var parsedText = ParseText(text);
            var expected   = new Dictionary <string, string>
            {
                { "x", "y" },
                { "y", "z" },
                { "x y", "z" }
            };

            var actual = FrequencyAnalysisTask.GetMostFrequentNextWords(parsedText);

            AssertResult(expected, actual, text);
        }
        public void CustomTest()
        {
            var text       = "a b c d. b c d. e b c a d.";
            var parsedText = ParseText(text);
            var expected   = new Dictionary <string, string>
            {
                { "a", "b" },
                { "b", "c" },
                { "c", "d" },
                { "e", "b" },
                { "a b", "c" },
                { "b c", "d" },
                { "e b", "c" },
                { "c a", "d" },
            };
            var actual = FrequencyAnalysisTask.GetMostFrequentNextWords(parsedText);

            AssertResult(expected, actual, text);
        }
        public static void Main()
        {
            var text = File.ReadAllText("Text.txt");

            Console.WriteLine("SentencesParserTask:");
            var sentences = SentencesParserTask.ParseSentences(text);

            for (int i = 0; i < Math.Min(10, sentences.Count); i++)
            {
                Console.WriteLine(string.Join("|", sentences[i]) + ".");
            }

            Console.WriteLine();
            Console.WriteLine("FrequencyAnalysisTask:");
            var frequency = FrequencyAnalysisTask.GetMostFrequentNextWords(sentences);

            foreach (var keyValuePair in frequency.Take(10))
            {
                Console.WriteLine($"{keyValuePair.Key}|{keyValuePair.Value}");
            }

            Console.WriteLine();
            Console.WriteLine("BigramGeneratorTask:");
            foreach (var start in new[] { "harry", "he", "boy", "ron", "wizard" })
            {
                var phrase = BigramGeneratorTask.ContinuePhraseWithBigramms(frequency, start, 5);
                Console.WriteLine(phrase);
            }

            Console.Read();

            /*
             *          Эту часть задания можете выполнить по желанию.
             *
             *          Console.WriteLine();
             *          Console.WriteLine("TrigramGeneratorTask:");
             *          foreach (var start in new[] { "harry potter", "ron weasley", "hermione granger" })
             *          {
             *                  var phrase = TrigramGeneratorTask.ContinuePhraseWithTrigramms(frequency, start, 5);
             *                  Console.WriteLine(phrase);
             *          }
             */
        }