单词词频统计(12组)

单词词频统计

0.前言

该程序写于2018年7月9日,在北京航空航天大学与南通大学鞠小林老师结对完成。在此期间通过结对编程完成整个项目的需求分析、设计、开发、测试等。现在回顾一下这个程序的编写过程。与鞠老师的合作是很愉快的。总体信息如下:

+ 小组GitHub 地址:https://github.com/yuan574954352/WordCount

+ 博客园博客地址:

+ PSP


PSP2.1


Personal Software Process Stages


预估耗时(分钟)


实际耗时(分钟)


Planning


计划


· Estimate


· 估计这个任务需要多少时间


10


15


Development


开发


0


0


· Analysis


· 需求分析 (包括学习新技术)


30


30


· Design Spec


· 生成设计文档


15


15


· Design Review


· 设计复审 (和同事审核设计文档)


20


30


· Coding Standard


· 代码规范 (为目前的开发制定合适的规范)


5


5


· Design


· 具体设计


10


20


· Coding


· 具体编码


40


80


· Code Review


· 代码复审


20


30


· Test


· 测试(自我测试,修改代码,提交修改)


40


50


Reporting


报告


0


0


· Test Report


· 测试报告


5


10


· Size Measurement


· 计算工作量


5


5


· Postmortem & Process Improvement Plan


· 事后总结, 并提出过程改进计划


10


20


合计


210


310

  1. 设计思路

Java中的Map接口建立了 key 和 value 的映射。拟采用 key 存储需要统计的字符(或单词),value 则对应对应字符(或单词)的频率。

例如, 建立一个map,其中的key存储的是字符(a,w,z等),value则存储的对应的频率。

  2.系统框架

程序的整体开发流程如下:

                 

(1)对文本中非英语的一切字符进行过滤,只留下英语和必要的空格,能够区分不同单词,同时对于英语中特别的字符要加以处理)

(2)过滤出单词

(3)对单词首先在数据表中“查找”操作,如果存在,则更新值,如果不存在,则插入值。

(4)寻找合适的呈现方法,将最终的数据呈现出来,表格、文件等

主要处理流程是:


main(String[] args) {


lib test = new lib();


test.dealFile(args);


orderList1 = test.sortMap(test.getMap1());


orderList2 = test.sortMap(test.getMap2());


test.out("output1.txt",orderList1);


test.out("output2.txt",orderList2);


}

Step1: 函数dealFile(),逐行读取文件; 调用函数 dealLine() 来处理每一行字符和字符串;统计好频率放到对应的全局变量 map1、map2;

Step2: 函数sortMap()是对 map (map1 和 map2)的内容按 value 值降序排列;

Step3:函数out() 输出 top_n 字符(串)到指定的文件。

这个过程中用到了信息隐蔽原则,将上述4个主要函数dealFile、dealLine、sortMap、out 独立编写在 lib.java文件中;其中 dealFile 循环调用 dealLine 函数以处理输入文件的每一行;

此外,在 lib.java 中编写了一些判断字符类型的短小的函数,如isZ()、isNumber()、isSplit()。

上述设计不足之处是采用if… else… 结构处理分词,效率比较低,而且容易遗漏一些特殊的单词组合情况。如以下单词:isn’t 、FFile3name 等

  1. 性能评估及改进

利用 JProfile 开展性能评估,处理大文件,gong_with_the_wind.txt第一次,运行时间大概2000+ms,分析发现系统打印输出代码耗费了大量的时间,因此移除了调试时插入的一些打印输出代码。程序执行时间大为缩短。大约339ms,主要时间耗费在 Map中元素的查找。

原文地址:https://www.cnblogs.com/CugYzc/p/9286791.html

时间: 2024-10-28 20:01:14

单词词频统计(12组)的相关文章

201671010423 词频统计软件项目报告

需求分析 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. 基本功能 1.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图. 2.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词. 3.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件

201671010454词频统计软件项目报告

一.课程名称:2016级计算机科学与工程学院软件工程(西北师范大学) 二.课程要求:实验二 软件工程个人项目 三.实验目标: (1)掌握软件项目个人开发流程. (2)掌握Github上发布软件项目的操作方法. 四.实验内容: (一)需求分析 程序可读入任意英文文本文件,改文件中英文词数大于等于1个,且能读取容纳英文原版<哈利波特>10万词以上的文章. 指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图. 高

201671010421 麻存滔 词频统计软件项目报告

一.需求分析 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个,程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. 2.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图. 3.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词. 4.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result

201671030102陈飞 词频统计软件项目报告

我的GitHub仓库 链接 1需求分析 根据实验二 软件工程个人项目分析 1.程序可读入文本文件,且文本文件大小不定,文件路径为相对路径 2.指定单词词频统计功能,可多个输入并且输出柱状图 3.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件result.txt. 4.可按文本中词频数降序显示前k个单词的词频及单词 5.使用java开发,且jdk环境为jdk8u161,jre环境为jre8u161 2功能设计 ·基本功能: 1.指定单词词频统计功能 2.高频词统计功能 3.

201671010441徐浩杰 词频统计软件项目报告

实验二.软件工程个人项目 一.需求分析 尝试按照<构建之法>第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发.软件基本功能要求如下: •程序可读入任意英文文本文件,该文件中英文词数大于等于1个. •程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. •指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图. •高频词统计功能:用户从键盘输入高

201671010406 词频统计软件项目报告

一.需求分析 统计文件中各单词的出现次数 二. 功能设计 程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. 指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图. 高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词. 统计该文本所有单词数量及词频数,并能将单词及词频数按

201671010410 冯婷秀 词频统计软件项目报告

一.需求分析 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. 3.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图. 4.高频词统计功能:用户从键盘输入高频词输出的个数k,运行程序统计功能,可按文本中词频数降序显示前k个单词的词频及单词. 5.统计该文本所有单词数量及词频数,并能将单词及词频数按字典顺序输出到文件res

201671010431+词频统计软件项目报告

一.需求分析 按照<构建之法>第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发.软件基本功能要求如下: 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. 3.指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词,运行程序的统计功能可显示对应单词在文本中出现的次数和柱状图. 4.高频词统计功能:用户从键盘输入高频词输出的个数k,运行

201671010416 焦少梅 实验二 词频统计项目

实验二 软件工程个人项目 实验目的与要求 掌握软件项目开发流程 掌握Github上发布软件项目的操作方法. 实验内容和步骤 任务1: 需求分析: 尝试按照<构建之法>第2章中2.3所述PSP流程,使用JAVA编程语言,独立完成一个英文文本词频统计的软件开发 程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上的文章. 指定单词词频统计功能:用户可输入从该文本中想要查找词频的一个或任意多个英文单词运行程序的统计功能可显