结对编程作业

团队开发了一个Python程序,用于统计英语文本中字母、单词和短语的频率,支持停用词过滤和动词形态统一,通过单元测试和性能分析确保代码质量。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

团队成员:张贺 杨涛 石恩升

github地址:https://github.com/ThomasMrY/ASE-project-MSRA

题目简介:

        此次编程的题目是——统计文本文件中英语单词的频率,作业要求我们不仅要完成题目功能,还要对我们的程序做speed testing 和 performance analysis.

        题目的源地址:https://www.cnblogs.com/xinz/archive/2011/11/27/2265000.html

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

 程序要具有的基本功能:

第0步:输出某个英文文本文件中 26 字母出现的频率;

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

第二步:  支持 stop words,即略过停用词文件里的单词;

第三步:  统计常用的短语频率,短语包含的单词数目由人为规定; 

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

第五步:统计“动词-介词”短语的频率。

 前期准备:

        项目前期,我们小组在一起讨论了作业的实现思路,最终决定了我们工作流程和代码风格。

       工作流程:首先,每个人根据自己的想法实现作业中的几个功能;然后,比较每个人的算法在各个任务上的性能,选择最优的版本继续开发;最后,通过pair programming的方式将最终代码汇总,并作性能分析和功能优化。

       代码风格:我们投票决定使用python作为项目的开发语言,为了提高我们的合作效率,我们规定了代码中变量、函数的命名风格以及注释的格式。

变量、函数命名风格:

def CountLetters(fileName,n,stopName,verbName):

注释格式:

###########################################################################
#Name:CountLetters
#Inputs:fileName
#       n : output the top N items in letters
#       stopName: the file of stopwords skipped
#       verbName: the file of verb dict
#outputs:None
#Author: ThomasY
#Date:2018.10.24
###########################################################################

开发阶段:

       1、项目过程中,因为小组成员线下交流比较方便,因此,针对各个阶段功能的实现,我们遵守了先前的约定,各自完成功能核心代码后便进行了交流。经过比较代码性能,选择较好的版本并入项目,此过程我们通过结对编程来完成。

       2、每增加一个功能,我们用“单元测试”验证代码的正确性和覆盖率,以step2:支持 stop words为例说明,我们在用测试用例测试该模块代码时,发现虽然可以100%实现预期功能,但其中两行代码总是无法覆盖,如下图所示:

图2

红色阴影处是我们在删除单词字典“tempc”中的元素时,为防止删除字典中不存在的元素时会报错而写的异常处理机制。分析后可知,上一步得到的“tempc”变量是“Counter”类型的,这一类型的结构在删去本身不存在的元素时会自动跳过,因此我们的异常处理是多余的。删去try...except...语句后覆盖率达到100%.

覆盖率

       3.每次在原有工程上扩充一个新功能后,我们都在做单元测试的同时,测试以往功能,避免新引入的模块对以前的功能造成破坏,从而完成回归测试。

      4.完成题目要求的所有功能后,我们用python中自带的cProfile模块和可视化图形模块graphviz对工程做效能分析。

 

队友评价:

 

自我评价:

 

 

          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值