예제 #1
0
        private void findPeak()
        {
            int    percent = Convert.ToInt32(partTextBox.Text);
            double part    = (double)percent / 100;
            Dictionary <string, int> peaks = new Dictionary <string, int>();
            DataTable peaksDestr           = new DataTable();

            peaksDestr.Columns.Add(new DataColumn("НормФорма"));
            peaksDestr.Columns["НормФорма"].DataType = typeof(string);
            peaksDestr.Columns.Add(new DataColumn("ПредложенияПика"));
            peaksDestr.Columns["ПредложенияПика"].DataType = typeof(string);
            for (int i = 0; i < destributionTable.RowCount * part; i++)
            {
                Parameters param = new Parameters();
                param.word = destributionTable.Rows[i].Cells[0].Value.ToString();
                GetSentForSelectedWord sentFreq = new GetSentForSelectedWord(MainForm.BDLocation, MainForm.tableName, param);
                int     partition = MainForm.sentCount / 10;
                int[]   frqMas    = sentFreq.GetFreqDestribution(sentFreq, MainForm.sentCount, partition);
                int     maxIndex  = peaks[param.word] = Array.IndexOf(frqMas, frqMas.Max());
                DataRow row       = peaksDestr.NewRow();
                row["НормФорма"]       = param.word;
                row["ПредложенияПика"] = (maxIndex * 10).ToString() + "-" + ((maxIndex + 1) * 10).ToString();
                peaksDestr.Rows.Add(row);
            }
            DataSet ds = new DataSet();

            ds.Tables.Add(peaksDestr);
            TerminSurroundingsForm form = new TerminSurroundingsForm(ds);

            form.Show();
        }
예제 #2
0
        private void buttonShowTerms_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedCells.Count != 1)
            {
                goto end2;
            }
            string curWord   = dataGridView1.CurrentCell.Value.ToString();
            int    rowNumber = dataGridView1.CurrentRow.Index;

            BDLocation = textBoxBDLocation.Text;
            tableName  = textBoxTableName.Text;
            string radius = textBoxRadius.Text;

            if (radius == "")
            {
                goto end1;
            }
            Parameters param = new Parameters();

            param.word = curWord;
            param.termSurPartOfSpeech = getTermPartOfSpeech();
            param.radius = radius;
            try
            {
                LoadTerminSurroundings ts    = new LoadTerminSurroundings(BDLocation, tableName, param);
                TerminSurroundingsForm form2 = new TerminSurroundingsForm(ts.dataSet);
                form2.ClientSize = new Size(form2.dataGridView1.Size.Width, form2.ClientSize.Height);
                form2.Show();
                if (dataGridView1.Columns.Count != 0)
                {
                    form2.dataGridView1.Columns[0].Width = 550;
                    form2.dataGridView1.Columns[1].Width = 200;
                }
            }
            catch (OleDbConnectionException ex)
            {
                MessageBox.Show(ex.message);
            }
            catch (OleDbSendCommandException ex)
            {
                MessageBox.Show(ex.message);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            goto goodEnd;
            end1    : MessageBox.Show("Введите максималное количество слов \nдо выбранного слова");
            end2    : MessageBox.Show("Выберите одно слово");
            goodEnd :;
        }
예제 #3
0
        private void showSentButton_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedCells.Count != 1)
            {
                goto end2;
            }
            string     curWord = dataGridView1.CurrentCell.Value.ToString();
            Parameters param   = new Parameters();

            param.word = curWord;
            int[] frqMas = new int[11];
            try
            {
                GetSentForSelectedWord sentDistr = new GetSentForSelectedWord(BDLocation, tableName, param);
                frqMas = sentDistr.GetFreqDestribution(sentDistr, sentCount, 11);
                string output = "";
                for (int i = 0; i < 11; i++)
                {
                    output += frqMas[i] + " ";
                }
                TerminSurroundingsForm form2 = new TerminSurroundingsForm(sentDistr.dataSet);
                DataRowCollection      rows  = sentDistr.dataSet.Tables[0].Rows;
                form2.Text       = rows.Count + " предложений из " + sentCount;
                form2.ClientSize = new Size(form2.dataGridView1.Size.Width, form2.ClientSize.Height);
                form2.Show();
                if (dataGridView1.Columns.Count != 0)
                {
                    form2.dataGridView1.Columns[0].Width = 550;
                    form2.dataGridView1.Columns[1].Width = 200;
                }
                MessageBox.Show("Распределение частоты:\n" + output);
            }
            catch (OleDbConnectionException ex)
            {
                MessageBox.Show(ex.message);
            }
            catch (OleDbSendCommandException ex)
            {
                MessageBox.Show(ex.message);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
            goto goodEnd;
            end2    : MessageBox.Show("Выберите одно слово");
            goodEnd :;
        }
예제 #4
0
        private void AllFreqButton_Click(object sender, EventArgs e)
        {
            DataTable allFreq = new DataTable();

            allFreq.Columns.Add(new DataColumn("НормФорма"));
            allFreq.Columns["НормФорма"].DataType = typeof(string);
            int sentStep = sentCount / 10;

            for (int i = 0; i < 10; i++)
            {
                string sentInterval;
                if (i == 10)
                {
                    sentInterval = Convert.ToString(i * sentStep) + "-" + Convert.ToString(sentCount);
                }
                else
                {
                    sentInterval = Convert.ToString(i * sentStep) + "-" + Convert.ToString((i + 1) * sentStep - 1);
                }
                allFreq.Columns.Add(new DataColumn(sentInterval));
                allFreq.Columns[sentInterval].DataType = typeof(string);
            }
            List <int[]> wordsDistrList = new List <int[]>();
            //try
            //{
            DataRowCollection wordRows = ds.Tables[0].Rows;

            for (int j = 0; j < wordRows.Count; j++)
            {
                Parameters param = new Parameters();
                param.word = wordRows[j][0].ToString();
                GetSentForSelectedWord sentFreq = new GetSentForSelectedWord(BDLocation, tableName, param);
                int[] frqMas = sentFreq.GetFreqDestribution(sentFreq, sentCount, 10);
                wordsDistrList.Add(frqMas);
                DataRow row = allFreq.NewRow();
                row["НормФорма"] = param.word;
                for (int i = 0; i < 10; i++)
                {
                    string sentInterval;
                    if (i == 10)
                    {
                        sentInterval = Convert.ToString(i * sentStep) + "-" + Convert.ToString(sentCount);
                    }
                    else
                    {
                        sentInterval = Convert.ToString(i * sentStep) + "-" + Convert.ToString((i + 1) * sentStep - 1);
                    }
                    row[sentInterval] = frqMas[i];
                }
                allFreq.Rows.Add(row);
            }
            DataSet dst = new DataSet();

            dst.Tables.Add(allFreq);
            TerminSurroundingsForm form2 = new TerminSurroundingsForm(dst);

            form2.Text = "Распределения частот";
            form2.Show();
            //}
            //catch (OleDbConnectionException ex)
            //{
            //    MessageBox.Show(ex.message);
            //}
            //catch (OleDbSendCommandException ex)
            //{
            //    MessageBox.Show(ex.message);
            //}
            //catch (Exception ex)
            //{
            //    Console.WriteLine(ex.Message);
            //}
        }
예제 #5
0
 private void dataGridView1_KeyPress(object sender, KeyPressEventArgs e)
 {
     if (e.KeyChar == (char)Keys.Escape)
     {
         FilterForm form3 = new FilterForm();
         form3.Show();
     }
     if (e.KeyChar == (char)Keys.Enter)
     {
         if (Text == "Статистики")
         {
             DataTable pairs = new DataTable();
             pairs.Columns.Add(new DataColumn("НормФорма1"));
             pairs.Columns.Add(new DataColumn("минимФрагмент1"));
             pairs.Columns["минимФрагмент1"].DataType = typeof(int);
             pairs.Columns.Add(new DataColumn("минНачНомерПредл1"));
             pairs.Columns["минНачНомерПредл1"].DataType = typeof(double);
             pairs.Columns.Add(new DataColumn("минКонНомерПредл1"));
             pairs.Columns["минКонНомерПредл1"].DataType = typeof(double);
             pairs.Columns.Add(new DataColumn("НормФорма2"));
             pairs.Columns.Add(new DataColumn("минимФрагмент2"));
             pairs.Columns["минимФрагмент2"].DataType = typeof(int);
             pairs.Columns.Add(new DataColumn("минНачНомерПредл2"));
             pairs.Columns["минНачНомерПредл2"].DataType = typeof(double);
             pairs.Columns.Add(new DataColumn("минКонНомерПредл2"));
             pairs.Columns["минКонНомерПредл2"].DataType = typeof(double);
             //pairs.Columns.Add(new DataColumn("максФрагмент"));
             //pairs.Columns["максФрагмент"].DataType = typeof(int);
             //pairs.Columns.Add(new DataColumn("максНачНомерПредл"));
             //pairs.Columns["максНачНомерПредл"].DataType = typeof(double);
             //pairs.Columns.Add(new DataColumn("максКонНомерПредл"));
             //pairs.Columns["максКонНомерПредл"].DataType = typeof(double);
             for (int i = 0; i < dataGridView1.RowCount - 1; i++)
             {
                 double mainWordSentBegin = Convert.ToDouble(dataGridView1.Rows[i].Cells["минНачНомерПредл"].Value);
                 double mainWordSentEnd   = Convert.ToDouble(dataGridView1.Rows[i].Cells["минКонНомерПредл"].Value);
                 int    mainWordd1        = Convert.ToInt32(dataGridView1.Rows[i].Cells["минимФрагмент"].Value);
                 for (int j = i + 1; j < dataGridView1.RowCount - 1; j++)
                 {
                     double compairingWordSentBegin = Convert.ToDouble(dataGridView1.Rows[j].Cells["минНачНомерПредл"].Value);
                     double compairingWordSentEnd   = Convert.ToDouble(dataGridView1.Rows[j].Cells["минКонНомерПредл"].Value);
                     int    mainWordd2      = Convert.ToInt32(dataGridView1.Rows[j].Cells["минимФрагмент"].Value);
                     double a               = mainWordd1 > mainWordd2 ? (double)(mainWordd2 + 1) / (mainWordd1 + 1) : (double)(mainWordd1 + 1) / (mainWordd2 + 1);
                     bool   isOneWordInside = ((mainWordSentEnd >= compairingWordSentEnd && mainWordSentBegin <= compairingWordSentBegin) ||
                                               (mainWordSentEnd <= compairingWordSentEnd && mainWordSentBegin >= compairingWordSentBegin)) && a > 0.5;
                     if (isOneWordInside)
                     {
                         DataRow row = pairs.NewRow();
                         row["НормФорма1"]        = dataGridView1.Rows[i].Cells["НормФорма"].Value;
                         row["минимФрагмент1"]    = dataGridView1.Rows[i].Cells["минимФрагмент"].Value;
                         row["минНачНомерПредл1"] = mainWordSentBegin;
                         row["минКонНомерПредл1"] = mainWordSentEnd;
                         row["НормФорма2"]        = dataGridView1.Rows[j].Cells["НормФорма"].Value;
                         row["минимФрагмент2"]    = dataGridView1.Rows[j].Cells["минимФрагмент"].Value;
                         row["минНачНомерПредл2"] = compairingWordSentBegin;
                         row["минКонНомерПредл2"] = compairingWordSentEnd;
                         pairs.Rows.Add(row);
                     }
                 }
             }
             pairs.DefaultView.Sort = "минимФрагмент1, минимФрагмент2";
             pairs = pairs.DefaultView.ToTable();
             DataSet dst = new DataSet();
             dst.Tables.Add(pairs);
             TerminSurroundingsForm form = new TerminSurroundingsForm(dst);
             form.dataGridView1.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill;
             form.Text = "Вложенные пары";
             form.Show();
         }
     }
 }