一、基本信息

1.本次作业的地址: https://edu.cnblogs.com/campus/ntu/Embedded_Application/homework/2088

2.项目Git的地址:https://gitee.com/ntucs/PairProg/tree/SE016_017

3.开发环境:Pycharm2018、Python3.6

4.结对成员:1613072013 刘赛、1613072011蒋兆丰

二、项目分析

       2.1 程序运行模块(方法、函数)介绍

       ①任务一:读取文件、统计行数写入result.txt方法

import re
import jieba
from string import punctuationdef process_file(dst):     # 读文件到缓冲区try:     # 打开文件f=open(dst,'r')except IOError as s:print (s)return Nonetry:     # 读文件到缓冲区x=f.read()except:print ("Read File Error!")return Nonebvffer=xreturn bvffer

②任务一:使用正则表达式统计词频,存放如字典模块

def line_count(dst):count=0for index,line in enumerate(open(dst,'r')):count+=1print("text line :",count)
def process_buffer(bvffer):c=bvffer.lower()result=re.sub("[0-9]+[a-z]+"," ",c)re1=re.findall('[a-z]+\w+',result)d=open("stopwords.txt",'r').read()if re1:word_freq = {}# 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freqfor word in re1:if word not in d:if word not in word_freq:word_freq[word]=0word_freq[word]+=1return word_freq

③任务一:保存排名前十结果至result.txt模块

def output_result(word_freq):doc=open('result.txt','w')if word_freq:sorted_word_freq = sorted(word_freq.items(), key=lambda v: v[1], reverse=True)print(len(word_freq))for item in sorted_word_freq[:10]:  # 输出 Top 10 的单词print(item[0],":",item[1])print(item[0],":",item[1],file=doc)doc.close()

④任务一:主函数调用各个模块逻辑

if __name__ == "__main__":import argparseparser = argparse.ArgumentParser()parser.add_argument('dst')args = parser.parse_args()dst = args.dstline_count(dst)bvffer = process_file(dst)word_freq = process_buffer(bvffer)output_result(word_freq)word_frequency(bvffer)

  ⑤任务二:停词表模块

  功能实现方法:使用 nltk(Natural Language Toolkit,自然语言处理工具包,在NLP领域中,最常使用的一个Python库。)下载英文停词表,存放到list_stopWords集合中,接着对将要处理的英文单词进行判断是否与list_stopWords中的词汇相等,如果相等则跳过,即停词功能。

  代码模块如下:

    d=open("stopwords.txt",'r').read()       #停词if re1:word_freq = {}# 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freqfor word in re1:if word not in d:if word not in word_freq:word_freq[word]=0word_freq[word]+=1return word_freq

任务二:列出高频短语模块

def Phrase_statistics(bvffer):       #统计高频词组text=nltk.text.Text(bvffer.split())print(text.collocations())

       2.2 程序算法时间、空间复杂度分析

def process_buffer(bvffer):c=bvffer.lower()result=re.sub("[0-9]+[a-z]+"," ",c)re1=re.findall('[a-z]+\w+',result)d=open("stopwords.txt",'r').read()if re1:word_freq = {}# 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freqfor word in re1:if word not in d:if word not in word_freq:word_freq[word]=0word_freq[word]+=1return word_freq

假设字典中有n个元素,执行一次就循环一次,共n次,所以时间复杂度为O(n),每次创建一个空间存放将要使用词,所以空间复杂度为O(1)

       2.3 程序运行案例截图

result运行截图:

高频词组截图:

三、性能分析

1.

2.

四、其他

       4.1 结队编程时间开销

由于之前没有接触过python,大部分的时间用于学习python的各种函数应用,,查阅资料,一边做,一边学。查阅技术文档、结队编程。大体分工为两位同学同时查阅技术文档,接着交流讨论。对各个技术方式实践结队编程最后选择最合适的方案。

       4.2 结队编程照片

五、事后分析与总结 

五、事后分析与总结

5.1简述结对编程时,针对某个问题的讨论决策过程。

在实现查看高频短语的功能时,蒋兆丰的代码与我的代码一度产生冲突。蒋兆丰的想法是使用字符串组成想要提取的短语,我的想法是使用nltk中的collection方法。

5.2评价对方:请评价一下你的合作伙伴,又哪些具体的优点和需要改进的地方。 这个部分两人都要提供自己的看法。

(1)刘赛对蒋兆丰的评价:蒋兆丰同学积极主动,好学,在我们学习python的时候理解的很快也理解的很好。

(2)蒋兆丰对刘赛的评价:刘赛同学在编程的时候有遇到很多问题,讨论的时候提出了比较好的想法。

 5.3评价整个过程

       结对编程是一个相互学习、相互磨合的渐进过程,团队合作对于编程而言很重要。

5.5其他

       在学习一门新的语言时要多查询资料多余同学讨论,并且要多敲代码,多进行实践。

转载于:https://www.cnblogs.com/NTUliusai/p/9825070.html

作业4:词频统计——基本功能相关推荐

  1. 软工作业 5:词频统计——增强功能

    一.基本信息 1.1 编译环境.项目名称.作者 1 #编译环境:python3.6 2 #项目名称:软工作业5-词频统计-增强功能 3 #作者:1613072055 潘博 4 # 1613072056 ...

  2. java大作业国际比赛奖牌榜,java大作业之词频统计

    [实例简介] 开发工具idea,统计方式为java8的stream方式,不是传统的字节流统计方式,内含答辩PPT以及统计单词的文本,配置好后可直接使用 [实例截图] [核心代码] java大作业之词频 ...

  3. 软工作业3—词频统计

    一.案例课程分析 1.编译环境 pycharm2018.python3.7 2.读文件到缓存区(process_file(dst)) def process_file(dst): # 读文件到缓冲区 ...

  4. 2018(秋)软工作业 5:结对项目之词频统计——增强功能

     一.基本信息 (1)编译环境:python3.7.1.pycharm2018 (2)结对同学:1613072013 刘赛.1613072011 蒋兆丰   (3)本次作业地址:https://edu ...

  5. 第三次作业(词频统计及其效能分析)

    博客开头给出自己的基本信息,格式建议如下: 学号2017035107122: 姓名:张炜一 码云地址:https://gitee.com/weiyi1208/word_frequency 调用次数最多 ...

  6. 软工作业4:词频统计

    一.基本信息 # 编译环境:Pycharm2018.Python3.7# 项目名称:词频统计--基本功能(结对编程)# 作者: 1613072050:马钰# 1613072051:朱佳豪# 16130 ...

  7. Python文本词频统计

    背景信息 本文实现英文文本词频统计,功能与Mapreduce中的wordcount是类似的.本文主要是为之后词向量训练做准备工作. 本地实现词频统计函数,输入一个文本文件,最终以dict的形式返回词频 ...

  8. 201671010403 陈倩倩 词频统计软件项目报告

    一.需求分析 一个英文文本词频统计的软件开发,其基本需求有: 1.程序可读入任意英文文本文件,该文件中英文词数大于等于1个. 2.程序需要很壮健,能读取容纳英文原版<哈利波特>10万词以上 ...

  9. 个人项目(词频统计及其效能分析)

    1. 博客开头给出自己的基本信息,格式建议如下:   学号:2017*****7212:   姓名:张佳欢;   码云项目仓库:https://gitee.com/zhangjiahuan123456 ...

最新文章

  1. 提高WPF程序性能的几条建议
  2. 【每日一题】4月1日题目 Rinne Loves Edges
  3. data ajax begin,Ajax.BeginForm()知多少
  4. python 3 json 序列化
  5. tomcat 停止 java 线程不停止_Java Tomcat,底层Netty线程不停止
  6. ILS-LDA基于迭代最小二乘的字典学习算法的学习
  7. 5款好看的WordPress博客主题下载
  8. 华为笔记本触摸板使用技巧
  9. php万年历月份处理_使用 PHP 写的万年历接口
  10. 【OpenGL ES】着色语言GLSL
  11. PHP 纯汉字包括生僻字的验证方式
  12. 20165232 结对编程第二周总结
  13. 【许晓笛】 EOS智能合约案例解析(1) 1
  14. 前端面试题总结(包含答案解析)
  15. 国产spfa瞎几把嗨
  16. 用云服务器搭建虚拟主机,用云服务器搭建虚拟主机
  17. php解析mht,php解析mht文件转换成html的实例
  18. 乐优商城之分类查询品牌查询(八)
  19. 数据结构上机——希尔排序(含监视哨版本)
  20. 可能我也没有想到,我能把写文章这件事因为一个小小的念头而坚持下来!

热门文章

  1. 厦门用友烟草软件有限公司——面试
  2. kindeditor上传的视频变为embed标签问题
  3. 《黑马程序员》演讲比赛管理系统实战
  4. 从永远到永远-Docker安装使用(亲测可用)
  5. 数据分析的iloc和loc功能
  6. Sql批量替换某张表中某个字段的某个数值
  7. 楼市政策暖风频吹 部分房企酝酿涨价
  8. CAS:2374782-03-1,NOTA-FAPI-4化学试剂供应
  9. YARN node labels
  10. KindEditor参数详解