自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

新技能Get!用 Python 高效背單詞

開發(fā) 后端
作為一個程序員,經(jīng)常需要閱讀英文論文、文檔、書籍。對于一些基礎(chǔ)不好的同學(xué)來說,最主要的攔路虎是英語單詞。計算機類文檔不同于小說,其語法、句式都比較簡單,可以說只要詞匯量有了,閱讀就很簡單。

[[410261]]

本文轉(zhuǎn)載自微信公眾號「Python中文社區(qū)」,作者鞏慶奎。轉(zhuǎn)載本文請聯(lián)系Python中文社區(qū)公眾號。

背景

作為一個程序員,經(jīng)常需要閱讀英文論文、文檔、書籍。對于一些基礎(chǔ)不好的同學(xué)來說,最主要的攔路虎是英語單詞。計算機類文檔不同于小說,其語法、句式都比較簡單,可以說只要詞匯量有了,閱讀就很簡單。

如果能在平時提高詞匯量,那是最好不過了。雞湯警告!你必須暗自努力,然后驚艷所有人!這句話打在這里沒毛病吧,老鐵。但無所側(cè)重地背普通英語字典,恐怕效率并不高。不提前學(xué)習(xí)單詞,直接上手閱讀,遇到生詞再查,效率也提升不起來。

這里介紹一個針對專業(yè)文檔背單詞的方法:把當(dāng)前文檔的所有單詞,建立一個專屬字典,先背誦這個字典,再去看書,一定能一目十行。

思路

總體思路是文件分詞統(tǒng)計,查找字典,生成新字典。

  • 首先,有一個需要閱讀的英文文檔,給它分詞,按照單詞頻率排序;
  • 找一個已掌握的英語詞匯表(四六級或考研等),把上文中的單詞和本詞匯表重復(fù)的項刪除;
  • 再找一個詞匯量大的字典,在其中查找對應(yīng)解釋;
  • 把結(jié)果存儲到一個字典文件中。

得到的字典,就是這本書的專屬字典了。業(yè)余背這個字典,相當(dāng)于掌握了計算機專業(yè)英語。這個方法也適用于機械、電子等等任何專業(yè)英語的地方。

實現(xiàn)

下面,以 Python 神作《Fluent Python》為例,用 Python 自帶的庫實現(xiàn)分詞、統(tǒng)計功能。首先看下它的內(nèi)容梗概。

  1. Fluent Python  
  2. CLEAR, CONCISE, AND EFFECTIVE PROGRAMMING 
  3. Luciano Ramalho 
  4. ...... 

分詞

首先來分詞。

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

以上代碼中,導(dǎo)入了 Counter 和 re 模塊。

Counter 負責(zé)統(tǒng)計單詞詞頻,re 正則表達式分割英語單詞。得到結(jié)果 ct2 中是所有單詞的詞頻。

下面,把它保存下來。

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

現(xiàn)在,result_f1.txt 中存儲的是這本書出現(xiàn)的單詞,而且是按照詞頻排序的,如下。

  1. the 12414 
  2. a 5639 
  3. of 4900 
  4. in 4837 
  5. to 4689 
  6. is 3848 
  7. ...... 

和預(yù)想得很像,排名靠前的基本是介詞等常用詞。

另外,比較有意思的數(shù)據(jù)是,《Fluent Python》共使用詞匯 9118 個,其中出現(xiàn)一次的單詞有 3168 個。出現(xiàn)頻次最高的 the 達到 12000 次。它的分布圖如下。

載入字典

下載一個比較全的字典,十萬個單詞。載入內(nèi)存,存儲在字典數(shù)據(jù)變量 dicts 中。

  1. 這是 dict 結(jié)構(gòu)第一次真正存儲字典! 
  1. dicts = dict() 
  2. with open('103976.txt','r',encoding='gbk'as f: 
  3.     for l in f.readlines(): 
  4.         k = l[0:l.find('\t')] 
  5.         v = l[l.find('\t')+1:] 
  6.         dicts.update({k:v}) 

刪除認(rèn)識的單詞

字典當(dāng)中大量的 the a is,相當(dāng)挑戰(zhàn)我們的容忍度,這讓旁人看了,還以為我們小學(xué)沒畢業(yè)呢。去掉去掉……

眾所周知,我們采用了小學(xué)二年級就掌握的 postgrade.txt 英文字典。

  1. postgrade.txt 同學(xué)們肯定耳熟能詳。神奇的是第一個單詞。abandon vt.離棄,丟棄;遺棄,拋棄;放棄 
  1. with open('postgrade.txt','r',encoding='utf-8'as f: 
  2.     f.readline() 
  3.     for l in f.readlines(): 
  4.         k = l[:l.find(' ')] 
  5.         try: 
  6.             del dicts[k] 
  7.         except KeyError as e: 
  8.             pass 

現(xiàn)在,字典 dicts 中,僅僅剩下所我們不認(rèn)識的,103976 - 5000 = 98976 個單詞了。

生成新字典

以詞頻單詞來查找單詞表,再把單詞和釋義存到新單詞表中,就得到新單詞表了。

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

這里第一句,兩個 with 可以寫到一句話里。這樣代碼看起來比較和諧。

查字典方法,使用v = dicts.get(k,None),這樣查不著的單詞,返回 None,寫入新字典時判斷這個值,就可以了。

總結(jié)

除此處介紹的生生單個文檔字典外,還可多拿幾個領(lǐng)域?qū)I(yè)文檔,提取它們的常用單詞,然后生成專屬字典,這字典,相當(dāng)于相關(guān)領(lǐng)域的專業(yè)英語字典。

這里使用 Python 自帶庫寫程序,效率可能不高。如果需要,可以使用 pandas 之類的庫來實現(xiàn),提高效率。

作者:鞏慶奎,大奎,對計算機、電子信息工程感興趣。

 

責(zé)任編輯:武曉燕 來源: Python中文社區(qū)
相關(guān)推薦

2021-07-09 09:31:04

getPython代碼

2014-02-14 09:17:37

雅虎云計算服務(wù)基準(zhǔn)YCSB

2019-09-10 15:18:44

云計算

2019-07-11 05:53:48

MySQL死鎖數(shù)據(jù)

2019-06-24 09:10:31

Windows操作系統(tǒng)Windows 10

2011-09-06 11:20:37

2025-02-28 08:21:36

C語言C++Java

2023-08-14 07:49:42

AI訓(xùn)練

2021-04-01 06:21:08

人工智能AI

2020-11-20 07:05:26

微信騰訊移動應(yīng)用

2024-09-09 15:06:32

2017-01-03 09:20:11

Windows 10技能安裝

2018-08-30 15:36:11

NVIDIA GFE8K技能

2012-02-21 10:10:04

2018-11-29 11:28:32

數(shù)據(jù)中心IT云計算

2020-12-03 14:49:13

AI 技術(shù) 人工智能

2022-07-25 11:33:48

Python大文件

2020-12-16 15:53:59

開發(fā)編程語言技術(shù)

2016-12-26 20:17:17

數(shù)據(jù)excel表效率

2011-09-20 09:51:43

程序員
點贊
收藏

51CTO技術(shù)棧公眾號