Система семантического разбора для естественно-языковых текстов
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
уги для вершин
{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" +
&