文档章节

单词频率统计程序性能分析

伊诗塔
 伊诗塔
发布于 2014/03/16 22:59
字数 722
阅读 384
收藏 1

/**

        编程语言:java

        文档大小:351KB

**/

问题解决步骤如下,首先我想到的是应该写一个类来读取自己电脑上的文本文档。部分代码如下代码所示:

public class ReadTxt {
	/**
	 * 读取文本文件,abs_path表示绝对路径
	 * @param abs_path
	 * @throws IOException
	 */
	public String fileReader(String abs_path) throws IOException{

得到了这篇文章之后,我将其转化为一个字符串数组,这里比较重要的就是如何分词,幸运的是java提供了这个功能,代码如下:

String[] strArray = new String[]{};
strArray = allWords.split("[^a-zA-Z0-9]+");

最后的步骤就是简单的统计每个单词的频率。

//找出每个单词的频率
		for(int j = 0; j < strArray.length;j++){
			for (int k = 0; k < strArray.length; k++) {
				if((strArray[j].equalsIgnoreCase(strArray[k])) && (j != k)){
					counterFrequent[0][j]++;
				}
			}
		}

在main函数里面的运行结果如下:

-----------------出现频率最多的十个单词如下-------------------

       the             出现的频率是      1537 次

        of              出现的频率是      633 次

        to              出现的频率是      624 次

        a                出现的频率是      585 次

        in               出现的频率是      518 次

        said            出现的频率是      507 次

        He              出现的频率是      474 次

        You            出现的频率是      421 次

        it                出现的频率是      405 次

        I                 出现的频率是      330 次

接下来使用VisualVM测试其性能,获得的性能分析结果如下:

cpu使用情况:

从上图可以看到运行时间大概是三秒左右。

堆内存变化情况:

总共加载的类情况:

线程情况:

至此工作基本完成。


不足之处:由于我在排序的时候没有采用比较高效的算法,例如快速排序。而是自己写了一个简单的冒泡排序,因此与之前文档较小时运行时间比起来速度慢了很多。忽略了单词不正确的情况。


改进之处:可以采用高效的排序算法,或者运用java自带的hashMap效率会提高很多。


总结:在这个过程中还是遇到很多问题,比如程序问题,当我在读取文件的时候读取的不完全。还有就是分词的正则表达式的写法。遇到的最大问题算是如何分析性能的问题吧,因为以前从没有接触过。我折腾了整整一天才弄出来一个结果,而且还不知道这个结果是否正确。但是,我很高兴老师布置这样的题目,在这个过程中我学到了很多。

© 著作权归作者所有

共有 人打赏支持
伊诗塔
粉丝 8
博文 2
码字总数 3270
作品 0
云阳
各种实用应用程序中的词语分析和 N 元模型

在词语级别为自然语言特征建模,并生成频率图 系列内容: 此内容是该系列 # 部分中的第 # 部分: 利用人工智能创建模式,第 2 部分 此内容是该系列的一部分:利用人工智能创建模式,第 2 部分...

Uche Ogbuji
05/21
0
0
在Hadoop上运行基于RMM中文分词算法的MapReduce程序

我知道这个文章标题很“学术”化,很俗,让人看起来是一篇很牛B或者很装逼的论文!其实不然,只是一份普通的实验报告,同时本文也不对RMM中文分 词算法进行研究。这个实验报告是我做高性能计...

solu
2012/01/29
0
2
最新阿里巴巴面试题(附带面试标准答案)

在上一节中,我们已经介绍了关于阿里巴巴的任职要求,这节我就详细的介绍一下关于阿里巴巴的面试题(涉及到标准代码部分不予以出现,如果想要可以加群:725479218,里面可以进行技术分享、技术...

柯西带你学编程
06/02
0
0
借助亚马逊S3和RapidMiner应用到文本挖掘

  【IT168 评论】本挖掘典型地运用了机器学习技术,例如聚类,分类,关联规则,和预测建模。这些技术揭示潜在内容中的意义和关系。文本发掘应用于诸如竞争情报,生命科学,客户呼声,媒体和...

it168网站
05/28
0
0
统计出现频率最高的十个单词的程序性能分析

李竹君 2011211964 0401115班 1.使用C语言。 2.整体思路:首先将一篇文章分词,分词的方法是将逐字符的判断一篇文章,如果该字符的ASCII码在“A~Z”或“a~z”之间(区分大小写),则该字符属...

大脸猫cat
2014/03/17
0
2

没有更多内容

加载失败,请刷新页面

加载更多

网站优化技术包括哪些内容

网站优化Incapsula超越简单的内容缓存,可以优化网站性能或应用程序的用户体验,优化包括内容缩小、动态文件压缩、图像压缩、会话重用优化、TCP优化和连接预合并。 动态文件压缩,普通的web...

上树的熊
28分钟前
1
0
业界 | Teradata全球调研:四分之三企业分析项目数据科学家“缺货”

当地时间10月15日,2018 Teradata全球用户大会在美国拉斯维加斯举行。来自15个国家的3000多位数据人参与了本次峰会。 大会第一日,Teradata发布了针对“企业数据分析”的2018年调研结果。 调...

Mr_zebra
30分钟前
1
0
java 通过Unsafe不使用构造器直接创建对象

这里有一个User没有无参构造 public class User { static { System.out.println("static {}"); } { System.out.println("{}"); } public User(Strin......

ValSong
31分钟前
2
0
eureka 高可用配置 unavailable-replicas 问题.

在使用spring cloud 配置eureka 高可用配置时.发现配置的节点一直无法获取心跳. eureka控制台界面上一直显示的挂载节点 是 unavailable-replicas 查看日志.就是获取心跳的地址不对. 默认的健...

拖鞋莫止步
32分钟前
2
0
Vue2 模板template的四种写法

<div id="app">    <h1>我是直接写在构造器里的模板1</h1></div> <template id="demo3">    <h1 style="color:red">我是选项模板3</h1></template> <script type="x-t......

粒子数反转
32分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部