Система семантического разбора для естественно-языковых текстов

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



уги для вершин

{int TopX;Label Attitude; // Отношениеint TopY;Point pointX;Point pointY;Bridge(int tx, Label At, int ty, Point pX, Point pY)

{= tx;= At;= ty;= pX;= pY;

}

}partial class Form1 : Form

{Text; // Исходный текстmyLing = new Ling(); // Класс анализа();Form1()

{();

}

// Загрузка текстаvoid открытьToolStripButton_Click(object sender, EventArgs e)

{dlg = new OpenFileDialog();.Filter = "Формат файла (txt)|*.txt";(dlg.ShowDialog() == DialogResult.OK)

{enc = Encoding.Default;FileName = dlg.FileName;sr = new StreamReader(FileName, Encoding.Default);= sr.ReadToEnd();.Close();.richTextBox1.Text = Text;();

}

}

// Графематический анализvoid toolStripButton1_Click(object sender, EventArgs e)

{= this.richTextBox1.Text;.Clear();(this.Text.Length != 0)

{= myLing.GraphematicAnalysis(Text);strb1 = new StringBuilder();strb2 = new StringBuilder();(int i = 0; i != TextLemm.Count; i++)

{.Append(" " + i + " - " + TextLemm.Peek().Text + "\r");.Append(" " + TextLemm.Peek().Discript + "\r");.Enqueue(TextLemm.Dequeue());

}.label3.Text = strb1.ToString();.label4.Text = strb2.ToString();

}

{.Show("Отсутствует анализируемый текст!");

}

}

// Морфологический анализvoid toolStripButton2_Click_1(object sender, EventArgs e)

{(this.TextLemm.Count != 0)

{= myLing.MorphologicAnalysis(TextLemm);strb1 = new StringBuilder();strb2 = new StringBuilder();(int i = 0; i != TextLemm.Count; i++)

{.Append(" " + i + " - " + TextLemm.Peek().Text + "\r");.Append(" " + TextLemm.Peek().Morph + "\r");.Enqueue(TextLemm.Dequeue());

}.label6.Text = strb1.ToString();.label9.Text = strb2.ToString();

}

{.Show("Не выполнен графематический анализ!");

}

}

// Статистический анализvoid toolStripButton6_Click(object sender, EventArgs e)

{.label16.Text = "\n В данном разделе анализа приводится

статистические данные о тексте :\n" +

"\n Количество символов в тексте: " + Text.Length +

"\n Количество лексем в тексте: " + TextLemm.Count +

"\n Количество существительных в тексте (без повторяющихся): " + .NounsSeparation(TextLemm).Count +

"\n Количество прилагательных в тексте (без повторяющихся): " + .AdjectivesSeparation(TextLemm).Count +

"\n Количество глаголов в тексте (без повторяющихся): " + .VerbsSeparation(TextLemm).Count +

" ";

// "/n/tКоличество существительных в тексте (без повторяющихся): " +

TextLemm.Count;

}

// Синтаксическо-Семантический анализvoid toolStripButton4_Click(object sender, EventArgs e)

{(buttons.Count > 0) //очистка перед построением графа(сети)

{(int i = 0; i != buttons.Count; i++)

{.ElementAt(i).Dispose();

}.Clear();

}(Bridges.Count > 0)

{(int i = 0; i != Bridges.Count; i++)

{.ElementAt(i).Attitude.Dispose();

}.Clear();

}.Panel1.Controls.Clear();(TextLemm.ElementAt(0).MorphCid != null)

{strb = new StringBuilder();mehDown = new (splitContainer5_Panel1_MouseDown);= myLing.SyntaxSemanticAnalysis(TextLemm);(int i = 0; i != Graph.Count; i++) // Создания кнопок(вершин)

{.Add(new Button() { Text = Graph.ElementAt(i).Top ,= Graph.ElementAt(i).id,= new Point(20, 30 * (i + 1)),= Color.Lavender,= false,= true});.Panel1.Controls.Add(buttons.ElementAt(i));

}(int i = 0; i != buttons.Count; i++) // присвоили события нажатия

мышки для каждой кнопки(вершине)

{.ElementAt(i).MouseDown += mehDown;

}(int i = 0; i != Graph.Count; i++) // Создания связий

{(Graph[i].Relations != null)

{(int j = 0; j != Graph.ElementAt(i).Relations.Count; j++)

{.Add(new Bridge(i, new Label()

{= true,= new Point(

(int)(buttons.ElementAt(i).Location.X + .ElementAt(Graph.ElementAt(i).Relationships.ElementAt(j)).Locatio.X)/2,

(int)(buttons.ElementAt(i).Location.Y + .ElementAt(Graph.ElementAt(i).Relationships.ElementAt(j)).Locatio.Y)/2),= Color.White,

//BorderStyle = BorderStyle.FixedSingle;

//label.TabIndex = 1;= Graph.ElementAt(i).Relations.ElementAt(j)

}, j,Point(buttons.ElementAt(i).Location.X, .ElementAt(i).Location.Y),(buttons.ElementAt(Graph.ElementAt(i).Relationships.ElementAt(j)).L.X,.ElementAt(Graph.ElementAt(i).Relationships.ElementAt(j)).Locatio.Y)));.Panel1.Controls.Add(Bridges[j].Attitude);

}

}

}.richTextBox1.Text = strb.ToString();

}

{.Show("Не выполнен морфологический анализ анализ!");

}.splitContainer5.Panel1.Invalidate();

}

// Реакция на мишь для графа (выбор)

private void splitContainer5_Panel1_MouseDown(object sender, MouseEventArgs e)

{(MouseButtons.Left == e.Button)

{(int i = 0; i != buttons.Count; i++)

{(buttons.ElementAt(i).Focused == true)

{= i;

}

}

}

{= -1;.splitContainer5.Panel1.Focus();

}();.splitContainer5.Panel1.Invalidate();

}

// Реакция на мишь для графа (перемешение курсора)

private void splitContainer5_Panel1_MouseMove(object sender, e)

{(MouseButtons.Left == e.Button)

{(activeButton != -1)

{.ElementAt(activeButton).Location =Point(e.Location.X - (buttons.ElementAt(activeButton).Size.Width / 2)

,e.Location.Y - (buttons.ElementAt(activeButton).Size.Height / 2));(int i = 0; i != Graph.Count; i++)

{(Graph.ElementAt(i).Relations != null)

{(int j = 0; j != Graph.ElementAt(i).Relations.Count; j++)

{[0].Attitude.Location = new Point(

(int)(buttons.ElementAt(i).Location.X + .ElementAt(Graph.ElementAt(i).Relationships.ElementAt(j)).Locatio.X) / 2,

(int)(buttons.ElementAt(i).Location.Y + .ElementAt(Graph.ElementAt(i).Relationships.ElementAt(j)).Locatio.Y) / 2);

}

}

}

}= -1;

}

}

// Реакция на мишь для графа (установка)

private void splitContainer5_Panel1_MouseUp(object sender, e)

{(MouseButtons.Left == e.Button)

{(activeButton != -1)

{.ElementAt(activeButton).Location =Point(e.Location.X - (buttons.ElementAt(activeButton).Size.Width / 2)

, e.Location.Y - (buttons.ElementAt(activeButton).Size.Height / 2));(int i=0; i!=Graph.Count; i++)

{(Graph.ElementAt(i).Relations != null)

{(int j = 0; j != Graph.ElementAt(i).Relations.Count; j++)

{[0].Attitude.Location = new Point(

(int)(buttons.ElementAt(i).Location.X + .ElementAt(Graph.ElementAt(i).Relationships.ElementAt(j)).Locatio.X) / 2,

(int)(buttons.ElementAt(i).Location.Y + .ElementAt(Graph.ElementAt(i).Relationships.ElementAt(j)).Locatio.Y) / 2);

}

}

}

}

{= -1;

}

}.splitContainer5.Panel1.Invalidate();

}

// Рисование линий отношенийvoid splitContainer5_Panel1_Paint(object sender, PaintEventArgs e)

{B = new Bridge();gx = e.Graphics;(int i = 0; i != Bridges.Count; i++)

{

//B.Attitude = Bridges[i].Attitude;.pointX = new Point(buttons.ElementAt(Bridges[i].TopX).Location.X, .ElementAt(Bridges[i].TopX).Location.Y);.pointY = new Point(buttons.ElementAt(Bridges[i].TopY).Location.X, .ElementAt(Bridges[i].TopY).Location.Y);.DrawLine(new Pen(Brushes.Blue, 4),.pointX, B.pointY);

}

}

// Помощь1void справкаToolStripButton1_Click(object sender, EventArgs e)

{str = "\tЗакладка данной системы преднозначена для загрузки" +

"и редоктирования текста, в дальнейшем который будет обработан!";

MessageBox.Show(str);

}

// Помощь2void справкаToolStripButton_Click(object sender, EventArgs e)

{str = "\tДанная закладка(этап анализа) системы преднозначена для

графематического" +

" анализа, который разделяет текст на разделители и лексемы, при этом

определяет" +

" для них свой дескриптор.\n \tПеречень дескрипторов:\n" +

" RLE - русская лексема;\n LLE - английская лексема;\n DC - цифровой

комплекс;\n" +

&