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