Система контент-анализа естественно-языковых текстов

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

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



анных для второго теста выбран текстовый фрагмент, в котором содержатся морфологически родственные слова: На компьютерном столе было предусмотрено место для принтера. Под столом размещался системный блок. Очевидно, слова столе и столом являются родственными и должны быть приведены к нормальной форме стол с показателем частоты равным 2. На рисунке 31 приведен внешний вид форм после завершения анализа.

Рисунок 31 - Форма после завершения анализа. Тест №2

В таблице 14 приведены результаты работы программы(1) и частотного анализа, проведенного вручную(2).

Таблица 14 - Результаты анализа для теста №2

СловоЧастота 1Частота 2стол22предусмотрено11системный11блок11размещался11принтер11компьютерный11место11

Алгоритм работает корректно.

В качестве входных данных для третьего теста выбран текст, приведенный в приложении 3 (см. стр. ). Порог частоты установлен равным 5. На рисунке 32 приведен внешний вид форм после завершения анализа.

Рисунок 32 - Форма после завершения анализа. Тест №3

В таблице 15 приведены результаты работы программы(1) и частотного анализа, проведенного вручную(2).

Таблица 15 - Результаты анализа для теста №3

СловоЧастота 1Частота 2особь1111популяция1111га1010решение99оператор99хромосома77приспособленность77мутация77алгоритм66отбор66рулетка55скрещивание55селекция55ген55

Исходя из результатов тестирования следует, что алгоритм работает корректно.

3. ВЫВОДЫ

Поставленные цели в дипломном проекте в целом были достигнуты. В ходе тестирования подтверждена работоспособность системы. Разработанное приложение можно использовать для создания терминологической базы предметной области.

Список использованной литературы

1.Андреев, А.М. Лингвистический процессор для информационно-поисковой системы [Текст] / А. М. Андреев, Д. В. Березкин, А. В. Брик. - Компьютерная хроника, 2008. - с. 79-100.

2.Кормалев, Д. А. Приложения технологии извлечения информации из текста: теория и практика [Текст] / Д. А. Кормалев. - Вестник РУДН, Серия Прикладная и компьютерная математика. Т. 2, № 1. 2006. - с. 120-127

.Найханова, Л.В. Методы и алгоритмы трансляции естественно-языковых запросов к базе данных в SQL-запросы [Текст] : Монография / Л. В. Найханова, И. С. Евдокимова. - Улан-Удэ: Изд-во ВСГТУ, 2006. - 148 с.

.Шемякин, Ю. И. Начала компьютерной лингвистики [Текст] : Учебное пособие / Ю. И. Шемякин. - М.: Издательство МГОУ, А/О Росвузнаука, 2008. - 81 с.

.Апресян, Ю. Д. Лингвистический процессор для сложных информационных систем [Текст] / Ю. Д. Апресян, И. М. Богуславский, Л. Л. Иомдин. - М.: Наука, 2010, - 256 с.

6.Кубенский, А.А. Создание и обработка структур данных в примерах на Java. Серия "Мастер" [Текст] / А. А. Кубенский. - СПб.: БХВ-Петербург, 2006. - 336 с.

7.Эккель, Б. Философия Java [Текст] / Б. Эккель. - СПб.: Питер, 2007. - 976 с. - ISBN 5-88782-105-1

.Герберт, Ш. Искусство программирования на Java [Текст] / Ш. Герберт, Д. Холмс. - М.: Диалектика, 2006.- 336 с. - ISBN 0-07-222971-3

9.

10.

Приложение 1

ИСХОДНЫЙ КОД

package analysis;

public class ForListElem {ForListElem()

{= "";= 1;_forms = 1;_dict = true;= false;

}String word;int count;int count_forms;boolean in_dict;boolean flagdeleted;

}

class Load_Text extends Thread {

File f2;interfaces.frameLoad x;MainWindow w;Load_Text(File FileName,interfaces.frameLoad f,MainWindow _w)

{=f;= FileName;= _w;

}

void run(){t,y = "";u;= "";= 0;.setVisible(true);{out = new BufferedReader(new FileReader(f2));((y=out.readLine()) != null )

{t += y+"\n";++;.jLabel3.setText(u+"");

}.close();.jTextArea1.setText(t);.jTextArea1.setCaretPosition(1);.setEnabled(true);.dispose();

}(Exception ex) {System.out.println("Error"+ex.getMessage());}

}

}

analysis;

dictionaries.Hash;javax.swing.DefaultListModel;

/**

*

* @author РСТРТСРСШРёРРЕРёСРГСтАЪСРВРСтАЪРСХСРВ

*/class Parser {

int hash(String str) {sum = 0;(int i = 0; i<str.length(); i++)

{sum += code(str.charAt(i));}(100*sum + 454) % 500;}

int code(char c) {"абвгдеёжзийклмнопрстуфхцчшщъыьэюя".indexOf(Character.toLowerCase(c))+1;}

int Parse(String x,DefaultListModel T[], Hash qw)

{flag_currnet_dividers = false;cur_lexem;count;=0;dd;d;f;deviders = "\n?!-{}[] ,./+-:;=-)(*№%$#";_lexem = "";i,adr,collision;= 0;= 0;= x.trim();(x.length() != 0 || x == null)(i < x.length())

{

(flag_currnet_dividers)

{(deviders.indexOf(x.charAt(i)) == -1)

{= hash(cur_lexem);.out.println(cur_lexem+" "+adr);(!qw.hasWord(cur_lexem.toLowerCase()))(T[adr] == null)

{[adr] = new DefaultListModel();= new ForListElem();.word = cur_lexem;[adr].addElement(dd);

}else{

d = T[adr];= false;

for (int p = 0;p<d.getSize();p++)

{= (ForListElem) d.getElementAt(p);

if (dd.word.equals(cur_lexem))

{.count++;= true;;

}

}

(!f)

{= new ForListElem();.word = cur_lexem;.addElement(dd);

}

}_lexem = "";++;_currnet_dividers = false;-;

}

}{

(deviders.indexOf(x.charAt(i)) != -1)_currnet_dividers = true;

_lexem+=x.charAt(i);

}++;

}

// System.out.println(cur_lexem);= hash(cur_lexem);(!qw.hasWord(cur_lexem.toLowerCase()))(T[adr] == null)

{[adr] = new DefaultListModel();= new ForListElem();.word = cur_lexem;[adr].addElement(dd);

}else{

d = T[adr];= false;

for (int p = 0;p<d.getSize();p++)

{= (ForListElem) d.getElementAt(p);

if (dd.word.equals(cur_lexem))

{.count++;= true;;

}

}

(!f)

{= new ForListElem();.word = cur_lexem;.addElement(dd);

}

}count;

}

}

javax.swing.DefaultListModel;javax.swing.JTextArea;java.util.Vector;

class SortTree {

int count_word;DefaultListModel group_words;SortTree left;SortTree right;

SortTree(int x,ForListElem x1){= null;= null;_word = x;_words = new DefaultListModel();_words.addElement(x1);

}

void add(int count,ForListElem word)

{(count == count_word)

{_words.addElement(word);

}(count < count_word)

{(left == null) left = new SortTree(count,word);

{.add(count, word);

}

}

{(right == null) right = new SortTree(count,word);

{.add(count, word);

}

}

}

void CrawlTable(Vector x,DefaultListModel termins,int limit)

{ if (right != null) right.CrawlTable(x,termins,limit);i;el;(i = 0;i<group_words.size();i++)