1. 程式人生 > >室友利用Python製造出了價值上萬的英語學習資料!

室友利用Python製造出了價值上萬的英語學習資料!

 

室友利用Python製造出了價值上萬的英語學習資料!

 

 

程式製作的最高 10 個單詞圖表

前言

任何語言的學習,最重要的就是詞彙。對於英語也是一樣。你回想下上學期間你為了考英語,背了多少單詞。為了考四六級,抱著厚厚的詞彙書開始從頭背起。然而看著單詞書幾千的單詞,背了每幾天就放棄。效率十分低下。四級能否過,全憑運氣,學霸除外。換個思維,我們是程式設計師,就要利用好我們手中的工具。如果我們能從歷年來的真題,分析每個單詞的頻率,我們是不是隻要把高頻單詞背完就可以。以後的任何英語考試,只要你有真題,就能統計出最高頻率的單詞。想想就非常的激動,這可以為我們省去多少的資料費。

四六級真題詞頻統計

 

室友利用Python製造出了價值上萬的英語學習資料!

 

 

統計的每個單詞的頻率

 

學習計算機語言,最好的方法,就是用所學的知識去解決現實的問題。最近「從零開始 Python 系列」也基本把基礎的知識都講了。如果你對於 Python 基礎知識有所瞭解,接下拉就是用大量的練習來鞏固這些基礎知識。今天就為大家講解下如何利用 Python 去解析英語真題卷,每個單詞出現的頻率。這對於還在讀書的學生來說,對你考英語是非常的有幫助。

程式思路

室友利用Python製造出了價值上萬的英語學習資料!

 

程式所有檔案

寫程式最怕就是摸著石頭過河,不知所措。沒有對於實際問題有個大體的分析。真題詞頻統計,首先你應該找到真題的文件。我通過網上下載到以往的四六級真題試卷,這些資料上網搜尋下就很容易找的到。有了文件就要開始確定用什麼庫來解析。我在網上找到的文件是 doc 檔案,即 word 的文件。word 的文件可以使用 win32com 庫來解析。現在文件通過 win32com 庫可以被程式所識別,我們就可以開始分析。有了資料,我們就可以開始處理資料。詞頻統計,一個是單詞,一個是單詞的頻率。很容易就想到用到字典資料結構,來儲存我們的資料。key 為所要統計的單詞,value 是單詞出現的頻率。統計完以後,重新整理成新的字典,批量輸出。最後畫出圖表。

前期準備

由於是要用到讀取 doc 文件的操作和畫圖表,所以你要事先 pip:win32com、matplotlib。win32com 用來讀取 word 文件,以及轉換成 txt 文件。matplotlib 經典的畫相簿,用來畫我們的圖示。

Word2Txt.py

Word2Txt.py 是用來把需要解析的真題試卷文件轉換成 txt 文件,儲存到資料夾「2」中,便於我們操作。真題試卷所有的文件都儲存在「1」資料夾裡,這裡一共有 11 份。當然你可以繼續新增真題試卷,只要你手上有真題試卷的文件。

在 Word2Txt.py 中主要有兩個函式:closesoft()、Translate(path)。分別是用來關閉 WPS 程式,和批量轉換 word 文件成 txt 文件。具體的程式碼如下:

室友利用Python製造出了價值上萬的英語學習資料!

 

closesoft()

室友利用Python製造出了價值上萬的英語學習資料!

 

Translate(path)

StaWord.py

StaWord.py 是用來把資料夾「2」下的轉換好的 txt 文字,進行詞頻統計。程式碼並不是很難,其中要注意的一段程式碼是:

室友利用Python製造出了價值上萬的英語學習資料!

 

正則匹配

這裡用到了 lower() 函式,把單詞轉換成小寫,並且用正則表示式匹配所有的字母,過濾掉所有非字母的字元。這段程式碼並不是很好理解,需要你對正則表示式有一定的瞭解。遇到自己不懂的地方,一定要停下自己的腳步。一個個程式碼去查詢相應的資料,這樣你才能有所提升。

在 StaWord.py 主要有 3 個函式:draw(data, num)、input(file_path, data)、comm(path)。分別是用於畫圖表、輸出統計後的 txt 文字、處理當前目錄先所有的 txt 文字統計詞頻。

室友利用Python製造出了價值上萬的英語學習資料!

 

draw(data, num)

室友利用Python製造出了價值上萬的英語學習資料!

 

input(file_path, data)

室友利用Python製造出了價值上萬的英語學習資料!

 

comm(path)

Test.py

Test.py 就是呼叫每個具體的函式。

室友利用Python製造出了價值上萬的英語學習資料!

 

寫在最後

程式的大體思路我都已講解完,當然每個人對應的水平都不同。有人覺得上述的程式碼很簡單,但有些人卻覺得很難。當你在讀別人的程式碼時,一定要記住你要讀懂每一行程式碼,你要懂得每行程式碼所代表的操作。如果你遇到不懂得地方,停下來,思考,查資料,寧願花更多得時間,也不去追求戰略上的滿足感。我已經把全部的程式碼一行行的看過去,雖然有些地方我沒看懂。但我看完了!好滿足!好有成就感!實際上你也只是看完了程式碼,根本就沒有吸收到什麼。在這裡加群:700341555獲取學習資料!

室友利用Python製造出了價值上萬的英語學習資料!