Python中文社区(ID:python-china)背景作为一名程序员,经常需要阅读英文论文、文档和书籍。对于一些基础差的同学来说,主要的障碍就是英语单词。电脑文档不同于小说。他们的语法和句子结构都比较简单。可以说,只要有词汇量,阅读就非常简单。如果平时能提高词汇量,那是最好不过了。鸡汤警告!你要偷偷努力,然后让大家惊叹!老铁在这里打这句话没有错。但是背诵普通的英语词典而不专注于它们可能效率不高。如果不提前学单词,直接开始看,遇到生词就查生词,效率不会提高。这里有一个专业文档的背单词方法:创建一个当前文档所有单词的专属词典,先背诵这本词典,再看书,一眼就能看懂十行。大致思路是统计文件的分词情况,查字典,生成新的字典。?首先,有一份英文文档需要阅读,将其分词,并根据词频排序;?找一个你已经掌握的英语词汇表(四级或六级或考研等),将上面的单词与这个词汇表中重复的项目组合删除;?找另一本词汇量大的词典,在里面找到相应的解释;?将结果存储在字典文件中。获得的词典为本书专属词典。业余背这本词典,就相当于掌握了计算机专业英语。这种方法同样适用于任何机械、电子等专业的英语。下面以Python大作《Fluent Python》为例,利用Python自带的库实现分词和统计功能。先看其内容大纲。FluentPythonCLEAR,CONCISE,ANDEFFECTIVEPROGRAMMINGLucianoRamalho...分词先说分词。fromcollectionsimportCounterimportrect2=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中,按照词频排序,如下。the12414a5639of4900in4837to4689is3848...和预期很像,排名靠前的基本都是介词之类的常用词。另外比较有意思的数据是《Fluent Python》一共使用了9118个词,其中3168个词出现了一次。出现次数最多的达到12000次。其分布图如下。Loaddictionary下载比较完整的词典,10万字左右。载入内存,存放在字典数据变量dicts中。这是dict结构第一次真正存储字典!dictdicts=dict()withopen('103976.txt','r',encoding='gbk')asf:forlinf.readlines():k=l[0:l.find('\t')]v=l[l.find('\t')+1:]dicts.update({k:v})删除了识别词词典中的大量ais,挑战我们的容忍度。我还以为我们小学没毕业呢。摆脱...众所周知,我们用的是从小学二年级就掌握的postgrade.txt英文词典。postgrade.txt想必同学们都不陌生。魔术是第一个词。放弃vt.放弃,丢弃;放弃,丢弃;abandonwithopen('postgrade.txt','r',encoding='utf-8')asf:f.readline()forlinf.readlines():k=l[:l.find('')]try:deldicts[k]exceptKeyErrorase:pass现在,在字典字典中,只有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等库来提高效率。
