背景

作为一个程序员,经常需要阅读英文论文、文档、书籍。对于一些基础不好的同学来说,最主要的拦路虎是英语单词。计算机类文档不同于小说,其语法、句式都比较简单,可以说只要词汇量有了,阅读就很简单。

如果能在平时提高词汇量,那是最好不过了。鸡汤警告!你必须暗自努力,然后惊艳所有人!这句话打在这里没毛病吧,老铁。但无所侧重地背普通英语字典,恐怕效率并不高。不提前学习单词,直接上手阅读,遇到生词再查,效率也提升不起来。

这里介绍一个针对专业文档背单词的方法:把当前文档的所有单词,建立一个专属字典,先背诵这个字典,再去看书,一定能一目十行。

思路

总体思路是文件分词统计,查找字典,生成新字典。

•首先,有一个需要阅读的英文文档,给它分词,按照单词频率排序;•找一个已掌握的英语词汇表(四六级或考研等),把上文中的单词和本词汇表重复的项删除;•再找一个词汇量大的字典,在其中查找对应解释;•把结果存储到一个字典文件中。

得到的字典,就是这本书的专属字典了。业余背这个字典,相当于掌握了计算机专业英语。这个方法也适用于机械、电子等等任何专业英语的地方。

实现

下面,以 Python 神作《Fluent Python》为例,用 Python 自带的库实现分词、统计功能。首先看下它的内容梗概。

Fluent Python CLEAR, CONCISE, AND EFFECTIVE PROGRAMMINGLuciano Ramalho......

分词

首先来分词。

from collections import Counter
import re
ct2 = Counter()
patt = re.compile(r'\w+')
with open('f1.txt','r',encoding='utf-8') as f:for l in f.readlines():ws = (n.lower() for n in patt.findall(l))ct2.update(ws)

以上代码中,导入了 Counter 和 re 模块。

Counter 负责统计单词词频,re 正则表达式分割英语单词。得到结果 ct2 中是所有单词的词频。

下面,把它保存下来。

with open('result_f1.txt','w',encoding='utf-8') as f:f.write(''.join(('%s %s\n'%(a,b) for a,b in ct2.most_common())))

现在,result_f1.txt 中存储的是这本书出现的单词,而且是按照词频排序的,如下。

the 12414
a 5639
of 4900
in 4837
to 4689
is 3848
......

和预想得很像,排名靠前的基本是介词等常用词。

另外,比较有意思的数据是,《Fluent Python》共使用词汇 9118 个,其中出现一次的单词有 3168 个。出现频次最高的 the 达到 12000 次。它的分布图如下。

载入字典

下载一个比较全的字典,十万个单词。载入内存,存储在字典数据变量 dicts 中。

这是 dict 结构第一次真正存储字典!

dicts = dict()
with open('103976.txt','r',encoding='gbk') as f:for l in f.readlines():k = l[0:l.find('\t')]v = l[l.find('\t')+1:]dicts.update({k:v})

删除认识的单词

字典当中大量的 the a is,相当挑战我们的容忍度,这让旁人看了,还以为我们小学没毕业呢。去掉去掉……

众所周知,我们采用了小学二年级就掌握的 postgrade.txt 英文字典。

postgrade.txt 同学们肯定耳熟能详。神奇的是第一个单词。abandon vt.离弃,丢弃;遗弃,抛弃;放弃

with open('postgrade.txt','r',encoding='utf-8') as f:f.readline()for l in f.readlines():k = l[:l.find(' ')]try:del dicts[k]except KeyError as e:pass

现在,字典 dicts 中,仅仅剩下所我们不认识的,103976 - 5000 = 98976 个单词了。

生成新字典

以词频单词来查找单词表,再把单词和释义存到新单词表中,就得到新单词表了。

with open('f1_res.txt','w',encoding='utf-8') as wf,open('result_f1.txt','r',encoding='utf-8')as f:for l in f.readlines():k = l[:l.find(' ')]v = dicts.get(k,None)if v:wf.write('%s %s'%(k,v))
wf.close()

这里第一句,两个 with 可以写到一句话里。这样代码看起来比较和谐。

查字典方法,使用v = dicts.get(k,None),这样查不着的单词,返回 None,写入新字典时判断这个值,就可以了。

总结

除此处介绍的生生单个文档字典外,还可多拿几个领域专业文档,提取它们的常用单词,然后生成专属字典,这字典,相当于相关领域的专业英语字典。

这里使用 Python 自带库写程序,效率可能不高。如果需要,可以使用 pandas 之类的库来实现,提高效率。

⑥项目源码案例分享有

如果你用得到的话可以直接拿走,在我的QQ技术交流群里群号:948351247(纯技术交流和资源共享,广告勿入)以自助拿走

点击这里 领取

新技能get!用 Python 高效背单词!相关推荐

  1. 背单词软件 单词风暴 分享id_周一考研高效背单词系列(一):利用单词软件如何背好单词...

    高效背单词 考研单词作为考研路上的第一大难关,相信很多小伙伴都在这上面吃过不少苦,有同学更是看到密密麻麻的大纲词汇就头疼,但只要是学习就是有方法的,今天,我们开始推出高效背单词系列--墨墨背单词. 另 ...

  2. python单词软件哪个好_利用Python分析背单词软件的惊人真相

    摘要:利用python分析背单词软件,揭秘你不知道的惊人真相 0×00 前言 你想知道背单词软件有大概多少人注册第一天都没有背完嘛 你想知道背单词软件这么火,这么多人在使用,真的有多少人真的在背诵嘛 ...

  3. Emscripten 单词_极光单词独创多种学习方法助您高效背单词

    英语大概是学生抱怨最多的学科,大多数人英语不好都是因为单词不过关,如果你觉得背单词很难坚持下去,也希望像学霸一样成绩芝麻开花节节高,或许你也可以试试极光单词.体验过极光单词,才发现学习英语并没有这么难 ...

  4. python写背单词软件_python实现屏保程序(适用于背单词)

    今天要给大家分享的是一款自己写的屏保程序,大学大家最头疼的就是四六级的考试了,上次考试做阅读的时候,情不自禁的发呆,想着如果我能在电脑上写一个屏保程序,那么就可以天天记单词了! 开始 首先:我们使用的 ...

  5. python编写背单词程序

    目录 1 功能介绍 2 文件准备 3 源码 一年多前初学python时写的代码,这里分享给大家. 1 功能介绍 首先运行程序,进入欢迎界面.如下图,界面是一个小方框,可以选择词库,默认是六级词库. 选 ...

  6. Python制作背单词exe

    使用python编写的背单词程序,可以更快捷,更环保的背单词 以8上英语第8单元的前20个单词为例: import random                   #导入随机库 a = {'1': ...

  7. python关于疫情新手项目_快来看看我趁着疫情学的新技能(分享python学习途中的优质资源)...

    快来看看我趁着疫情学的新技能(分享python学习途中的优质资源) 2020-03-10 18:10:53 23点赞 315收藏 8评论 创作立场声明:我也是第一次学python,下面搜罗的网站在我的 ...

  8. python写背单词软件_python背单词小程序

    import random as t #创建单词序列 words=("easy","difficult","answer","co ...

  9. 用python自制背单词程序_c++自制背单词应用

    文件结构: 背词历史.log 用来存放背过的单词,存放的格式是 年-月-日 时:分:秒 单词 词性 中文解释 生词本.txt 用来存放当下要背诵的单词列表,格式是 单词 词性 中文解释 历史记录.tx ...

最新文章

  1. C#程序可将文本文件藏于位图中,也可导出
  2. Spring Context 你真的懂了吗?
  3. js 函数调用顺序研究
  4. SecureCRTPortable - 破解
  5. [Swift]LeetCode1146. 快照数组 | Snapshot Array
  6. uniapp页面传参使用encodeURIComponent转义特殊符号
  7. MYSQL临时表创建索引
  8. 经纬度距离,修改系统时间,读取ini文件
  9. Java教程:Java String字符串和整型int的相互转换
  10. GNU make manual 翻译( 一百六十二)
  11. CentOS 6.6下PXE+Kickstart无人值守安装操作系统
  12. linux iphone 存储空间,iOS 11 将会自动删除低使用率 App来释放 iPhone 存储空间
  13. C#.NET开源反编译工具ILSpy下载
  14. 爬取百度迁徙2021年春运迁徙数据(仅省份级别)
  15. 线性代数 --- 线性代数中的一些特殊矩阵(被广泛用于高斯消元法的消元矩阵E)(个人笔记扫描版)
  16. Unity如何查看当前内存使用情况
  17. 关于springboot自动注入出现Consider defining a bean of type 'xxx' in your configuration问题解决方案...
  18. App开发 - 谈谈App架构的演进
  19. XU316-1024-熙光技术
  20. LPC1768学习笔记

热门文章

  1. 大学想选择计算机专业,零基础如何快速学习编程?都是经验之谈
  2. 格调高又小众的EPUB 阅读器(转载)
  3. 谁都可以抱怨监管,唯独蚂蚁不应该
  4. html5 高度 满屏,HTML5 全屏特性
  5. 《PHP与MySQL程序设计(第四版)》中第73页4.2.6节分期还贷计算器数学原理分析
  6. XTP Python Api 接口编译
  7. 10款热门的企业报表工具软件,该如何选择?
  8. 缓存之王 | Redis最佳实践开发规范FAQ
  9. H5页面分享到朋友圈,自定义标题描述封面图 前端+php代码
  10. 为什么被水弄湿的纸干了后会变皱?