文档章节

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

伊诗塔
 伊诗塔
发布于 2014/03/16 22:59
字数 722
阅读 374
收藏 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
云阳
在Hadoop上运行基于RMM中文分词算法的MapReduce程序

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

solu
2012/01/29
0
2
各种实用应用程序中的词语分析和 N 元模型

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

Uche Ogbuji
05/21
0
0
最新阿里巴巴面试题(附带面试标准答案)

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

柯西带你学编程
06/02
0
0
统计出现频率最高的十个单词的程序性能分析

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

大脸猫cat
2014/03/17
0
2
用Python分析《红楼梦》:见证了贾府的兴衰,你是否还能“笑道”世事无常

没读过《红楼梦》也能知道前后四十回是不是一个作者写的?很久以前,数据侠黎晨,用机器学习的算法分析了《红楼梦》,认为后四十回和前八十回内容上有明显差距。不过,数据侠楼宇却不这么认为...

dqcfkyqdxym3f8rb0
2017/12/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

php 使用redis锁限制并发访问类

1.并发访问限制问题 对于一些需要限制同一个用户并发访问的场景,如果用户并发请求多次,而服务器处理没有加锁限制,用户则可以多次请求成功。 例如换领优惠券,如果用户同一时间并发提交换领...

豆花饭烧土豆
7分钟前
0
0
Linux环境搭建 | 手把手教你配置Linux虚拟机

在上一节 「手把你教你安装Linux虚拟机」 里,我们已经安装好了Linux虚拟机,在这一节里,我们将配置安装好的Linux虚拟机,使其达到可以开发的程度。 Ubuntu刚安装完毕之后,还无法进行开发,...

良许Linux
9分钟前
0
0
Nginix开启SSL支持HTTPS访问(自签名方法)

Nginix开启SSL支持HTTPS访问(自签名方法) 超文本传输安全协议(缩写:HTTPS,英语:Hypertext Transfer Protocol Secure)是超文本传输协议和SSL/TLS的组合,用以提供加密通讯及对网络服务器...

openthings
25分钟前
0
0
(三)Nginx配置·续

概述 前文写了关于Nginx环境配置,但是还没有完,接下来将会继续讲三个相关的配置 主要是以下三个 1.Nginx访问日志 2.Nginx日志切割 3.静态文件不记录日志和过期时间 Nginx访问日志 1.先看看...

杉下
今天
1
0
jquery创建类似于java的map

var map = {}; // Map map = new HashMap(); map[key] = value; // map.put(key, value); var value = map[key]; // Object value = map.get(key); var has = key in map; // boolean has = ......

SuperDabai
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部