随着 AI 的大热,我的好奇心也受到了吸引。阅读了一些文章后发现,Pyhton 是一个非常适合 AI 编程的语言。于是开始了对其打怪升级的探索。

探索中发现,Python 提供丰富的库来帮助开发者们进行数据分析。自己由于工作需要,正好在准备托福写作。于是,当 Python 遇上 Tofel,一场美丽的邂逅便展开了。

目标

笔者完成了 5 篇托福作文后,想分析一下哪些词是我最常用的,进而学习这些词的同义词,扩大词汇量,然后在作文中自由替换。

思路

利用 Python 读取文件

统计每篇文章的词频

合并 5 篇文章的词频

输出前 10 词频的单词

行动

STEP 1:

导出作文

笔者使用 Evernote 进行写作,其支持导出 hmtl 格式文件。导出后,重命名文件方便读取。

重命名

STEP 2:

通过分析 html 文件,我发现正文都在

中。通过查询,发现 BeautifulSoup 库可以帮助处理 html 格式文件。

于是:

def filter_html(html):

soup = BeautifulSoup(html, 'html.parser')

# 需要过滤

标签,避免作文题目干扰

text = soup.body.get_text()

return text

STEP 3:

接下来,需要统计一篇文章中每个单词的出现个数。这里主要用到了 re, collections.counter 两个 Python 内置对象。

def calculate_words_frequency(file):

# 读取文件

with open(file) as f:

# html 处理

f = filter_html(f)

line_box = []

word_box = []

# 转成小写并将句子分成词

line_box.extend(f.strip().lower().split())

# 去除标点符号的影响

for word in line_box:

if not word.isalpha():

word = filter_puctuation(word)

word_box.append(word)

# 统计词频

word_box = fileter_simple_words(collections.Counter(word_box))

return word_box

这里解释一下 filter_puctuation()这个函数。当笔者输出词频结果时,发现由于标点符号的存在,很多单词的尾部会跟着. , or ?

为了避免标点对词频统计的干扰,笔者使用了简单的正则去过滤掉标点。(正则不太会,测试时够用,应该有更简单和全面的写法)

# 过滤单词尾部的,.?"和头部的"

def filter_puctuation(word):

return re.sub(r'(\,$)|(\.$)|(\?$)|(\"$)|(^\")', '', word)

STEP 4:

在测试结果集的时候发现,排名靠前的单词都是介词,代词,连词等常用词。如 he, and, that. 但这些词并不是笔者想要的,于是需要先把常用简单词汇给过滤掉,再统计词频。(我手动敲了一些,应该网上有更全的清单)

def fileter_simple_words(words):

# 过滤词清单

simple_words = ['the', 'a', 'an', 'to', 'is',

'am', 'are', 'the', 'that', 'which',

'i', 'you', 'he', 'she', 'they',

'it', 'of', 'for', 'have', 'has',

'their', 'my', 'your', 'will', 'all',

'but', 'while', 'with', 'only', 'more',

'who', 'should', 'there', 'can', 'might',

'could', 'may', 'be', 'on', 'at',

'after', 'most', 'even', 'and', 'in',

'best', 'better', 'as', 'no', 'ever',

'me', 'not', 'his', 'her'

]

# words type is counter.

for word in list(words):

if word in simple_words:

del words[word]

return words

STEP 5:

快接近尾声啦。在统计完 1 篇文章的词频后,我需要将 5 篇文章的词频求和。鉴于 counter

对象的可加性,于是

def multiple_file_frequency(files):

total_counter = collections.Counter()

for file in files:

total_counter += calculate_words_frequency(file)

return total_counter

STEP 6:

求和之后,我想知道前 10 高频的词汇是哪些。

def most_common_words(files, number):

total_counter = multiple_file_frequency(files)

return total_counter.most_common(number)

STEP 7:

最后,使用 Python 可视化工具把结果生成柱状图。

def draw_figures(figures):

labels, values = zip(*figures)

indexes = np.arange(len(labels))

width = 0.5

plt.bar(indexes, values, width)

plt.xticks(indexes, labels)

plt.show()

Final results

大功告成。

学托福

好不容易算出来了结果,当然要好好利用啦。

通过同义词网站 Thesaurus,我可以查询单词的同义词。Take parents and teachers as examples.

parent thesaurus

image thesaurus

接下来我会选取一些同义词进行记忆,提高自己的词汇量,然后在写作中灵活替换,从而提高写作能力。当然,考试时,也会提高分数。

毕竟 appropriate word choice 是托福写作的一项考核标准。

改进

花了半天时间做这个小 Demo,有一些地方是自己觉得可以以后继续研究的。

简单词的词库更新

自动批量读取文件,无需重命名,手动输入

数据图更直观,美观 (研究 numpy, pandas, matplotlib.pyplot)

结果存储为 cvs,便于日后使用

Reference

python爬取托福_Python 统计托福作文词频相关推荐

  1. python爬取电子书_python爬取计算机电子书(源码移步github)

    摘要:今年第一个项目,python爬取网络上公开的计算机电子书近8000本,在此基础上简要分析计算机专业的发展变迁.部分整理好的书籍下载链接见文末.代码链接见文末. 计算机诞生以来不到100年,学术的 ...

  2. python爬取资料_Python爬取FLASH播放器中的资料

    Python爬取FLASH播放器中的资料. 一.首先了解一下AMF协议:AMF(Action Message Format)是Flash与服务端通信的一种常见的二进制编码模式,其传输效率高,可以在HT ...

  3. python爬取评论_python爬取网易云音乐评论

    本文实例为大家分享了python爬取网易云音乐评论的具体代码,供大家参考,具体内容如下 import requests import bs4 import json def get_hot_comme ...

  4. python爬取王者_python 爬取王者荣耀高清壁纸

    一.前言 打过王者的童鞋一般都会喜欢里边设计出来的英雄吧,特别想把王者荣耀的英雄的高清图片当成电脑桌面 预览一下桌面吧: 是不是看着这样的桌面也很带感,_ (学会这个技术,你可以爬取其他网站的类似图片 ...

  5. python爬取歌曲_python爬取网易云音乐热歌榜实例代码

    首先找到要下载的歌曲排行榜的链接,这里用的是: https://music.163.com/discover/toplist?id=3778678 然后更改你要保存的目录,目录要先建立好文件夹,例如我 ...

  6. python爬取流浪地球_python爬取《流浪地球》获十几万评论点赞,超给力!

    原标题:python爬取<流浪地球>获十几万评论点赞,超给力! 我自己到现在其实还没看这部电影,毕竟这电影这么火,电影院现在都很难买到好的位置.所以我打算不如先看看大家是怎么评价这部电影的 ...

  7. python爬取王者_python爬取王者荣耀全皮肤的简单实现代码

    相信现在很多人都喜欢玩王者荣耀这款手游,里面好看的皮肤令人爱不释手.那么你有没有想过把王者荣耀高清皮肤设置为壁纸,像下面这样 今天就来教大家如何利用python16行代码,实现王者荣耀全部高清皮肤的下 ...

  8. python爬取喜马拉雅_Python爬虫实战案例之爬取喜马拉雅音频数据详解

    这篇文章我们来讲一下在网站建设中,Python爬虫实战案例之爬取喜马拉雅音频数据详解.本文对大家进行网站开发设计工作或者学习都有一定帮助,下面让我们进入正文. 前言 喜马拉雅是专业的音频分享平台,汇集 ...

  9. python爬取网页内容_Python爬虫原理解析

    笔者公众号:技术杂学铺 笔者网站:mwhitelab.com 本文将从何为爬虫.网页结构.python代码实现等方面逐步解析网络爬虫. 1. 何为爬虫 如今互联网上存储着大量的信息. 作为普通网民,我 ...

  10. python爬取天天基金_python多线程+代理池爬取天天基金网、股票数据过程解析

    简介 提到爬虫,大部分人都会想到使用Scrapy工具,但是仅仅停留在会使用的阶段.为了增加对爬虫机制的理解,我们可以手动实现多线程的爬虫过程,同时,引入IP代理池进行基本的反爬操作. 本次使用天天基金 ...

最新文章

  1. Task中的异常处理
  2. Mocha Pro 2020中文版
  3. mysql workbench建表时PK,NN,UQ,BIN,UN,ZF,AI
  4. QT绘制变焦线(Zoom Line)
  5. 运行在TQ2440开发板上以及X86平台上的linux内核编译
  6. sql 替换text字段中的指定字符
  7. Kaggle新上比赛预测地震-总奖池5万美金
  8. IOS学习笔记03---C语言概述
  9. 上午的工作多以学习为主
  10. java 高斯投影_高斯投影正算公式以及java代码
  11. android条码扫描串口,串口条码扫描器的正确安装方法[图解]
  12. paypal如何支付欧元_涨姿势!Paypal怎么用?
  13. python r语言 作图_科学网—生物信息绘图之python绘图 - 孙朋川的博文
  14. 魅族pro5 刷机 android,魅族 PRO5中文Recovery刷机教程
  15. Cocos Creator 开发微信小游戏 打包上线
  16. 综述:基于深度学习的文本分类 --《Deep Learning Based Text Classification: A Comprehensive Review》总结(二)
  17. 尤里复仇退出界面_红色警戒2、尤里的复仇win10卡死、分辨率太大、黑屏问题多种解决方法(已测)...
  18. autoit3模拟鼠标点击之MouseClick
  19. 拼多多跨境电商如何快速上架商品?
  20. 一个屌丝程序猿的人生(九十四)

热门文章

  1. mysql 把时间戳转时间格式_mysql时间戳转成常用可读时间格式的两种方法
  2. 上海浦东软件园评测中心:第三方软件测试力量 为IT应用赋能
  3. Collection coll = new ArrayList() 为什么可以这么写!!!
  4. 文艺复兴的核心是“以人为本”:圣母百花大教堂(Duomo)
  5. javascript的原型
  6. 临近年底企业利润高、所得税税负重,如何合规解决?
  7. Python验证码识别
  8. 找工作就像找对象,愿程序员不再孤单
  9. kerl管理erlang版本
  10. 孙鑫 第十七课进程间通信之三 命名管道