一、程序分析

(1)将文件读入缓冲区(dst指文本文件存放路径,设置成形参,也可以不设,具体到函数里设置)

def process_file(dst): # 读文件到缓冲区try: # 打开文件

txt=open(dst,"r")

except IOErrorass:

print sreturnNonetry: # 读文件到缓冲区

bvffer=txt.read()

except:

print"Read File Error!"

returnNone

txt.close()return bvffer

(2)设置缓冲区,将文本度数缓冲区,并对文本的特殊符号进行修改,使其更容易处理,并读入字典。

def process_buffer(bvffer):ifbvffer:

word_freq={}

# 下面添加处理缓冲区 bvffer代码,统计每个单词的频率,存放在字典word_freq

bvffer=bvffer.lower()for x in '~!@#$%^&*()_+/*-+\][':

bvffer=bvffer.replace(x, " ")

words=bvffer.strip().split()for word inwords:

word_freq[word]=word_freq.get(word,0)+1

return word_freq

(3)设置输出函数,运用lambda函数对词频排序,并以“词”——“频”格式输出

def output_result(word_freq):ifword_freq:

sorted_word_freq= sorted(word_freq.items(), key=lambda v: v[1], reverse=True)for item in sorted_word_freq[:10]: # 输出 Top 10的单词

print item

(4)封装main函数,以便接下来的cProfile的性能评估

def main():

dst= "Gone_with_the_wind.txt"bvffer=process_file(dst)

word_freq=process_buffer(bvffer)

output_result(word_freq)if __name__ == "__main__":

import cProfile

import pstats

cProfile.run("main()", "result")

# 直接把分析结果打印到控制台

p= pstats.Stats("result") # 创建Stats对象

p.strip_dirs().sort_stats("call").print_stats() # 按照调用的次数排序

p.strip_dirs().sort_stats("cumulative").print_stats() # 按执行时间次数排序

p.print_callers(0.5, "process_file") # 如果想知道有哪些函数调用了process_file,小数,表示前百分之几的函数信息

p.print_callers(0.5, "process_buffer") # 如果想知道有哪些函数调用了process_buffer

p.print_callers(0.5, "output_result") # 如果想知道有哪些函数调用了output_res

二、代码风格说明

缩进

使用4个空格进行缩进

def process_buffer(bvffer):ifbvffer:

word_freq= {}

行宽

每行代码尽量不超过80个字符

本次编程最长一行代码(算上下划线和空格):78个字符

sorted_word_freq = sorted(word_freq.items(), key=lambda v: v[1], reverse=True)

import语句

分行书写import语句

import cProfile

import pstats

三、程序运行命令、运行结果截图

词频统计结果截图

四、性能分析结果及改进

执行次数最多:

执行时间最多:

四、性能分析结果及改进

综合执行次数最多和时间最长,我们可以发现,字典中的get方法是所有话数里用的最多的,要想减少时间,我们可以从替换的符号入手,因为名著《飘》不是一个数学学术性的报告之类的,所以想@#¥%……&*这些之类的符号基本不可能在这本书里出现,所以在规范文本的过程中,我们可以减去对这些符号的替换修改。下面是两次时间和调用次数的前后对比图。

for x in '!%()_/-\][':

bvffer=bvffer.replace(x, " ")

前:

后:

由此可见快乐大约0.016秒左右。

五、可视化操作

下载gprof2dot.py将此一个PY(无需将一整个文件夹放入)放到词频统计的相同目录,在graphviz官网下载zip文件,解压,并将其bin目录添加到系统的环境变量里。

1. 性能分析:python -m cProfile -o result -s cumulative word_freq.py Gone_with_the_wind.txt;分析结果保存到 result 文件;

2. 转换为图形;gprof2dot 将 result 转换为 dot 格式;再由 graphvix 转换为 png 图形格式。

命令:python gprof2dot.py -f pstats result | dot -Tpng -o result.png注意:要通过cmd进去词频的py程序的目录,在其中输入代码(必须保证已经有了result文件,不然无法找到目标文件)

最后结果分析如下:

python统计词频_python统计词频相关推荐

  1. python如何打开txt文件、并算词频_python TF-IDF词频算法实现文本关键词提取代码...

    TF(Term Frequency)词频,在文章中出现次数最多的词,然而文章中出现次数较多的词并不一定就是关键词,比如常见的对文章本身并没有多大意义的停用词.所以我们需要一个重要性调整系数来衡量一个词 ...

  2. python做统计字符_python统计字符个数

    Python count()方法 描述 Python count() 方法用于统计字符串里某个字符出现的次数.可选参数为在字符串搜索的开始与结束位置. 语法 count()方法语法: str.coun ...

  3. python词频统计代码_python统计词频

    一.程序分析 (1)将文件读入缓冲区(dst指文本文件存放路径,设置成形参,也可以不设,具体到函数里设置) def process_file(dst): # 读文件到缓冲区try: # 打开文件 tx ...

  4. python统计词频_Python统计四六级考试的词频

    Python统计四六级考试的词频 此文首发于公众号 「Python知识圈」, 欢迎直接去公众号查看 阅读文本大概需要 4.6 分钟. 今天是教师节,先祝天下所有老师教师节快乐,感谢您在我学生时代对我的 ...

  5. python统计word词频_python统计word文档中的词频

    如何将统计word文档中的词频呢?先用docx模块将word文档转变成txt格式,然后使用jieba模块进行分词,并统计词频.是不是很简单- #2020年3月10日 #Elizabeth from d ...

  6. python四级考试_Python统计四六级考试的词频

    现在是开学之初,风华正茂的青年才俊们应该已经在图书馆占好了座位,开始备战 6/12 月份的英语四六级考试了吧!想当年,pk 哥四级考试前也在图书馆待了一阵子,后来四级考了 450 分惊险过关,六级考试 ...

  7. python excel处理重复行并统计个数_python统计一个文本中重复行数的方法

    python统计一个文本中重复行数的方法 这篇文章主要介绍了python统计一个文本中重复行数的方法,涉及针对Python中dict对象的使用及相关本文的操作,具有一定的借鉴价值,需要的朋友可以参考下 ...

  8. 怎么用python统计字数_Python统计字数的思路详解

    这篇文章主要介绍了Python 统计字数的思路详解,文中还给大家提供了不借助第三方模块的解决方法,感兴趣的朋友一起看看吧 问题描述: 用 Python 实现函数 count_words(),该函数输入 ...

  9. python中文词组统计次数_python统计中文词组出现次数

    2018年9月7日在百度google没有找到python统计中文词组的,查出来的都是统计英文单词,词组的,所以我想来实现python中文词组统计分享. 首先我是用textrank4zh库将句子转化成词 ...

最新文章

  1. mootools1.3.1源码解读
  2. 零基础Java学习之构造器
  3. Springboot学习问题记录
  4. android 监听布局改变,Android通过监听最外层布局的改变监听键盘的状态,软键盘的弹出和收起都会改变外层布局(前提是把Activity的mode设置成压缩);...
  5. c语言实验四报告,湖北理工学院14本科C语言实验报告实验四数组
  6. [02] JSP内置对象
  7. 使用C语言----修改密码
  8. HDU1370 Biorhythms【中国剩余定理】
  9. linux系统中命令执行的优先级以及命令格式
  10. What?什么是区块链?你不知道就太low了
  11. MySQL使用EXPLAIN查看SQL的执行计划
  12. 常用quartz表达式
  13. Word 2007 删除页眉横线
  14. 备战二级之MSOffice部分
  15. vray物理相机具体参数
  16. C语言进阶 之 字符串函数(4)
  17. SpringMVC框架从入门到精通
  18. 《iOS用户体验》总结与思考-修改版
  19. Python3 03 网络爬虫 <下载漫画>
  20. 云场景实践研究第72期:领克汽车

热门文章

  1. [ES6] 细化ES6之 -- Class关键字
  2. css常用单位px、em、 rem 区别与各自的用法解析
  3. C++之 字符串拷贝函数(面试题目)
  4. php加密数据解密,php 数据加密解密
  5. 基于pyQt的按键响应程序,实现按下按键进行图片曝光(按下按钮,运行另一个曝光图片程序.py)
  6. java 分层领域模型_Java领域模型 | 学步园
  7. pdf在html网页中打开是乱码,pdf.js浏览中文pdf乱码的问题解决
  8. c语言程序设计基础项目教程,C语言程序设计基础项目教程
  9. 学php记不住函数,为什么都是记不住PHP 的函数名
  10. 从0开始做Windows Phone 7开发