/// <summary>
        /// Обработчик нажатия кнопки "Проверить текст"
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonCheck_Click(object sender, EventArgs e)
        {
            dataGridViewBasicResult.Rows.Clear();
            dataGridViewExtraResult.Rows.Clear();
            string text = "Введите текст для анализа.";

            if (richTextBoxText.Text == text)
            {
                MessageBox.Show("Ошибка анализа! Введите в пустое поле текст и попробуйте еще раз.", "Сообщение об ошибке");
            }
            else
            {
                Text enterText = new Text(richTextBoxText.Text);
                richTextBoxText.Text = enterText.fullText;
                ExtremistAnalysisText analysis = new ExtremistAnalysisText(enterText);
                textsResult           = analysis.AvailabilityExtremistText(textVocabulary);
                phrasesResult         = analysis.AvailabilityExtremistPhrases(phraseVocabulary);
                extremistPhrasesColor = RandomColors(textsResult.Count);
                if (textsResult.Count > 0 || phrasesResult.indexSpacesOfStartUsingPhrases.Count > 0)
                {
                    buttonCancell.Enabled = true;
                    buttonCheck.Enabled   = false;
                    if (textsResult.Count == 0)
                    {
                        MessageBox.Show("Совпадений с экстремистскими текстами из базы данных не найдено, но были найдены экстремистские фразы.", "Результат анализа");
                        tabControlProcessing.SelectedIndex = 1;
                    }
                    else if (phrasesResult.indexSpacesOfStartUsingPhrases.Count == 0)
                    {
                        MessageBox.Show("Совпадений с экстремистскими фразами из базы данных не найдено, но были найдены совпадения с экстремистскими текстами.", "Результат анализа");
                        tabControlProcessing.SelectedIndex = 0;
                    }
                    for (int indexResult = 0; indexResult < textsResult.Count; indexResult++)
                    {
                        dataGridViewBasicResult.Rows.Add();
                        dataGridViewBasicResult.Rows[indexResult].Cells[0].Value =
                            textVocabulary.texts.IndexOf(textsResult[indexResult].usingExtremistText) + 1;
                        dataGridViewBasicResult.Rows[indexResult].Cells[1].Value = "Начало использованного текста - \"" +
                                                                                   textsResult[indexResult].usingExtremistText.startWords + "...\", конец текста - \"..." +
                                                                                   textsResult[indexResult].usingExtremistText.endWords + "\".";
                        dataGridViewBasicResult.Rows[indexResult].Cells[2].Value           = Convert.ToString(textsResult[indexResult].usindProbability) + " %";
                        dataGridViewBasicResult.Rows[indexResult].Cells[3].Style.BackColor = extremistPhrasesColor[indexResult];
                    }
                    for (int indexExtrType = 0; indexExtrType < phrasesResult.probabilityUsingExtremistPhrases.Length; indexExtrType++)
                    {
                        dataGridViewExtraResult.Rows.Add();
                        dataGridViewExtraResult.Rows[indexExtrType].Cells[0].Value = phraseVocabulary.ExtremistTypes()[indexExtrType];
                        dataGridViewExtraResult.Rows[indexExtrType].Cells[1].Value =
                            Convert.ToString(phrasesResult.probabilityUsingExtremistPhrases[indexExtrType]) + " %";
                    }
                    tabControlProcessing_SelectedIndexChanged(this, EventArgs.Empty);
                    richTextBoxText.ReadOnly = true;
                }
                else
                {
                    MessageBox.Show("Совпадений с экстремистскими текстами и фразами из базы данных не найдено.", "Результат анализа");
                }
            }
        }
        /*
         * Функция расчета количества встречавшихся экстремистских фраз и выражений
         *     по их виду экстремизма.
         * vocabulary - словарь экстремистских фраз и слов.
         * textWords - исходный текст в виде массива слов.
         * occurenceExtremistPhrases - массив частот встречающихся экстремистских фраз и слов
         *     в тексте.
         * indexSpacesOfStartPhrases - индексы пробелов перед экстремистскими фразами в тексте.
         * indexSpacesOfEndPhrases - индексы пробелов после экстремистских фраз в тексте.
         */
        private int[] OccurenceCountExtremistPhrases(ExtremistPhraseVocabulary vocabulary, string[] textWords,
                                                     out List <int> indexSpacesOfStartPhrases, out List <int> indexSpacesOfEndPhrases)
        {
            List <string> extremistTypes = vocabulary.ExtremistTypes();

            int[] occurenceExtremistPhrases = new int[extremistTypes.Count];
            indexSpacesOfStartPhrases = new List <int>();
            indexSpacesOfEndPhrases   = new List <int>();
            foreach (ExtremistPhrase extremistPhrase in vocabulary.phrases)
            {
                string[] phraseWords = extremistPhrase.PhraseWords();
                for (int wordIndex = 0; wordIndex < textWords.Length; wordIndex++)
                {
                    if (WordCoincidence(textWords[wordIndex], phraseWords[0]))
                    {
                        int availability = 1;
                        if (textWords.Length - wordIndex >= phraseWords.Length)
                        {
                            for (int phraseWordIndex = 1; phraseWordIndex < phraseWords.Length; phraseWordIndex++)
                            {
                                if (WordCoincidence(textWords[wordIndex + phraseWordIndex], phraseWords[phraseWordIndex]))
                                {
                                    availability++;
                                }
                                else
                                {
                                    break;
                                }
                            }
                            if (availability == phraseWords.Length)
                            {
                                occurenceExtremistPhrases[extremistTypes.IndexOf(extremistPhrase.typePhrase)]++;
                                indexSpacesOfStartPhrases.Add(enterText.SpaceElementLocationTextIndex(wordIndex));
                                indexSpacesOfEndPhrases.Add(enterText.SpaceElementLocationTextIndex(wordIndex + phraseWords.Length));
                            }
                        }
                        wordIndex += availability - 1;
                    }
                }
            }
            return(occurenceExtremistPhrases);
        }