现代软件工程 作业 文本文件中英语单词的频率

这是《构建之法》现代软件工程课的个人项目作业

    1. 个人项目 Individual Project: 一个人独立完成.
    2. 时间: 可以考虑在第一周就给同学们这个项目;  也可以考虑分为两部分, 个人做第一部分, 然后两人结对,选两个人中较好的程序,再继续开发其他功能。 
    3. 考核内容
    4. 基本源代码控制的用法, 逐步扩展的程序设计,对字符,字符串的处理,英语分词,排序,

程序的测试,回归测试,效能测试C/C++/C# 等基本语言的运用和 debug。 考虑到同学的基础参差不齐,这个作业提供了多种要求,请按先易后难的次序实现。 


用户需求
:英语的26 个字母的频率在一本小说中是如何分布的?某类型文章中常出现的单词是什么?某作家最常用的词汇是什么?《哈利波特》 中最常用的短语是什么,等等。 我们就写一些程序来解决这个问题,满足一下我们的好奇心。 

假设我们的命令行程序叫 WF.exe   (WF: Word Frequence) 

第0步:输出某个英文文本文件中 26 字母出现的频率,由高到低排列,并显示字母出现的百分比,精确到小数点后面两位。

命令行参数是:

wf.exe -c <file name>

一些同学要复习一下程序如何处理命令行参数, 请看别人的经验。 

字母频率 = 这个字母出现的次数 / (所有A-Z,a-z字母出现的总数)

如果两个字母出现的频率一样,那么就按照字典序排列。  如果 S 和 T 出现频率都是 10.21%, 那么, S 要排在T 的前面。

这个程序容易写吧?  如果要处理一本大部头小说 (例如 Gone With The Wind), 你的程序效率如何?有没有什么可以优化的地方?

第一步:输出单个文件中的前 N 个最常出现的英语单词。

作用:一个用于统计文本文件中的英语单词出现频率的控制台程序 单词:以英文字母开头,由英文字母和字母数字符号组成的字符串视为一个单词。单词以分隔符分割且不区分大小写。在输出时,所有单词都用小写字符表示。 

英文字母:A-Z,a-z字母数字符号:A-Z,a-z,0-9分割符:空格,非字母数字符号 例:good123是一个单词,123good不是一个单词。good,Good和GOOD是同一个单词

功能列表:

    • 功能1:wf.exe -f <file>  
      输出文件中所有不重复的单词,按照出现次数由多到少排列,出现次数同样多的,以字典序排列。
    • 功能2:wf.exe -d <directory>  指定文件目录,对目录下每一个文件执行  wf.exe -f <file> 的操作。 
      • wf.exe -d -s  <directory>  同上, 但是会递归遍历目录下的所有子目录。
    • 功能3:支持 -n 参数,输出出现次数最多的前 n 个单词,  例如,  -n 10 就是输出最常出现单词的前 10 名。 当没有指明数量的时候,我们默认列出所有单词的频率。

现在我们这个程序已经有一点复杂度了, 我们要构建一些基本的测试用例来保证程序的基本功能不会在不断的扩展中出问题。 请看 《构建之法》【回归测试】的内容,构建一些测试来保证基本功能的正确性。 

第二步:  支持 stop words

我们从第一步的结果看出,在一本小说里, 频率出现最高的单词一般都是 "a",  "it", "the", "and", "this", 这些词, 我们并不感兴趣.  我们可以做一个 stop word 文件 (停词表), 在统计词汇的时候,跳过这些词。  我们把这个文件叫 "stopwords.txt" file. 

功能 4:支持新的命令行参数, 例如:   wf.exe -x <stopwordfile>  -f <file> 

在这一步我们要增加什么回归测试呢?

第三步:  我们想看看常用的短语是什么, 怎么办呢? 

先定义短语:"两个或多个英语单词, 它们之间只有空格分隔".   请看下面的例子:

  hello world   //这是一个短语

  hello, world //这不是一个短语 

功能 5:支持新的命令行参数  -p <number> 

  参数 <number> 说明要输出多少个词的短语,并按照出现频率排列。同一频率的词组, 按照字典序来排列。 

在这一步我们要增加什么回归测试呢? 

第四步:把动词形态都统一之后再计数。 

我们想找到常用的单词和短语,但是发现英语动词经常有时态和语态的变化,导致同一个词,同一个短语却被认为是不同的。 怎么解决这个问题呢?

假设我们有这样一个文本文件,这个文件的每一行都是这样构成:

  动词原型  动词变形1 动词变形2... 

词之间用空格分开。

e.g.  动词 TAKE 有下面的各种变形

  take takes took taken taking

我们希望在实现上面的各种功能的时候,有一个选项, 就是把动词的各种变形都归为它的原型来统计。 

功能 6:支持动词形态的归一化,参数为 -v

  wf.exe -v <verb file>  其中 <verb file> 是纪录动词形态的文本文件。 

实现这些功能, 分析程序的效能  (link: 现代软件工程讲义 2 开发技术 - 效能分析), 

每一步都至少要签入源代码控制 (github 或其他工具)一次,同时把回归测试的测试用例也写好签入到适当的目录中。 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500633.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java 继承变量_用java中的变量继承

任何人都可以澄清我.这里实例方法被覆盖但变量不被覆盖.输出为&#xff1a;B 10class A{int i10;public void name(){System.out.println("A");}}class B extends A{int i20;public void name(){System.out.println("B");}}public class HelloWorld {publi…

现代软件工程 怎么教好课 (读书笔记)

0. 教师教学有培训和参考书么? 我从来没想到过我会在大学里教书, 而且还教了好几年, 好几个学校。 当时接到任务的时候, 我把它当作实习生培训和新员工培训的”学院版”, 还是继续强调实践, 反馈, 合作, 就这么开讲了。 在微软公司, 做大部分和人相关的事情, 都得先有一个培训…

php oci 11g.dll下载,Oracle oci.dll

Oracle oci.dll是在32位PLSQL Developer软件访问Oracle 11g 64位数据库必须的系统dll文件&#xff0c;用于支持连接访问数据&#xff0c;如果系统出现相关dll文件缺失&#xff0c;就需重新下载&#xff0c;有需要的朋友快来巴士下载网下载吧&#xff01;Oracle 11g oci.dll文件…

java url authority,Java如何解析url,包括自定义schema的url

比如我要解析下面这个url&#xff1a;myscheme://adminblog.nihao001.com:8080/index.jsp?usernameasdf&password123456&msg%e4%bd%a0%e5%a5%bd#editor只要使用URI这个类就可以解析了。上代码&#xff1a;import java.net.URI;import java.net.URISyntaxException;pub…

软件工程 案例分析作业

现代软件工程 构建之法 作业https://bbs.csdn.net/forums/SoftwareEngineering?typeId1723 软件工程作业 案例分析 (建议作为个人或结对作业) 很多同学有疑惑&#xff1a; 软件工程课是否就是枯燥的理论课&#xff1f; 或者是几个牛人拼命写代码&#xff0c;其他人抱大腿的…

现代软件工程讲义 目录

软件工程牵涉的范围很广, 同时也是一般院校的同学反映比较乏味的课程。 但是软件工程的技术对于投身IT 产业的学生来说是非常重要的。 经过几年的探索, 我总结了在16周的时间内让同学们通过 “做中学 (Learning By Doing)” 掌握实用的软件工程技术的教学计划。 这套讲义在下面…

php的数据模型包括,数据库中模型的分类有哪些

数据库中模型的分类&#xff1a;1、概念数据模型&#xff0c;面向用户、面向现实世界的数据模型&#xff0c;描述一个单位的概念化结构&#xff1b;2、逻辑数据模型&#xff0c;可以通过实体和关系勾勒出企业的数据蓝图&#xff1b;3、物理数据模型&#xff0c;具有以实物或画图…

现代软件工程 团队作业 - 软件分析和用户需求调查 (2013 - 2014)

【现代软件工程 的讲义】 医学院的学生, 要练习解剖人体; MBA 的学生&#xff0c; 要剖析某公司的成败&#xff1b; 法律系的学生&#xff0c;要阅读和分析大量案例...... 软件行业的从业人员, 不管是项目经理, 开发或测试人员, 都要学会解剖分析软件, 我们就来试试看。 要求:…

php 去年年初和年底时间,PHP 日期与时间

获取时间1.使用 date 函数格式化一个本地时间。//输出当前时间echo date(‘Y-m-d H:i:s‘);2.使用 getdate 函数获取时间戳的日期时间信息。//打印出详细的信息var_dump(getdate(time()));时间戳1.使用 time 函数获取当前时间戳//输出当前的时间戳echo time()2.使用 mktime 函数…

Arrays.sort() and 吾欲仁则斯仁至矣

有不少人在争论 Java 对学生有益还是有害&#xff08;不少网站上的评论有断章取义的嫌疑&#xff0c;不值得多看&#xff0c;建议看这个中文链接&#xff09;&#xff08;英文链接&#xff09;。事实上&#xff0c;这个问题事实上不是最近才提出来&#xff0c;大约6~7 年前&…

一目了然

这是啥&#xff1f; a) 某星系的结构图 b) 博客堂的社会关系网络 c) 某传销网络 d) 某合法视频直播网络&#xff0c;可以看到CCTV-1 全部节目&#xff0c;包括春晚&#xff0c;有时还有体育节目。 最近在帮助一个项目的测试工作&#xff0c;这个项目需要通过一些数据及日志重现…

php 万分之一几率,那万分之一的概率啊……

【今日】不要心存侥幸心理&#xff0c;那万分之一的概率啊……也许就是发生在自己身上。【正文】1老公抱着暖暖&#xff0c;大踏步的向前走去&#xff0c;兴奋的说:“我刚在群里问了一下&#xff0c;还没人回复&#xff0c;你说不会两家店全部装修吧&#xff1f;这万分之一的概…

JS常用事件大全

事件 事件通常与函数配合使用&#xff0c;这样就可以通过发生的事件来驱动函数执行。 注意&#xff1a;事件名称大小写敏感。若是事件监听方式&#xff0c;则在事件名的前面取消on。 1. 鼠标事件 给btn按钮添加点击事件&#xff0c;点击弹出 你好&#xff01; 2. 键盘事件…

重要但不紧急的事

事儿真多。 有重要的事&#xff0c;有紧急的事&#xff0c;有紧急但不重要的事&#xff0c;也有重要但不紧急的事。&#xff08;详细的论述参见 “超级高效人士的超级61个习惯”或者其他时间管理的书籍&#xff09; 对于IT 行业的人来说&#xff0c;读书&#xff0c;是一件重要…

php 动态添加表格行,jQuery给html表格动态添加行方法总结

这次给大家带来jQuery给html表格动态添加行方法总结&#xff0c;jQuery给html表格动态添加行的注意事项有哪些&#xff0c;下面就是实战案例&#xff0c;一起来看一下。本文实例讲述了jQuery实现html表格动态添加新行的方法。分享给大家供大家参考。具体实现方法如下&#xff1…

奖品兑现 – 我家没有好茶饭,只有《编程之美》送亲人

[由于blog.joycode.com 在改版ing, 我的这篇帖子上不了首页。我会在 www.yishan.cc 放同样的文章。] 我在庆祝 中国微软地图 的博客上提出了有奖找bug 的活动。现在《编程之美》 终于出版了&#xff0c;也到了兑现奖品的时候。 几天不来&#xff0c;发现这里的界面变得比较有挑…

php3绕过,PHPB2B注入#3(绕过过滤)

PHPB2B某处注入绕过过滤。官方最新版本. https://github.com/ulinke/phpb2b/archive/master.zip详细说明&#xff1a;1.注册企业会员。2.注册企业会员且通过审核。发布产品。漏洞文件。virtual-office/product.phpContent-Disposition: form-data; name"data[product][sor…

地图点儿莱唔点儿康的新功能 – 路况 和 短信

最近家里的的项目有所变化&#xff0c;首先&#xff0c;吃的 – 据说公司原来是每天下午3点到3点05分供应时鲜水果&#xff0c;现在改为8小时供应。而且时不时还有免费晚餐&#xff0c;听说他们项目组的同事纷纷赞美 – 工作着是美丽的。。。 其次上下班时间不太正常 &#xff…

java五子棋实训训心得,java五子棋实习报告

java五子棋实习报告 Java 程序设计基础 实习报告 课程名称 Java 程序设计基础 实习题目 java 五子棋 专 业 班 级 学 号 学生姓名 指导教师 Java 实习报告 一、一、J JAVAAVA 技术介绍技术介绍 Java 技术是一门编程语言&#xff0c;也是一个平台&#xff0c;它基于 Java 虚拟机…

人山人海人立方 http://renlifang.msra.cn

一位朋友最近跟我说 - 我现在隔一天才能开车经过北四环&#xff0c;一路上看到空空如也的奥运专用道和巍峨的运动场馆&#xff0c;有感而发&#xff0c;想出一个上联要让我们的“对联网站”来对&#xff0c;但是一直没有得到很好的下联&#xff0c;你们的另一个新产品帮我对出…