亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Python教學中實用型詞頻統(tǒng)計案例展示

        2018-01-27 05:58:51鄧擎瓊彭煒明趙世鳳王學松
        計算機教育 2017年12期
        關鍵詞:單詞案例教學

        鄧擎瓊,彭煒明,尹 乾,趙世鳳,王學松

        (北京師范大學信息科學與技術學院,北京100875)

        1 背景

        Python語言已經(jīng)成為國際最受歡迎的程序設計語言,國外眾多大學從2009年開始針對該語言廣泛開設相關課程。然而國內起步較晚,直到2016年,教育部高等學校大學計算機課程教學指導委員會才首次建議將Python語言作為程序設計入門課程的教學語言[1],近2年來,國內一批高校逐步開設了Python語言教學。由于教學實踐時間尚短,國內Python教學中多沿用國外的教學案例或其他程序設計語言的教學案例,其中前者導致教學案例缺乏中國特色,后者導致教學案例缺乏Python特色。例如針對文本詞頻統(tǒng)計這一問題,國內高校往往使用國外教材或教學中的案例,對莎士比亞的經(jīng)典作品《哈姆雷特》[2]、古騰堡文學作品[3]、美國總統(tǒng)就職演說等進行詞頻統(tǒng)計和分析,顯然這樣的教學案例遠離中國大學生的學習和生活,因此缺乏吸引力。再如在Python循環(huán)結構的教學中,國內高校往往還以閏年判斷、打印水仙花數(shù)等問題作為案例[4],這些問題既不是學生關心的問題,也不是熱點問題,因此也很難給學生留下深刻印象。

        而另一方面,Python有強大的計算生態(tài)環(huán)境,全球有超過十萬個第三方庫,幾乎覆蓋所有技術領域[5]。依托這樣的生態(tài)圈,國內高校中從事Python教學的老師可以便捷高效地創(chuàng)建出新的教學案例。什么樣的教學案例能引起學生的共鳴,這是一個值得思考的問題。針對上述國內Python教學案例中的問題,依托Python強大的計算生態(tài)環(huán)境,我們提出了Python實用型案例教學方法。一是通過分析大學生在學習和生活中遇到的實際問題,構建相應的教學案例;二是針對熱點問題、熱點資訊構造教學案例。這些案例不僅能讓學生感知Python計算生態(tài)圈的功能之強大和多樣,更能增強學生程序設計學習興趣,激發(fā)學生自主學習和運用Python計算生態(tài),最終提高實際解決問題的能力。

        本文具體針對詞頻統(tǒng)計問題,給出了兩個教學案例。一是針對大學英語四、六級考試,通過對歷年試題分析獲得其中的高頻詞,輔助學生進行英語復習;二是在中央電視臺科教頻道大型文化益智節(jié)目《中國詩詞大會》的引領下,帶動學生對不同詩人、不同朝代以及不同風格的詩詞進行比較,從中分享詩詞之美,感受詩詞之趣。

        2 大學英語四、六級考試高頻詞分析

        我們對大學英語四、六級歷年考試真題進行分析,從中挖掘出??荚~。這一案例對學生吸引力非常大,且案例運行結果實用性強,能輔助學生進行復習,提高考試成績。

        該案例是一項綜合性案例,展示了Python多個知識點的運用,包括:首先利用Reqests和Beatifulsoup兩個Python第三方庫爬取相關網(wǎng)頁獲得英語考試歷年考題以及四、六級詞匯表;然后對試題文本進行規(guī)范化處理,得到其中的四級或六級單詞,并進行詞頻統(tǒng)計;最后把詞頻統(tǒng)計結果保存為CSV文件,并利用Matplotlib庫對高頻詞及每年出現(xiàn)次數(shù)進行直觀顯示。下面以英語六級考試為例,詳細介紹該案例的具體實現(xiàn)過程及結果。

        2.1 歷年試題及詞匯表的獲取

        很多英語學習網(wǎng)站,如新東方在線、滬江英語等都提供歷年考試真題和單詞詞匯表。通過比較這些網(wǎng)站,最終我們選擇在http://www.233.com/cet4/zhuanti/linianzhenti/上爬取2014年6月至2016年12月的考試真題,以及在http://cet6.koolearn.com/20160210/796642.html上爬取詞匯表。原因是上述兩個網(wǎng)站資料相對齊全且分類整齊,利于進行網(wǎng)絡數(shù)據(jù)獲取。在獲取過程中主要用到requests.get()和BeautifulSoup中的find()方法。其中前者用于得到網(wǎng)頁內容,后者用于從網(wǎng)頁內容中解析和獲取需要的數(shù)據(jù)。為便于后續(xù)分析,在爬取每一年的試題數(shù)據(jù)后,把該數(shù)據(jù)保存為txt文件,存在本地磁盤。單詞詞匯表數(shù)據(jù)做同樣處理。

        2.2 試題中的六級單詞提取

        通過上述步驟獲得的試題書寫很不規(guī)范,里面含有很多中英文標點符號、中文字符等,且不同句子間經(jīng)常無空格分開,因此需要對這些文本進行規(guī)范化處理。此外,英語單詞存在各種形態(tài)變化:動詞的多種時態(tài)(過去時、過去完成時、一般現(xiàn)在時和現(xiàn)在進行時)、名詞復數(shù)形式、形容詞比較級等。而六級詞匯表中保存的都是單詞原型,如動詞為一般現(xiàn)在時態(tài)、名詞為單數(shù)形式等。因此,單詞提取還包括一個“詞形還原”的過程,即對不同時態(tài)變化的動詞、復數(shù)名詞、比較級形容詞等進行還原處理,得到原型單詞(即詞元)。之后再判斷該單詞是否為六級單詞,如果是則保存至一個列表;不是則摒棄。詞形還原在自然語言處理中非常常見。常用第三方模塊NLTK來處理。處理過程一般為:首先用字符串的split()方法或NLTK提供的分句工具(例如punktsentencesegmenter)把整套試題分解成一個一個的句子,然后對每一個句子用NLTK提供的工具(例如word_tokenize和pos_tag)對其進行分詞和詞性標注,得到該句子中的每一個單詞和它的詞性,之后對每個單詞根據(jù)其詞性采用NLTK提供的詞性還原工具(例如WordNetLemmatizer)得到對應的詞元。這樣得到的詞元很準確,但國內大多數(shù)高校將Python是作為入門語言進行教學,上述NLTK模塊的實現(xiàn)有些難度,因此可根據(jù)教學情況采用簡化方法。例如,可采用字符串的方法對一般化變形的動詞和名詞實現(xiàn)詞形還原,具體代碼如下:

        importstring

        defloadExamp(fname):#fname為一套txt試題文件

        withopen(fname,'rt',encoding='UTF-8')asf:

        text=f.read().lower()

        lst=[]#lst保存試題中包含的六級單詞

        text=text.replace('--','')

        text=text.replace('(','')

        text=text.replace(')','')

        text=text.replace('?','')#去除無空格分割的標點符號

        wordlist=text.split()

        forwordinwordlist:

        word=word.strip(',。:、!“”‘’{}【】()')#去除中文標點符號

        word=word.strip(string.punctuation)#去除英文標點符號

        ifwordincet6:

        #cet6為六級單詞列表,下面為詞形還原過程

        lst.append(word)

        elifword.endswith(('s','ed'))andword[0:-1]incet6:#例works→work、liked→like

        lst.append(word[0:-1])

        elifword.endswith(('es','ed'))andword[0:-2]in cet6:#例boxes→box、worked→work

        lst.append(word[0:-2])

        elifword.endswith('ing'):

        ifword[0:-3]incet6:lst.append(word[0:-3])#例:working→work

        elifword[0:-3]+'e'incet6:lst.append(word[0:-3]+'e')#例:liking→like

        elifword.endswith(('ies','ied'))andword[0:-3]+'y'incet6:

        lst.append(word[0:-3]+'y')#例:studies、studied→study

        returnlst

        該過程也可采用Python中的標準模塊——re模塊來實現(xiàn),這樣會更簡潔,具體代碼如下:

        importre

        defloadExamp(fname):#fname為一套txt試題文件

        withopen(fname,'rt',encoding='UTF-8')asf:

        text=f.read()

        lst=[]#lst保存試題中包含的六級單詞

        forwordinre.findall('[A-Z]?[a-z]+',text):

        #提取英語單詞

        word=word.lower()

        ifwordincet6:#cet6為六級單詞列表

        lst.append(word)

        else:#詞形還原后再判斷是否為六級單詞

        forrulein[('(s|e[ds]|ing)$',''),('(e[ds]|ing)$','e'),('ie[sd]$','y')]:

        stem=re.sub(rule[0],rule[1],word)

        ifstemincet6:

        lst.append(stem)

        break

        returnlst

        2.3 六級單詞詞頻統(tǒng)計

        在得到每一年試題中所出現(xiàn)的六級單詞列表之后,統(tǒng)計單詞頻率就變成很簡單。同樣,有多種實現(xiàn)方式,具體代碼如下所示:

        #wordDec保存詞頻統(tǒng)計結果,examList為每份試題中出現(xiàn)的六級單詞列表,cet6為六級單詞列表

        #方法1

        wordDec={}

        forwincet6:

        wordDec[w]=examList.count(w)

        #方法2

        wordDct=dict.fromkeys(cet6,0)

        forwinexamList:

        wordDct[w]+=1

        #方法3

        fromcollectionsimportCounter

        wordDct=Counter(examList)

        其中方法1和方法2采用字典和列表實現(xiàn),方法3則采用標準庫collections中的Counter類實現(xiàn)。相比之下,方法1效率低,不推薦使用。在每一年試題的六級單詞詞頻的基礎上,進一步計算平均詞頻,然后采用Python內置函數(shù)sorted()根據(jù)平均詞頻從高到低進行排序,排在前面的單詞即為近幾年考試中的高頻詞。當然,實現(xiàn)方法不限于上述3種,例如還可采用Python第三方模塊Pandas,把每一年試題所用的六級單詞列表作為一個Series對象,然后采用value_counts()方法可得到詞頻,并把所有年份的詞頻結果制成一張表格,即一個DataFrame對象,之后采用其apply()方法作用到表格的每一行得到平均詞頻,最后采用sort_values()方法根據(jù)平均詞頻對所有行進行逆序排序,具體代碼如下:

        importpandasaspd

        examPd=pd.DataFrame(meanList,columns=['詞義',],index=cet6)#meanList為詞義列表

        examPd.index.name='單詞'

        fori,examListinenumerate(examLists):

        #對歷年試題做詞頻統(tǒng)計,統(tǒng)計結果保存為表格中的一列

        tempPd=pd.Series(examList)statistic=tempPd.value_counts()

        examPd[examFileName[i]]=statistic

        #examFileName為歷年試題對應的文件名列表

        filledExamPd=examPd.fillna(value=0)

        iflledExamPd['平均次數(shù)']=filledExamPd.iloc[:,1:].apply(lambdax:x.sum()/fileNum,axis=1)

        sortedExamPd=filledExamPd.sort_values(by='平均次數(shù)',ascending=False)

        2.4 詞頻統(tǒng)計結果保存和展示

        把根據(jù)平均詞頻逆序排序后的歷年詞頻統(tǒng)計結果和平均詞頻以csv文件格式保存在本地磁盤中。csv是逗號分隔符文本格式,常用于Excel和數(shù)據(jù)庫的數(shù)據(jù)導入和導出。Python標準庫中的csv模塊提供了讀取和寫入csv格式文件的兩個對象:csv.reader和csv.writer。在本案例中,可利用csv.writer對象中的writerow()和writerows()方法分別寫入一行或多行數(shù)據(jù)。也可直接采用第三方模塊Pandas的DataFrame對象的to_csv()方法,更便捷地保存表格數(shù)據(jù)。文件保存結果如圖1所示,文件中的第一列是單詞,第二列是詞義,中間列是歷年試題的詞頻統(tǒng)計結果,最后一列是平均詞頻。

        為更直觀地呈現(xiàn)結果,本案例通過第三方模塊Matplotlib采用柱狀圖的方式對高頻詞及每年出現(xiàn)次數(shù)進行展示。如果統(tǒng)計結果表示成一個Pandas的DataFrame對象,則直接用該對象的plot(kind='bar')方法進行柱狀圖繪制,因為Pandas整合了matplotlib的pyplot模塊中的函數(shù),提供了專門用于Series和DataFrame對象的繪圖功能。圖2展示了平均詞頻最大的三個單詞近年來的各自使用次數(shù)。進一步,經(jīng)過統(tǒng)計得到:在所有試題中都出現(xiàn)了的單詞只有兩個:correspond和given,而近年來在試題中出現(xiàn)過的六級單詞,即平均詞頻不為0的單詞有855個。

        圖1 六級單詞詞頻統(tǒng)計保存結果

        3 古詩字頻統(tǒng)計及可視化展示

        隨著央視首檔全民參與的詩詞節(jié)目《中國詩詞大會》的熱播,高校重新刮起了一股文化清風,學生對各詩人們的詩詞和風格、古人行酒令時的文字游戲“飛花令”等產生了濃厚的興趣。為此,我們設計了古詩字頻統(tǒng)計及可視化展示案例。中國古詩,無論篇幅短長,用字的凝練都是非常講究的。詩人在擇取意象、推敲用字時,由于其時代背景、生活經(jīng)歷的不同,通常會表現(xiàn)出特定的偏好,形成不同的風格。因此,可以通過對不同詩人用字情況的對比分析來窺探詩人的詩風。對于計算機專業(yè)背景的大學生來說,這是以理科方法來研究文科內容的嘗試,文理交叉,學以致用。下面以李白、杜甫為例,詳細介紹古詩字頻統(tǒng)計及其可視化展示的案例實施過程。

        3.1 古詩獲取及文本預處理

        中國古詩浩如煙海,能夠瀏覽和下載古詩文本的網(wǎng)站也很多。采用類似2.1節(jié)的方法,我們可以得到大量分類整理的古詩文本,將其按作者姓名分別存放在不同的文件目錄中。爬取后網(wǎng)頁文件后除了需要進行一般的文本化處理(去除HTML標簽)外,還應注意文本中可能存在的一些注釋內容。例如,在李白《將進酒》的文本中混有“與君歌一曲,請君為我傾耳聽。(傾耳聽一作:側耳聽)”,括號中內容即為字頻統(tǒng)計的噪聲,可利用re模塊對此噪聲進行刪除。處理后的各詩人的作品分別保存為CSV文件。其中文件內容包括詩詞名、朝代、作者、詩詞內容以及詩詞風格標簽,如圖3所示。

        圖3 李白詩集保存結果

        3.2 古詩字頻統(tǒng)計和詞云展示

        相對于四、六級單詞詞頻統(tǒng)計,古詩字頻統(tǒng)計更為簡單。對每一位詩人,首先把他(她)的每一首詩詞內容中的每一個漢字添加至一個漢字列表,然后把該漢字列表通過轉化成字典等方法得到不重復漢字集合,最后再通過2.3節(jié)中介紹的詞頻統(tǒng)計方法得到該詩人的字頻統(tǒng)計結果。值得注意的是,不同詩人的作品數(shù)量差別較大,因此我們對詞頻統(tǒng)計結果進行了歸一化處理,即除以詩人的作品數(shù)量。圖4分別顯示了李白和杜甫的前十個使用最頻繁的字及歸一化后的字頻。

        圖4 李白(左)和杜甫(右)的前十個高頻字和對應的字頻

        圖5 李白(左)和杜甫(右)的詞云繪制結果

        為更進一步對高頻詞予以視覺上的突出,我們利用Python第三方庫wordcloud構建了詞云。wordcloud庫功能強大,且簡單易用。首先構建一個WordCloud對象,注意由于顯示的是中文,因此需要在構建該對象時,設置font_path為支持中文的字體的路徑,例如在Windows系統(tǒng)下,font_path可以為'C:WindowsFontssimsun.ttc';然后把上節(jié)中得到的詞頻統(tǒng)計結果作為參數(shù)傳遞給WordCloud對象的fit_words()方法;最后采用matplotlib.pyplot.imshow()函數(shù)進行顯示即可。李白和杜甫的詞云繪制結果如圖5所示。

        3.3 李、杜用字習慣比較

        可把李白和杜甫兩位詩人的詩詞中的高頻字分別用一個Python集合類型表示,然后采用集合操作對兩位詩人的用字習慣進行比較:兩個集合的交即為兩位詩人都愛用的字;兩個集合的差即為其中一位詩人愛用而另一位詩人不愛用的字。

        為進一步比較兩位詩人的詩風,可求解兩人字頻差異最大的一些字。首先通過兩個集合的交集得到兩位詩人總共喜歡的字,然后對其中的每一個字,求兩位詩人的字頻差異的絕對值,最后根據(jù)該值進行逆序排序,排在前面的即為兩位詩人用字習慣差異最大的字。為直觀地顯示這些字以及對應的字頻,可采用Matplotlib柱狀圖的方式進行繪制,其中差異最大的前10個字的結果如圖6所示。

        3.4 擴展

        為了更加有效地統(tǒng)計、比較并直觀顯示不同詩人的用字習慣,同時如“飛花令”游戲中那樣對特定漢字實現(xiàn)詩句鏈接,我們對上述教學案例做了進一步的擴展。首先,詞云的可視化展示改用基于Web的網(wǎng)頁形式,這樣可以對其中的漢字添加HTML鏈接。此外,為了方便程序模塊的升級,把圖3所示的表格數(shù)據(jù)都導入sqlite3數(shù)據(jù)庫(數(shù)據(jù)庫名:peoms.db,表名:gushi),通過數(shù)據(jù)庫查詢來實現(xiàn)可以提高程序的可擴展性,具體實施步驟如下。

        3.4 .1可視化環(huán)境布置與工具介紹

        可視化頁面采用標簽云插件jQCloud(https://github.com/lucaong/jQCloud)作為呈現(xiàn)工具,首先設置一個top-left-right的三分屏框架主頁面index.htm,分別鏈接top.htm(作為標題顯示對比詩人的姓名)、left.htm(用于顯示左側詩人的用字情況)和right.htm(用于顯示右側詩人的用字情況),如圖7所示。為了使Python程序邏輯與頁面顯示邏輯分離,將詩詞用字統(tǒng)計的結果數(shù)據(jù)寫入單獨的兩個js文件(data-left.js和dataright.js),在left.htm和right.htm兩個頁面中分別導入。

        圖6 李白和杜甫字頻差異最大的10個字

        圖7 李白/杜甫詩詞的用字對比

        以left.htm為例,其HTML代碼如下:

        lt;htmlgt;

        lt;headgt;lt;metahttpequiv="Content-Type"content="text/html;charset=utf8"/gt;

        lt;linkrel="stylesheet"type="text/css"href="css/jqcloud.css"/gt;

        lt;scripttype="text/javascript"src="js/jquery-1.4.4.js"gt;lt;/scriptgt;

        lt;scripttype="text/javascript"src="js/jqcloud-1.0.4.js"gt;lt;/scriptgt;

        lt;scripttype="text/javascript"src="data-left.js"gt;lt;/scriptgt;

        lt;scripttype="text/javascript"gt;

        $(function(){$("#chars").jQCloud(char_list);});

        lt;/scriptgt;

        lt;/headgt;

        lt;bodygt;

        lt;centergt;lt;divid="chars"style="width:480px;height:

        64 0px;border:1pxsolid;"gt;lt;/divgt;lt;/centergt;

        lt;/bodygt;

        lt;/htmlgt;

        3.4 .2字頻統(tǒng)計與格式化輸出

        數(shù)據(jù)文件格式需求如下:以上節(jié)HTML中的data-left.js為例,即按JSON格式列出李白詩字頻率相比杜甫詩字頻率偏高的部分。其中每行屬性說明如下:text為詩中用字,weight為字頻差(Freq(李白)-Freq(杜甫)),link為該字具體詩句的鏈接頁面。

        varchar_list=[

        {text:"月",weight:0.00353834280190,link:{href:"poem/李白-月.htm",target:"_blank"}},

        {text:"天",weight:0.00344150700915,link:{href:"poem/李白-天.htm",target:"_blank"}},

        {text:"海",weight:0.003176168221019,link:{href:"poem/李白-海.htm",target:"_blank"}},

        {text:"金",weight:0.00287300721580,link:{href:"poem/李白-金.htm",target:"_blank"}},

        {text:"山",weight:0.002688791184576,link:{href:"poem/李白-山.htm",target:"_blank"}},

        ……(此處省略更多)

        ];

        生成該數(shù)據(jù)文件的Python代碼及相關注釋如下:

        importre

        importsqlite3

        fromcollectionsimportCounter

        cxn=sqlite3.connect("./peoms.db")

        defcharfreq(poet):#統(tǒng)計某位詩人的所有詩中漢字分布的頻率,poet為詩人名字

        counter=Counter()

        regex_han=re.compile(r'[u3400-u9fff]')#匹配漢字的正則表達式

        cur=cxn.cursor()

        cur.execute("selectbodyfromgushiwhere authorname=?",(poet,))forrowincur:

        counter.update(regex_han.findall(row[0]))#Counter.update()實現(xiàn)動態(tài)更新頻次計數(shù)

        freqsum=sum(counter.values())#總頻次

        forcharincounter.keys():counter[char]/=freqsum#計算字的分布頻率

        returncounter defcharcloud(poet_left,poet_right):#求詞頻差,并生成詞云

        cnter_left=charfreq(poet_left)

        cnter_right=charfreq(poet_right)

        withopen('data-left.js','w',encoding='utf8')asf_left:

        f_left.write('varword_list=[ ')

        forchar,freqin(cnter_left-cnter_right).most_

        common(200):#Counter對象支持求差運算,只取前200個相對頻率差高的,為詩人偏好用字。f_left.write('{{text:"{}",weight:{}}}, '.format(char,freq))

        f_left.write(']; ')

        withopen('data-right.js','w',encoding='utf8')asf_left:

        f_right.write('varword_list=[ ')

        forchar,freqin(cnter_right-cnter_left).most_common(200):f_right.write('{{text:"{}",weight:{}}}, '.format(char,freq))

        f_right.write(']; ')

        charcloud('李白','杜甫')

        程序實現(xiàn)模塊化后,可以很方便地比較任意兩個詩人的用字,李白、杜甫的比較頁面如圖7所示。

        3.4 .3生成特定漢字的詩句鏈接頁面(“飛花令”效果)

        最后一步,為標簽云中的每個用字添加鏈接,點擊后可以查看詩人使用該字的具體詩句及出處。因此,修訂函數(shù)charcloud()中的部分代碼,此處僅展示data-left.js文件的生成部分,如下:

        forchar,freqin(cnter_left-cnter_right).most_common(200):

        f_left.write('{{text:"{0}",weight:{1},link:{{href:"poem/left-{0}.htm",target:"_blank"}}, '.format(char,freq))#輸出數(shù)據(jù)中增加鏈接

        gen_verse(poet_left,char)

        #調用函數(shù),生成詩人特定用字的詩句列表,詳下#函數(shù)gen_verse()定義如下:defgen_verse(poet,char):

        withopen('poem/{}-{}'.format(poet,char),'w',encoding='utf8')asfout:

        cur=cxn.cursor()

        forrowincur.execute("selectbodyfromgushi

        whereauthorname=?andbodylike?",(poet,'%{}%'.format(char))):

        forlinein[xforxinre.split(r'[ 。?!]',row[0])ifcharinx]:

        fout.write('lt;pgt;{}lt;/pgt; '.format(line).replace(char,'lt;spancolor="blue"gt;{}lt;/spangt;'.format(char))+'lt;palign="right"gt;——{}《{}》lt;/pgt;lt;/divgt; '.format(poet,fname[0:-4]))

        #詩句(高亮顯示漢字char)——詩人《出處》

        以李白詩中的“?!弊譃槔?,具體顯示效果如圖8所示。

        3.4 .4不同朝代及不同風格詩詞比較

        由于我們的詩詞數(shù)據(jù)采用sqlite3數(shù)據(jù)庫進行保存,同時每一條數(shù)據(jù)還包含朝代和詩詞風格標簽信息,因此,采用類似2.4.2的方法,我們很容易提取出不同朝代或不同風格的詩詞數(shù)據(jù),然后生成對應的標簽云,如圖9和圖10所示,從而對不同朝代或風格的詩詞進行比較。

        4 案例的靈活運用

        本文給出的兩個案例均為綜合性案例,涉及Python教學中的多個知識點以及多個標準模塊和第三方模塊,且有些功能有多種實現(xiàn)方式。因此,可以作為學期末大作業(yè)示范案例,也可在學期中根據(jù)教學進度進行靈活拆分和運用。例如,在學習字符串、字典等Python內置數(shù)據(jù)結構時,可把某一年的試題或李白、杜甫若干首詩作為一個長字符串進行詞頻統(tǒng)計練習;在學習文件讀寫時,可把每一年的試題或李白、杜甫詩集作為一個文本文件進行讀操作練習,并通過保存詞頻統(tǒng)計結果進行寫操作練習;在學習網(wǎng)絡爬蟲時,可練習從相關網(wǎng)站上爬取這些內容等。

        圖8 “?!弊值脑娋滏溄禹撁?/p>

        圖9 不同朝代詩詞的用字對比

        圖10 不同風格詩詞的用字對比

        5 結語

        基于Python強大的計算生態(tài)環(huán)境,本文提出“Python實用型案例教學”的觀點,并具體針對詞頻統(tǒng)計問題,給出了大學英語四、六級考試高頻詞求解和可視化展示案例以及古詩詞字頻統(tǒng)計及可視化展示案例。這兩個案例都貼近大學生的學習和生活,不僅能讓學生感知Python計算生態(tài)圈的功能之強大和多樣,更能增強學生程序設計學習興趣,引導學生自主學習和運用Python計算生態(tài),把解決實際生活和學習中的具體任務作為學習的最終目標,最終提高解決實際問題的能力。上述教學理念和案例在北京師范大學計算機專業(yè)2個學期課堂教學實踐中運用,取得了良好的教學效果。后續(xù)工作中,如何針對其他不同專業(yè)的應用需求,設計實用性和個性化并存的教學案例將是下一步Python教改重點。

        [1]教育部高等學校大學計算機課程教學指導委員會.大學計算機基礎課程教學基本要求[M].北京:高等教育出版社,2017.

        [2]嵩天,禮欣,黃天羽.Python語言程序設計基礎[M].2版.北京:高等教育出版社,2017:171-174.

        [3]中國大學MOOC.用Python玩轉數(shù)據(jù)[EB/OL].[2017-10-05].http://www.icourse163.org/course/NJU-1001571005.

        [4]江紅,余青松.Python程序設計教程[M].北京:清華大學出版社、北京交通大學出版社,2014:44,61.

        [5]嵩天,黃天羽,禮欣.面向計算生態(tài)的Python語言入門課程教學方案[J].計算機教育,2017(8):7-12.

        猜你喜歡
        單詞案例教學
        案例4 奔跑吧,少年!
        少先隊活動(2021年2期)2021-03-29 05:40:48
        微課讓高中數(shù)學教學更高效
        甘肅教育(2020年14期)2020-09-11 07:57:50
        單詞連一連
        隨機變量分布及統(tǒng)計案例拔高卷
        看圖填單詞
        “自我診斷表”在高中數(shù)學教學中的應用
        東方教育(2017年19期)2017-12-05 15:14:48
        發(fā)生在你我身邊的那些治超案例
        中國公路(2017年7期)2017-07-24 13:56:38
        看完這些單詞的翻譯,整個人都不好了
        對外漢語教學中“想”和“要”的比較
        唐山文學(2016年2期)2017-01-15 14:03:59
        一個模擬案例引發(fā)的多重思考
        精品无码AV无码免费专区| 久久精品国产99国产精偷| 末成年女a∨片一区二区| 厨房玩丰满人妻hd完整版视频| 久久男人av资源网站无码| 日本一级二级三级在线| 亚洲av网站在线观看一页| 国产精品兄妹在线观看麻豆| 曰本无码人妻丰满熟妇5g影院| 无码中文字幕av免费放| 一区二区亚洲精品国产精| 人人超碰人人爱超碰国产| 日本aⅴ大伊香蕉精品视频| 含羞草亚洲AV无码久久精品| 日本在线中文字幕一区| 日韩精品极品免费视频观看 | 99精品视频69V精品视频| 久久久亚洲欧洲日产国码是AV| 精品一区二区三区亚洲综合| 亚洲精品久久久久久久蜜桃| 国产午夜精品一区二区三区不卡 | 激情综合色五月丁香六月亚洲| 四虎精品国产一区二区三区| 日本久久黄色高清视频| 少妇激情av一区二区三区| 国产97色在线 | 亚洲| 亚洲欧美性另类春色| 精品久久免费国产乱色也| 全免费a级毛片免费看无码| 九九99久久精品国产 | 色人阁第四色视频合集网| 国产精品自产拍在线18禁| 亚洲一区二区三区香蕉| 国产人成精品免费视频| 亚洲一区二区不卡日韩| 日本亚洲精品一区二区三| 人妻丰满熟妇av无码片| 国产91一区二这在线播放| 日本av不卡一区二区三区| 18禁成人黄网站免费观看| 香蕉视频在线观看国产|