百科狗-知识改变命运!
--

用 Python 高效背单词

是丫丫呀2年前 (2023-11-21)阅读数 35#技术干货
文章标签字典

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

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

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

思路

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

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

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

实现

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

FluentPython

CLEAR,CONCISE,ANDEFFECTIVEPROGRAMMING

LucianoRamalho

......

分词

首先来分词。

fromcollectionsimportCounter

importre

ct2=Counter()

patt=re.compile(r'\w+')

withopen('f1.txt','r',encoding='utf-8')asf:

forlinf.readlines():

ws=(n.lower()forninpatt.findall(l))

ct2.update(ws)

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

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

下面,把它保存下来。

withopen('result_f1.txt','w',encoding='utf-8')asf:

f.write(''.join(('%s%s\n'%(a,b)fora,binct2.most_common())))

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

the12414

a5639

of4900

in4837

to4689

is3848

......

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

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

载入字典

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

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

dictdicts=dict()

withopen('103976.txt','r',encoding='gbk')asf:

forlinf.readlines():

k=l[0:l.find('\t')]

用 Python 高效背单词

v=l[l.find('\t')+1:]

dicts.update({k:v})

删除认识的单词

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

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

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

withopen('postgrade.txt','r',encoding='utf-8')asf:

f.readline()

forlinf.readlines():

k=l[:l.find('')]

try:

deldicts[k]

exceptKeyErrorase:

pass

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

生成新字典

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

withopen('f1_res.txt','w',encoding='utf-8')aswf,open('result_f1.txt','r',encoding='utf-8')asf:

forlinf.readlines():

k=l[:l.find('')]

v=dicts.get(k,None)

ifv:

wf.write('%s%s'%(k,v))

wf.close()

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

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

总结

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

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

以上内容为大家介绍了用Python高效背单词,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:开发教育。http://www.baikegou.com/

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)