# 计算机英语词频统计
### 项目介绍
使用python3.7编写,统计wikipedia,stackoverflow等网页计算机相关的信息,分析出频率出现最高的英语词汇,提高计算机专业相关人员背单词的收益率。
### 软件架构
本程序提供多进程+协程的方式以及多线程+协程两种方式启动。
>settings模块保存启动方式的参数,和一些配置相关的数据。
>model.models模块保存ORM的数据库模型。
>log模块提供创建log对象的统一接口。
>statistics模块提供统计信息的接口。
>utils模块提供一些通用的工具类函数。
>wordStandarzized模块提供单词词性标准化的功能。
>wordCount模块解析数据库中的标准化后的文章,提供词频统计功能。
>wordTranslate模块从使用有道词典Web去获取单词的翻译。
>pdfCreator模块解析已经分析好的词频数据库,组装成HTML Table,然后转换为PDF
>datastore模块提供数据库操作的统一接口。
>task模块提供程序启动的入口,根据settings模块的参数不同,可以使用多进程+协程和多线程+协程的方式启动。
>wikipedia模块解析wikipedia网站计算机相关话题,采用协程的方式解析URL和文章内容,并且将无用的信息剔除,将单词的词性标准化。
### 安装教程
本软件使用docker部署方式
需要安装docker环境:[docker安装教程](https://yeasy.gitbooks.io/docker_practice/content/install/)
#### 启动解析单词的任务:
```
docker run -it -v ~/wordcountData:/root/code/data bingfengfeifei/wordcount start
```
其中~/wordcountData是填写自己环境的一个空目录,用于存放docker的数据和生成的单词表文件。生成的单词表也从这个目录获取
#### 启动生成单词表的任务:
```
docker run -it -v ~/wordcountData:/root/code/data bingfengfeifei/wordcount create 1000
```
最后的参数create 1000,代表TOP1000频率的单词的单词表。其中1000可以填写其他的数值,也可以不填,默认为5000
### 使用说明
0. 如果仅查看单词表,可直接点击项目的[wordlist.pdf](https://gitee.com/bingfengfeifei/wordCount/raw/master/wordlist.pdf)下载我已经跑好的pdf。
1. 代码运行需要使用python3.7版本,用于支持asyncio的最新语法特性
2. 本软件在deepin linux系统下面编写,使用了linux平台相关的库fcntl,未对windows系统支持。
3. 本软件使用了第三方库:
#### aiohttp
```
pip3 install aiohttp
```
#### bs4(beautifulSoup):
```
pip3 install bs4
```
beautifulSoup使用了lxml作为html的解析库,需要安装lxml
```
pip3 install lxml
```
#### sqlalchemy:
```
pip3 install sqlalchemy
```
#### pdfkit:
```
pip3 install pdfkit
```
pdfkit依赖wkhtmltopdf,需要使用下面的命令安装
```
ubuntu: sudo apt-get install wkhtmltopdf
centos: yum install wkhtmltopdf
```
#### nltk:
```
pip3 install nltk
```
注:nltk依赖需要第三方模块,实际运行时会有提示,可以根据提示下载,速度有些慢。
nltk依赖模块安装:
python3进入python交互式命令行,安装依赖模块
```
>>> import nltk
>>> nltk.download('punkt')
>>> nltk.download('averaged_perceptron_tagger')
>>> nltk.download('wordnet')
```
4. 启动方式
启动解析词频数据任务:
```
python3 task.py
```
分析结束生成单词表:
```
python3 pdfCreator.py
```
### 软件运行效果
> 运行过程
![输入图片说明](https://images.gitee.com/uploads/images/2018/1025/234902_25e6d83a_347427.png "运行截图.png")
> 生成单词表截图
![输入图片说明](https://images.gitee.com/uploads/images/2018/1027/000728_eb44fd6d_347427.png "1.png")
![输入图片说明](https://images.gitee.com/uploads/images/2018/1027/000739_208f3eec_347427.png "2.png")
### 参与贡献
1. Fork 本项目
2. 新建 Feat_xxx 分支
3. 提交代码
4. 新建 Pull Request
### 码云特技
1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md
2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com)
3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目
4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目
5. 码云官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help)
6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
一键复制
编辑
Web IDE
原始数据
按行查看
历史