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

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

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



{= (ForListElem) group_words.getElementAt(i);(!el.word.equalsIgnoreCase("")){

(count_word >= limit ) termins.addElement(""+el.word+" - "+el.count);();

.add(el.word);.add(count_word);.add(el.count_forms);.add(el.in_dict);

.add(curRow);

}

}(left != null) left.CrawlTable(x,termins,limit);

}

}

analysis;

class Start_options {

String PForms;String PStop;int Limit;

Start_options()

{= "c:\\text\\stems.txt";= "c:\\text\\Stop_Slovo.txt";= 33;

}String getPForms()

{PForms;

}

String getPStop()

{PStop;

}

int getLimit()

{Limit;

}

void setParam(String x )

{k[];= x.split("=");(k[0].equalsIgnoreCase("PathForms"))= k[1].trim();if (k[0].equalsIgnoreCase("PathStop"))= k[1].trim();if (k[0].equalsIgnoreCase("DefaultLimit"))

Limit = Integer.parseInt(k[1].trim());

}

}

analysis;dictionaries.StopMain;dictionaries.MorphMain;interfaces.MainWindow;java.io.File;java.util.Vector;javax.swing.DefaultListModel;javax.swing.ListSelectionModel;javax.swing.table.DefaultTableModel;

class Union extends Thread{

MainWindow frame;int limit;

Union (MainWindow x)

{= x;

}

void setLimit(int p)

{= p;

}

void run()

{();

}

void Execute()

{Hash[];= new DefaultListModel[500];x;MM;{= frame.getMorphDict();p;= new SortTree(0,new ForListElem());= new Parser();cls;= new StopMain();f;time;= System.currentTimeMillis();codeee,count;= new File(MM.so.getPStop());.LoadStop(f);

//System.out.println(cls.getHashTable());.jProgressBar1.setStringPainted(true);.jProgressBar1.setString("Выделение лексем...");=x.Parse(frame.getTextArea().getText(),Hash,cls.getHashTable());

e,q;= new DefaultListModel();fo;

.jProgressBar1.setString("Объеденение словоформ...");.jProgressBar1.setMinimum(0);.jProgressBar1.setMaximum(Hash.length);(int i =0;i<Hash.length;i++)

{.jProgressBar1.setValue(i);(Hash[i] != null)

{

=(DefaultListModel) Hash[i];

// e - список по в хеш-таблицеsize_of_list;_of_list = e.getSize();(int o = 0 ;o<size_of_list;o++)

{

.clear();= (ForListElem) e.getElementAt(o);(fo.flagdeleted) continue;flag;

// q - список родственных слов для текущего элемента fo

flag = MM.getRelativewords(q, fo.word.toLowerCase().trim(),true);

.in_dict=flag;size_of_list_MR;_of_list_MR = q.size();(int o1=0;o1<size_of_list_MR;o1++)

{wordwatch;// текущее слово из списка словоформ

wordwatch = q.getElementAt(o1).toString().toLowerCase().trim();= x.hash(wordwatch);(!wordwatch.equalsIgnoreCase(fo.word))

if (Hash[codeee] != null) //если словоформа имеется в тексте

{ // Hash[codeee] - список по хеш-коду словоформы

for (int o2 = 0;o2<Hash[codeee].getSize();o2++)

{pop; //текущий элемент списка Hash[codeee]= (ForListElem)Hash[codeee].getElementAt(o2);(!pop.flagdeleted)(pop.word.equalsIgnoreCase(wordwatch))

{.count+=((ForListElem)Hash[codeee].getElementAt(o2)).count;.count_forms++;

((ForListElem)Hash[codeee].getElementAt(o2)).flagdeleted=true; //Hash[codeee].removeElementAt(o2);

}

}

}

}

//надо заменить на главное слово

String MainWord;

if (!q.isEmpty()){= q.firstElement().toString().trim();HashCode;= x.hash(MainWord);(Hash[HashCode] == null)

{nx;= new DefaultListModel();ne;= new ForListElem();.count = fo.count;.count_forms = fo.count_forms;.flagdeleted = fo.flagdeleted;.in_dict = fo.in_dict;.word = MainWord;.addElement(ne);

// e.removeElementAt(o);

((ForListElem)e.getElementAt(o)).flagdeleted=true;//!!!!!!!![HashCode] = nx;

}

{ne;= new ForListElem();.count = fo.count;.count_forms = fo.count_forms;.flagdeleted = fo.flagdeleted;.word = MainWord;.in_dict = fo.in_dict;[HashCode].addElement(ne);

// e.removeElementAt(o);

((ForListElem)e.getElementAt(o)).flagdeleted=true;//!!!!!!!!

}

}

}

}

.jProgressBar1.setString("Сортировка...");.jProgressBar1.setMinimum(0);.jProgressBar1.setMaximum(Hash.length);(int i =0;i<Hash.length;i++)(Hash[i] != null)

{t;

(int l= 0;l<Hash[i].getSize();l++)

{= (ForListElem) Hash[i].getElementAt(l);(!t.flagdeleted).add(t.count,t);

}

}ter;= new DefaultListModel();();.CrawlTable(tableData,ter,limit);

(int i = 0; i ();.add("Слово");.add("Частота");

columnName.add("Количество словоформ");.add("Наличие в словаре");

DefaultTableModel model = new DefaultTableModel(tableData, columnName){

/**

* @author Subbotin B.P.

* @see

*/static final long serialVersionUID = 1L;

@SuppressWarnings("unchecked")Class getColumnClass(int col)

{row = (Vector)dataVector.get(0);row.get(col).getClass();

}

};.getTable().setModel(model);.getTable().getSelectionModel().setSelectionMode(ListSelectionModel.SINGLE_SELECTION);.getTable().getTableHeader().setReorderingAllowed(false);.setEnabled(true);.jProgressBar1.setString("Выполнено...");.jProgressBar1.setValue(0);t2;= System.currentTimeMillis()-time;/= 1000;.swing.JOptionPane.showMessageDialog(frame, "Текст, состоящий из "+count+" слов, обработан за "+formatDouble(t2,2)+" сек.");

MM.setInfo("Текст, состоящий из "+count+" слов, обработан за "+formatDouble(t2,2)+" сек.");

}catch (Exception E) {.setEnabled(true);.out.println("----"+E.getMessage());}

}

formatDouble(double d, int dz){dd = Math.pow(10,dz);Math.round(d*dd)/dd;

}

}dictionaries;

class Hash {[] dict = new String[500];

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

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

}

int findPos(String word){counter = 0;i = hash(word);(;counter<dict.length; counter ++) {(dict[i] == null || dict[i].equals(word)) {return i;}(++i == dict.length) {i = 0;}

}-1;

}

void add(String word) {i = findPos(word);(i == -1) return;[i] = word;

}

boolean hasWord(String word) {i = findPos(word);i != -1 && dict[i] != null;}

}

dictionaries;

analysis.Start_options;interfaces.MainWindow;java.io.BufferedReader;java.io.File;java.io.FileReader;javax.swing.DefaultListModel;interfaces.startwindow;java.awt.Color;java.awt.Font;java.awt.Graphics;class MorphMain extends Thread{

btree MD;startwindow tf;Start_options so;int tops_count;int words_count;leaf listosnov;String postosnov;flagosnov;flagpostosnov;info;f;

void setInfo(String x)

{= x;

}

String getInfo()

{info;

}

MorphMain(startwindow j1, Start_options s) {= new btree();= j1;_count = 0;_count = 0;= false;= false;= "";= s;

}

void setCurrentBase(String h)

{(!flagpostosnov)

{= h;= true;

}

}

void setListOsnov(leaf y)

{(!flagosnov)

{= y;= true;

}

}

void Reset()

{= false;= false;= "";= null;

}

String innerjoin(String a,String b)

{k;l;= "";= a.length();(b.length() < k ) k = b.length();(int i = 0;i<k;i++)

{(a.charAt(i)==b.charAt(i)) l+=a.charAt(i);break;

}l;

}

String selectOsn(String words[])

{h;j;= words[0];(int i = 1;i<words.length;i++)

{= innerjoin(h,words[i]);

}h;

}

boolean getRelativewords(DefaultListModel d,String word,boolean show)

{{base = null;(MD.simpleSearch(word, false, this) == null)

{(show) f.jTextArea3.append(word+"\n");();false;

}.backSearch(word, this);(this.listosnov != null){l;

= word.substring(0,word.length()-this.postosnov.length()+1);

(listosnov.getNextLevel() != null).listosnov.getNextLevel().CrawlforMM(d,base,listosnov.getUin());

(listosnov.getFlagIn_MainWord()).insertElementAt(base, 0);

}{(show) f.jTextArea3.append(word+"\n"); f.jTextArea3.append(word+"\n");();false;

}();

}

(Exception ex) {false;

}true;

}

void LoadInOM()

{h1[] = null;h = null;{in = new BufferedReader(new FileReader(so.getPForms()));

j = "ёйцукенгшщзхъэждлорпавыфячсмитьбю";+= j.toUpperCase();

int k,ik;d;

d = tf.getGraphics();.setFont(new Font("Courier New", Font.BOLD, 12));.setColor(Color.BLACK);.drawString("Инициал