`
helloyesyes
  • 浏览: 1304020 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

基于统计方法的二字词发掘程序(改进)

阅读更多

增加了一定的自学习能力.

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的公益人优势发掘器设计源码

    该项目是一款基于JavaScript的公益人优势发掘器设计源码,总计包含51个文件,涵盖18个JavaScript脚本文件、9个CSS样式文件、9个XML配置文件、2个Markdown文档、2个JSON数据文件、1个EditorConfig配置文件、1个环境...

    一种基于Matlab的生产系统瓶颈单元智能发掘方法.pdf

    根据所提供的文件内容,该文档主要介绍了基于Matlab的生产系统瓶颈单元智能发掘方法(BIDM)。本方法的目的是为了优化生产系统的效率和产能,通过动态计算生产单元的产能,智能地识别和改善瓶颈单元,从而缩短生产...

    基于SSM的微信阅读小程序.zip

    这是一个基于SSM的微信阅读小程序,旨在为用户提供更加便捷和个性化的阅读体验。该小程序提供了丰富的书籍资源,用户可以在小程序内轻松浏览并选择自己感兴趣的书籍进行阅读。除了常规的阅读功能外,该小程序还支持...

    基于OBE理念的面向对象程序设计(Java)课程教学改革.pdf

    本文探讨了面向对象程序设计(Java)课程教学过程中采用以产出为导向教学理念的可行性,阐明了基于OBE理念的面向对象程序设计(Java)课程教学改革基本思路,并对课程基于OBE教学理念的教学方法进行了深入探讨。...

    一种基于Matlab的生产系统瓶颈单元智能发掘方法.zip

    "一种基于Matlab的生产系统瓶颈单元智能发掘方法.pdf"可能包含了更详细的步骤、案例研究和实际操作指南,包括如何构建数学模型,选择适当的优化算法,以及如何解读和应用结果。读者可以详细阅读此PDF文档,以深入...

    步步高外语通电子词典9288T系统安装程序和游戏.rar

    这样的资源包对拥有9288T的用户来说是一份宝贵的资料,尤其是对于那些寻求设备优化和扩展功能的爱好者来说,它提供了进一步发掘设备潜力的可能性。在操作过程中,用户需要注意数据安全,遵循正确的方法,避免对设备...

    《暗战亮剑-软件漏洞发掘与安全防范实战》┊王继刚[.PDF]

    使用FileFuzz发掘文字处理软件漏洞3.6 文字处理型软件漏洞的危害与利用3.6.1 ShellCode与木马植入3.6.2 本地权限与系统命令3.6.3 邮件附件中的隐蔽杀手3.7 实战课之二:编写属于自己的发掘漏洞程序3.8 媒体播放软件...

    工业物联网中基于机器学习方法的预测技术.pdf

    "工业物联网中基于机器学习方法的预测技术.pdf" 本文概述了工业物联网中基于机器学习方法的预测技术,讨论了机器学习在工业智能系统预测技术中的应用。随着工业物联网技术的发展,机器学习方法将发挥着越来越重要的...

    基于SQL技术的频繁模式的发掘.pdf

    《基于SQL技术的频繁模式发掘》一文主要探讨了如何利用SQL技术改进频繁模式挖掘算法,特别是FP-Growth算法,以提高数据挖掘的效率和性能。频繁模式挖掘是关联规则学习的重要步骤,它旨在发现数据库中频繁出现的项集...

    基于用户行为的智能家居产品设计方法研究与应用.pdf

    通过用户行为采集和行为数据分析,该研究不仅发掘了产品的痛点,还提出了一系列改进方案,为智能家居产品的用户体验设计研究提供了宝贵的参考。 关键词“用户体验”、“用户行为”、“智能家居产品”、“扫地机器人...

    论文研究-一种基于fuzzing技术的漏洞发掘新思路.pdf

    目前检测软件缓冲区溢出漏洞仅局限于手工分析、二进制补丁比较及fuzzing技术等,这些技术要么对人工分析依赖程度高,要么盲目性太大,致使漏洞发掘效率极为低下。结合fuzzing技术、数据流动态分析技术以及异常自动...

    基于微信小程序的Web工程师模拟面试系统.docx

    本学位毕业论文——“基于微信小程序的Web工程师模拟面试系统”,旨在探讨如何利用微信小程序的优势来优化教育过程。首先,论文深入剖析了微信小程序的功能和特点,如离线运行、快速启动、易于分享等,这些特性使得...

    基于数据挖掘技术的经济统计研究.pdf

    基于数据挖掘技术的经济统计研究 一、数据挖掘技术概述 数据挖掘是一种从大量数据中识别出有价值信息的过程。在数据库中,这些数据往往包含不完整性和未经筛选加工的特性,需要通过数据挖掘技术进行有效筛选和处理...

    微信小程序:拼图工具箱

    这是一款拼图工具箱小程序源码 小程序支持多种拼图制作生成 ...这款小程序安装方法还是挺简单的! 使用微信开发者工具打开该小程序源码,然后上传审核就可以了 这款小程序无需设置任何的合法域名

    小程序源码:拼图工具箱微信小程序源码下载支持多种拼图模式制作

    这是一款拼图工具箱小程序源码 小程序支持多种拼图制作生成 ...这款小程序安装方法还是挺简单的! 使用微信开发者工具打开该小程序源码,然后上传审核就可以了 这款小程序无需设置任何的合法域名

Global site tag (gtag.js) - Google Analytics