基于统计方法的二字词发掘程序(改进)
来源:互联网 发布:linux系统安装snmp服务 编辑:程序博客网 时间:2024/04/29 23:32
增加了一定的自学习能力.
package test.word;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.HashMap;
import java.util.Iterator;
public class Word {
private HashMap words = new HashMap();
private HashMap result = new HashMap();
public void run(String content) {
//load
try {
words = this.load("d:/w/words.obj");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
//init
this.save(words, "d:/w/words.obj");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
this.save(result, "d:/w/result.obj");
//split
scan(content);
this.save(result, "d:/w/result.obj");
//update
//rename
//view
this.list(result);
}
public void scan(String content) {
int l = content.length();
StringBuilder builder = new StringBuilder();
StringBuilder t = new StringBuilder();
char c = 0;
char o = 0;
for(int i=0;i<l;i++) {
//System.out.println(content.charAt(i));
c = content.charAt(i);
if(split(c)) {
if(o == 0) {
builder.delete(0, builder.length());
//o = 0;
c = 0;
} else {
this.insert(t.append(o).toString());
t.delete(0, t.length());
}
//System.out.println();
//System.out.println(builder.toString());
} else {
//builder.append(c);
if(o != 0) {
if( (isNum(o) && isNum(c)) || (!isNum(o) && !isNum(c)) ) {
t.append(o).append(c);
if(this.exist(t.toString())) {
o = 0;
this.insert(t.toString());
} else {
if(this.insert(t.toString())) {
o = 0;
} else {
o = c;
}
}
t.delete(0, t.length());
} else {
this.insert(t.append(o).toString());
t.delete(0, t.length());
o = c;
}
} else {
o = c;
}
}
}
}
public boolean isNum(char c) {
boolean result = false;
String chars = "0123456789";
for(int i=0;i<chars.length();i++) {
if(chars.charAt(i) == c) {
result = true;
break;
}
}
return result;
}
public boolean exist(String t) {
boolean flag = false;
Object obj;
int k = 0;
obj = words.get(t.toString());
if(obj != null) {
k = (Integer) obj;
if(k > 1)flag = true;
} else {
flag = false;
}
return flag;
}
public boolean insert(String t) {
boolean flag = false;
Object obj;
int k = 0;
obj = result.get(t.toString());
if(obj != null) {
k = (Integer) obj;
if(k > 2)flag = true;
k += 1;
result.put(t.toString(), k);
} else {
result.put(t.toString(), 1);
flag = false;
}
return flag;
}
public boolean split(char c) {
boolean result = false;
String chars = " 《》,。-{}(()[];/":!?“”…、,.;!?/n/r";
for(int i=0;i<chars.length();i++) {
if(chars.charAt(i) == c) {
result = true;
break;
}
}
return result;
}
public HashMap load(String file) throws FileNotFoundException, IOException, ClassNotFoundException {
HashMap map = null;
ObjectInputStream in;
in = new ObjectInputStream(new FileInputStream(file));
map = (HashMap) in.readObject();
in.close();
return map;
}
public void save(HashMap map, String file) {
ObjectOutputStream out;
try {
out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(map);
out.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public void list(HashMap map) {
Iterator it = map.keySet().iterator();
while(it.hasNext()) {
String t = (String) it.next();
int k = (Integer) map.get(t);
System.out.println(t + " " + k);
}
}
}
- 基于统计方法的二字词发掘程序(改进)
- 基于统计方法的二字词发掘程序
- 字词出现频率统计
- 英语词汇量统计程序改进
- javascript实现邮件中提取关键字词的方法
- 文言字词的理解
- 基于C++的字符统计程序
- 基于图像的人数统计方法
- 基于单片机的多级菜单实现方法改进
- 基于Qt有限状态机人工智能的一种实现及改进方法
- 基于改进卡方校验的特征选取方法
- 一种 基于改进K_medoids的 句子文本聚类方法
- 如何在面试中发掘程序猿的核心竞争力
- 基于规则和基于统计的区别、方法简介
- 侦测程序句柄泄露的统计方法
- 侦测程序句柄泄露的统计方法
- 侦测程序句柄泄露的统计方法
- 侦测程序句柄泄露的统计方法
- QuickPart应用(4)-------利用QuickPart给webpart定制Sitebart
- 认识Oracle/SQL Server的免费数据库
- 初学java
- 牛司朋的blog
- 基于三层结构的CRM系统的设计和实现
- 基于统计方法的二字词发掘程序(改进)
- 使用Windows字体来来美化ubuntu9.04的字体
- PHP work tips
- oracel命令创建用户和表空间 操作总结
- Hash小谈
- 盛大的棋局
- 关于application/x-www-form-urlencoded等字符编码的解释说明
- 十年总结(14):从CS转向BS
- OpenGL视图变换