前言
任何语言的学习,最重要的就是词汇。对于英语也是一样。你回想下上学期间你为了考英语,背了多少单词。为了考四六级,抱着厚厚的词汇书开始从头背起。然而看着单词书几千的单词,背了每几天就放弃。效率十分低下。四级能否过,全凭运气,学霸除外。换个思维,我们是程序员,就要利用好我们手中的工具。如果我们能从历年来的真题,分析每个单词的频率,我们是不是只要把高频单词背完就可以。以后的任何英语考试,只要你有真题,就能统计出最高频率的单词。想想就非常的激动,这可以为我们省去多少的资料费。
四六级真题单词词频统计
统计出的词频学习计算机语言,最好的方法,就是用所学的知识去解决现实的问题。最近「从零开始 Python 系列」也基本把基础的知识都讲了。如果你对于 Python 基础知识有所了解,接下拉就是用大量的练习来巩固这些基础知识。今天就为大家讲解下如何利用 Python 去解析英语真题卷,每个单词出现的频率。这对于还在读书的学生来说,对你考英语是非常的有帮助。
程序思路
程序所有文件写程序最怕就是摸着石头过河,不知所措。没有对于实际问题有个大体的分析。真题词频统计,首先你应该找到真题的文档。我通过上网下载到以往的四六级真题试卷,这些资料上网搜索下就很容易找的到。有了文档就要开始确定用什么库来解析。我在网上找到的文档是 doc 文档,即 word 的文档。word 的文档可以使用 win32com 库来解析。现在文档通过 win32com 库可以被程序所识别,我们就可以开始分析。有了数据,我们就可以开始处理数据。词频统计,一个是单词,一个是单词的频率。很容易就想到用到字典数据结构,来存储我们的数据。key 为所要统计的单词,value 是单词出现的频率。统计完以后,重新整理成新的字典,批量输出。最后画出图表。
前期准备
由于是要用到读取 doc 文档的操作和画图表,所有你要事先 pip:win32com、matplotlib。win32com 用来读取 word 文档,以及转换成 txt 文档。matplotlib 经典的画图库,用来画我们的图标。
Word2Txt.py
Word2Txt.py 是用来把需要解析的真题试卷文档转换成 txt 文档,保存到文件夹「2」中,便于我们操作。真题试卷所有的文档都保存在「1」文件夹里,这里一共有 11 份。当然你可以继续添加真题试卷,只要你手上有真题试卷的文档。
在 Word2Txt.py 中主要有两个函数:closesoft()、Translate(path)。分别是用来关闭 WPS 程序,和批量转换 word 文档成 txt 文档。具体的代码如下:
closesoft() Translate(path)StaWord.py
StaWord.py 是用来把文件夹「2」下的转换好的 txt 文本,进行词频统计。代码并不是很难,其中要注意的一段代码是:
正则匹配这里用到了 lower() 函数,把单词转换成小写,并且用正则表达式匹配所有的字母,过滤掉所有非字母的字符。这段代码并不是很好理解,需要你对正则表达式有一定的了解。遇到自己不懂的地方,一定要停下自己的脚步。一个个代码去查找相应的资料,这样你才能有所提升。
在 StaWord.py 主要有 3 个函数:draw(data, num)、input(file_path, data)、comm(path)。分别是用于画图表、输出统计后的 txt 文本、处理当前目录先所有的 txt 文本统计词频。
draw(data, num) input(file_path, data) comm(path)Test.py
Test.py 就是调用每个具体的函数。
Test.py
写在最后
程序的大体思路我都已讲解完,当然每个人对应的水平都不同。有人觉得上述的代码很简单,但有些人却觉得很难。当你在读别人的代码时,一定要记住你要读懂每一行代码,你要懂得每行代码所代表的操作。如果你遇到不懂得地方,停下来,思考,查资料,宁愿花更多得时间,也不去追求战略上的满足感。我已经把全部的代码一行行的看过去,虽然有些地方我没看懂。但我看完了!好满足!好有成就感!实际上你也只是看完了代码,根本就没有吸收到什么。
源代码和文件我都已上传到 Github 上,如果你需要下载可以去:
https://github.com/chihaiyishen/-Python
自行下载。觉得不错的话,可以点个 Star,以后公众号的代码都会上传到这个库中。
痴海欢迎关注我的公众号「痴海」,每天都会更新 python 知识。后台回复「python资料」,免费领取 2018 最新 python 教学视频。
网友评论