软工作业4:词频统计
一、基本信息
# 编译环境:Pycharm2018、Python3.7# 项目名称:词频统计——基本功能(结对编程)# 作者: 1613072050:马钰# 1613072051:朱佳豪# 1613072052:申可佳
二、项目分析
Task1:基本任务
主要需要解决二个问题:1、统计文件的有效行数;2、统计文件的单词总数(其中特殊定义了单词的定义);3、将数据存储在文本中
1、统计文件的有效行数
lines = len(open(dst, 'r').readlines())
2、使用正则表达式统计文件的单词总数
def process_buffer(dst, phrase_words, regex):words = open(dst, 'r', encoding="gb2312").read() # 文本读取bvffer = words.lower() # 将文本内容都改为小写# 将文本中的缩写都替换bvffer = bvffer.replace('’t', '')bvffer = bvffer.replace('’m', '')bvffer = bvffer.replace('’s', '')bvffer = bvffer.replace('’ve', '')for i in range(len(phrase_words)): # 将文本中的“停词”删除掉bvffer = bvffer.replace(' ' + phrase_words[i] + ' ', ' ')result = re.findall(regex, bvffer) # 正则查找词组word_freq = {}for word in result: # 将正则匹配的结果进行统计word_freq[word] = word_freq.get(word, 0) + 1return word_freq
3、将数据存储在文本中
def input_result(dst, lines, words, items): # 写入文件with open(dst, 'w') as w:w.write(lines)w.write(words)for item in items: # 格式化item = '<' + str(item[0]) + '>:' + str(item[1]) + '\n'w.write(item)print('写入result文件已完成!')w.close()
Task2.1:支持停词
def process_buffer(bvffer, dst):txt_words = open(dst, 'r', encoding="iso-8859-1").readlines() # 读取停词表文件stop_words = [] # 存放停词表的listfor i in range(len(txt_words)):txt_words[i] = txt_words[i].replace('\n', '')# 写入list要将换行符取代stop_words.append(txt_words[i])if bvffer:word_freq = {} # 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freqbvffer = bvffer.lower() # 将文本内容都改为小写for ch in '“‘!;,.?’”': # 除去文本中的中英文标点符号bvffer = bvffer.replace(ch, " ")words = bvffer.strip().split()# strip()删除空白符(包括'/n', '/r','/t');split()以空格分割字符串for word in words:if word in stop_words: # 如果word在停词表里就跳过continueelse:word_freq[word] = word_freq.get(word, 0) + 1return word_freq
Task2.2:查看常用的短语
def create_stop_words(dst): # 创建停词表txt_words = open(dst, encoding='gb2312').readlines() # 文本读取phrase_words = [] # 存放停词表的listfor i in range(len(txt_words)):txt_words[i] = txt_words[i].replace('\n', '')# 因为读取文本是readlines所以写入list要将换行符取代phrase_words.append(txt_words[i])return phrase_wordsdef process_buffer(dst, phrase_words, regex):words = open(dst, 'r', encoding="iso-8859-1").read() # 文本读取bvffer = words.lower() # 将文本内容都改为小写# 将文本中的缩写都替换(进过程序发现以下是最常见的)bvffer = bvffer.replace('’t', '')bvffer = bvffer.replace('’m', '')bvffer = bvffer.replace('’s', '')bvffer = bvffer.replace('’ve', '')# 其实上面的替换可以防在停词中但是涉及到空格等问题就放在前面直接替换了for i in range(len(phrase_words)): # 将文本中的“停词”删除掉,这样会使结果很清晰更能接受bvffer = bvffer.replace(' ' + phrase_words[i] + ' ', ' ')result = re.findall(regex, bvffer) # 正则查找词组word_freq = {}for word in result: # 将正则匹配的结果进行统计word_freq[word] = word_freq.get(word, 0) + 1return word_freq
2.2、程序运行案例截图
Task:基本任务
WordCount.py的运行结果:
Task2.1:支持停词
Task2.2:查看常用的短语
三、性能分析
Task2.2的运行时间的截图和性能表:
四、其他
结对编程时间开销:经过大概一个星期的研究、讨论。
- 结对编程照片
五、事后分析与总结
结对编程是一个相互学习、相互磨合的渐进过程,因为三人平时关系就很不错,三人都很认真的完成本次任务,所以本次的结对编程是很愉快的。通过本次结对编程我们也充分的认识到了合作的重要性,一个人编程不免要犯这样那样的错误,结对编程就很好的避免了这样的问题,三人相互学习,相互补充。而且结对编程能提供更好的设计质量和代码质量,两人合作能有更强的解决问题的能力。还有就是,结对编程让有些许枯燥的编程,变得有趣。
转载于:https://www.cnblogs.com/Zhujh233/p/9825358.html
软工作业4:词频统计相关推荐
- 软工作业3—词频统计
一.案例课程分析 1.编译环境 pycharm2018.python3.7 2.读文件到缓存区(process_file(dst)) def process_file(dst): # 读文件到缓冲区 ...
- 软工作业 5:词频统计——增强功能
一.基本信息 1.1 编译环境.项目名称.作者 1 #编译环境:python3.6 2 #项目名称:软工作业5-词频统计-增强功能 3 #作者:1613072055 潘博 4 # 1613072056 ...
- 第一次软工作业展示——潘学
第一次软工作业完成啦! 回首这个作业的完成过程,我是很有收获.这个作业有几个难点:1.在给定目录下读取TXT文件的内容:2.从读到的内容中分析出单词:3.统计单词的出现频率并输出. 我之前只学习过C和 ...
- 第三次软工作业——实现最大字段和算法并进行判定条件覆盖
第三次软工作业 实现最大子段和的算法并进行条件组合覆盖测试 (一)什么是最大子段和? 我自己的理解: 一个数组可以若干个子数组,包含自身.每一个字数组都有一个数组元素之和,求这些和之间的最大值. 最朴 ...
- 第一次软工作业(构建之法)
第一次软工作业(构建之法) 关于构建之法的若干个问题 1.第一章32页,原文:"有人认为,"中文编程",是解决程序员编程效率的一个秘密武器,请问它是一个"银弹& ...
- 第一次软工作业(数独)
第一次软工作业(数独) 1.该项目的github地址: https://github.com/514DNA/sudoku 2.各个模块耗费的时间: PSP2.1 Personal Software P ...
- java大作业国际比赛奖牌榜,java大作业之词频统计
[实例简介] 开发工具idea,统计方式为java8的stream方式,不是传统的字节流统计方式,内含答辩PPT以及统计单词的文本,配置好后可直接使用 [实例截图] [核心代码] java大作业之词频 ...
- 软工作业3: 词频统计
词频统计 一.编译环境 (1)IDE:PyCharm 2018 (2)python版本:python3.6.3(Anaconda3-5.1.0 ) 二.程序分析 (1)读文件到缓冲区(process ...
- 2019/3/14 软工作业
自我介绍 2017xxxxx1066:我是骆树仁:我的爱好是揉白泽球: 我的码云个人主页是:https://gitee.com/sturdast/events 我的第一个项目地址是:https://g ...
最新文章
- 日志排查问题困难?分布式日志链路跟踪来帮你
- 简单编程代码_好了好了,不闲扯了,我们开始学编程了
- 程序员伤不起的年龄——30岁
- WIN10安装ubuntu全过程
- Node.js模块之Buffer
- P2947-[USACO09MAR]向右看齐Look Up【单调栈】
- 制造业物料清单BOM、智能文档阅读、科学文献影响因子、Celebrated Italian mathematician ZepartzatT Gozinto 与 高津托图...
- iOS 使用 socket 即时通信(非第三方库)
- c++11 多线程编程(三)------ 竞争和互斥锁
- three轨迹线在mapbox地图上显示
- Linux 基础——权限管理命令chown、chgrp
- Synchronized与ReentrantLock区别总结(简单粗暴,一目了然)
- paip.discuz x2.5 用户及积分账户的接口attilax总结
- 使用Windows自带工具校验文件MD5
- 如何进行业务需求分析
- 人脸识别技术开发解决方案,人脸识别智慧工地应用开发
- 论文笔记 Acquiring Common Sense Spatial Knowledge through Implicit Spatial Templates (AAAI2018)
- springboot聚合工程讲解与部署
- JS 超大文件上传解决方案:分片断点上传(一)
- Exchange 2010 修改附件大小限制
热门文章
- 大厂程序员年薪_年薪25万一线大厂程序员,年薪10万三线城市大专讲师,怎么选...
- html 自动完成,如何指定 form或 input元素是否应在HTML中启用自动完成功能?
- 约瑟夫环数据结构c语言程序,数据结构的C语言(类C语言)--单向循环链表--约瑟夫环...
- linux读写文件测试,Linux下各种主要文件系统的读写性能测试
- 有php注入的源码,php注入3_php
- centos rpm
- 3.8 激活函数的导数
- git remote(远程仓库操作)
- 数据结构之基于Java的顺序队列实现
- 分享一下把pdftk的合并pdf功能添加到TC(Totalcommander)