예제 #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 ContinuePhrase_DoNothing_OnEmptyDictionary(string phraseStart, int phraseWordsCount)
        {
            var actual = TextGeneratorTask.ContinuePhrase(
                new Dictionary <string, string>(),
                phraseStart,
                phraseWordsCount);

            Assert.AreEqual(phraseStart, actual);
        }
예제 #3
0
        public void ContinuePhrase_DoNothing_WhenWordsCountIsZero()
        {
            var mostFrequentNextWords = new Dictionary <string, string>
            {
                { "x", "y" }
            };

            var actual =
                TextGeneratorTask.ContinuePhrase(mostFrequentNextWords, "x", 0);

            Assert.AreEqual("x", actual);
        }
예제 #4
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);
            }
        }
예제 #5
0
        public void ContinuePhrase(string phraseBeginning, int wordsCount, string expectedResult)
        {
            var mostFrequentNextWords = new Dictionary <string, string>
            {
                { "x", "y" },
                { "x y", "z" },
                { "y", "q" }
            };

            var actual =
                TextGeneratorTask.ContinuePhrase(mostFrequentNextWords, phraseBeginning, wordsCount);

            Assert.AreEqual(expectedResult, actual);
        }
예제 #6
0
        public void ContinuePhrase_StopWhenNoBigrammsAndTrigramms()
        {
            var mostFrequentNextWords = new Dictionary <string, string>
            {
                { "x", "y" },
                { "x y", "z" },
                { "y", "q" }
            };

            var actual =
                TextGeneratorTask.ContinuePhrase(mostFrequentNextWords, "x", 4);

            Assert.AreEqual("x y z", actual);
        }
예제 #7
0
        public void ContinuePhrase_WhenNoTrigrams(string phraseBeginning, string expectedNextWord)
        {
            var mostFrequentNextWords = new Dictionary <string, string>
            {
                { "x", "y" },
                { "y", "z" },
                { "z", "x" },
                { "a", "b" }
            };

            var actual =
                TextGeneratorTask.ContinuePhrase(mostFrequentNextWords, phraseBeginning, 2);

            Assert.AreEqual(phraseBeginning + " " + expectedNextWord, actual);
        }
예제 #8
0
        public void ContinuePhrase_WithMultiletterWords(string phraseBeginning, string expectedNextWord)
        {
            var mostFrequentNextWords = new Dictionary <string, string>
            {
                { "hello", "everybody" },
                { "everybody be", "cool" },
                { "everybody", "be" }
            };

            var actual =
                TextGeneratorTask.ContinuePhrase(mostFrequentNextWords, phraseBeginning, 1);
            var expected = string.IsNullOrEmpty(expectedNextWord) ? phraseBeginning : phraseBeginning + " " + expectedNextWord;

            Assert.AreEqual(expected, actual);
        }