毛星皓


摘要:如何提高學生的積極性,是中學編程教學始終需要關注的問題。本文以詞云制作為例,探討在Python教學中,通過合理設計教學任務,綜合運用Jieba、Wordcloud、Matplotlib和Numpy等庫提供的分詞、可視化等技術,采取循序漸進、不斷完善的教學方法,逐步實現教學目標。同時,降低編程教學的門檻,提高趣味性,幫助學生克服畏難情緒,充分調動積極性、主動性,有效提升教學效果。
關鍵詞:高中信息技術;Python;詞云;分詞;圖形繪制
中圖分類號:G642 ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2020)17-0136-02
1概述
隨著人工智能時代的到來,編程技術已成為未來人才的必備技能。具備良好的編程思維和編程技術,不僅是信息產業從業人員的基本素養,也必將成為所有產業對人才的根本需求。因此,世界各國紛紛將編程教學列入義務教育的必修內容。自2014年起,英國在義務教育中加入了編程課程。美國于2015年提出在10年內普及中小學生編程教育。澳大利亞于2016年正式將編程引入全國必修課程。日本則提出,自2020年起,小學必須確保為學生提供計算機編程體驗和學習機會,到2021年,初中必須提供計算機編程課程。在我國教育部于2019年3月13日發布的《2019年教育信息化和網絡安全工作要點》中也明確指出,國家將推動在中小學階段設置人工智能相關課程,逐步推廣編程教育。可見,編程教學在今后的教育體系中,必將占據日益重要的地位。
與成人教育有所不同,面向中學生開展編程教學,不僅需要傳授扎實的編程知識,培養良好的編程習慣,更重要的是要科學設計教學任務,合理安排教學過程,以便提高編程的趣味性和成就感,充分調動學生的學習興趣,獲得較好的教學效果。在這方面,Python語言具有很大的優勢。
Python語言的語法結構清晰,代碼形式簡潔,是公認的最接近自然語言的編程語言。與傳統的編程語言如C、Java等相比,語法細節較少,記憶負擔較輕。可視化手段豐富,能夠便捷地實現生動、直觀的輸出效果,有利于提高編程的趣味性和成就感,對于中學生來說,更容易上手和靈活應用。同時,Python語言開放性好,庫資源豐富,能夠方便地實現數據采集、清洗和分析,編程效率高,當前在數據分析、機器學習等領域得到了非常廣泛的應用,發展前景廣闊。因此,在國外一些發達國家排名前百的高中和大學中,有超過6成均開設了Python 以及相關課程,部分學校已經將計算機專業課程設計中的第一編程語言從Java改成了Python(于雁2019)。
以Wordcloud庫為例,該庫是一個功能強大的第三方庫,不僅可以根據文本中詞語的出現頻率繪制詞云,還可靈活設定詞云的字體、顏色、形狀等,從而從視覺上凸顯高頻詞及其相應的頻次,揭示文本的主要參與者和故事脈絡,是一種優秀的數據呈現形式。本文將充分利用Wordcloud庫及相關庫的功能,結合中學生的喜好,合理設計教學任務和過程,循序漸進,做到寓教于樂,有效提高編程教學的趣味性。
2教學目標及編程環境準備
本案例的教學目標是指導學生運用Python的庫資源,制作一個文本的詞云,并通過設置參數,控制輸出圖像的尺寸、內容和形狀等。制作詞云通常分為三個步驟,即分詞、圖像繪制和輸出,分別使用Jieba、Wordcloud和Matplotlib三個庫,涉及Windows命令提示符環境下的指令輸入、數據類型、文件操作以及Python庫的安裝、調用以及參數傳遞等重要知識點。
首先,指導學生啟動命令提示符,依次輸入命令,安裝Jieba、Wordcloud和Matplotlib等本程序所需的庫,由此學習Python第三方庫的安裝方法(例1)。如果在安裝過程中,提示pip工具版本過低,就應該先更新Pip包管理工具(例2)。當Pip更新到最新版本后,如果安裝Wordcloud還是報錯,我們就必須采取第二種安裝方法,即根據當前使用的Python版本,在https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud網頁上選擇正確的安裝文件(如3.7.x版本的Python必須匹配cp37的包)并下載。隨后,在命令提示符環境下輸入以下語句進行安裝(例3)。
(1) pip install (庫名,如jieba等)
(2) python -m pip install --upgrade pip
(3) pip install wordcloud-1.5.0-cp37-cp37m-win32.whl
要運行Wordcloud,還需要Pillow、Numpy和Matplotlib庫的支持。如果系統還沒有安裝這些庫,程序會自動下載并安裝。
最后,我們需要準備一個文本文件作為解析對象,可由學生自由選擇,以提高編程的趣味性。本案例使用的是一部在中學生中很受歡迎的網絡小說《全職高手》。
3程序的編制與完善
要實現基本的詞云繪制功能,只需要使用Jieba和Wordcloud庫。其中,Jieba是目前最好的中文分詞工具,提供精確模式、全模式和搜索引擎模式三種分詞方式。本案例使用其默認的精確模式。Wordcloud則是詞云制作工具。在教學過程中,教師需要著重講解的內容包括庫的導入、功能調用和參數傳遞等。學生只需編寫6條語句,就能完成庫導入、讀文本、分詞、調用Wordcloud、生成詞云和保存圖像(例4-9),從而實現程序的基本功能,并獲得詞云的圖像文件(圖1)。在此基礎上,教師可以指導學生通過修改例7中“width”“height”“background_color”以及“font_path”等參數,調整圖片的寬、高、背景色以及字體。
(4) import jieba,wordcloud
(5) text = open("全職高手.txt").read()
(6) text = " ".join(jieba.cut(text))
(7) w=wordcloud.WordCloud(width=1000,height=700,background_color="white",font_path="C:\\Windows\\Fonts\\msyh.ttc")
(8) w.generate(text)
(9) w.to_file("wordcloud.png")
在完成基礎程序編制的基礎上,教師可以指導學生設置一些屬性,進一步完善詞云的分析結果和顯示效果。例如,觀察圖1我們發現,“葉修”一詞最大,說明其出現頻率最高,是該小說的核心人物。但是,“他們”“但是”“已經”“這樣”等詞盡管使用也很頻繁,卻缺乏指向性。因此,最好作為停用詞予以排除。Wordcloud的停用詞應設為set(集合)類型,并在調用該庫時將其作為“Stopwords”屬性傳遞給Wordcloud(例10-12)。如果停用詞較多,我們還可以將其統一設為數組,并用for循環,逐一添加進Stopwords(篇幅關系,代碼省略)。在排除“他們”“但是”“這樣”“自己”“就是”“沒有”等16個停用詞后,獲得了新的詞云(圖2)。在該圖中,除“葉修”外,“君莫笑”“陳果”等人物也凸顯出來。同時,“現在”“此時”的出現頻率很高,說明作品中對故事發生時的場景描寫較多。“角色”“攻擊”“技能”“選手”等詞使用較多,也符合作品描寫主人公如何成長成為一名游戲選手的故事情節。可見,排除部分停用詞后,故事的出場人物和相關信息更加清晰了。
(10) Stopwords=set("")
(11) Stopwords.add("他們")
(12) w=wordcloud.WordCloud(stopwords=Stopwords,width=1000,height=700,background_color="white",font_path="C:\\Windows\\Fonts\\msyh.ttc")
Wordcloud默認繪制的方形圖片盡管內容翔實,但仍不夠有趣。因此,教師可以指導學生通過mask屬性設置蒙板,改變輸出圖像的形狀,進一步提高編程的趣味性。該屬性需要一個二值化的mask。為此,我們導入繪圖庫Matplotlib以及Numpy數學函數庫,用前者提供的圖像處理功能打開構建蒙板所用的圖片文件(圖3),并用后者的array指令完成由彩色圖片向二值化數據的轉化(例13)。在將mask屬性傳遞給Wordcloud后(例14),高頻詞將被顯示在蒙板圖片中非白色的位置上(圖4)。于是,程序輸出更加生動、有趣了。
(13) MaskImg=np.array(Image.open("mycf.jpg"))
(14) w=wordcloud.WordCloud(mask=MaskImg,width=1000,height=700,background_color="white",font_path="C:\\Windows\\Fonts\\msyh.ttc")
4結語
本文以詞云制作為例,探討了如何科學規劃教學內容,合理設計教學過程,巧妙運用可視化等技術,提高Python編程教學的趣味性。盡管在教學過程中,涉及命令提示符環境下的指令輸入、數據類型、文件操作以及Jieba、Wordcloud、Matplotlib和Numpy等重要的庫的導入、功能調用和參數傳遞等眾多知識點,但并不顯得枯燥、晦澀。由于采取了循序漸進、不斷完善的教學方法,且輸出形式直觀、生動,因此學習過程較為輕松,富有樂趣。
綜上所述,Python語言具有良好的開放性,第三方庫資源豐富、強大,語法較為簡單、代碼量較少,有效地降低了程序編制的門檻,非常適合中學生學習。目前,Python語言已進入中學信息技術課程。但時間尚短,教學體系有待完善,教學內容有待豐富,急需我們結合中學生習得特點,充分發揮其綜合優勢,科學設計教學內容,合理規劃教學過程,引導學生運用Matplotlib等繪制圖表,運用爬蟲技術制作單詞表或運用Pygame等編制游戲,從而幫助他們獲得更多樂趣和成就感,消除畏難情緒,充分調動學習積極性和主動性,以便快速提高編程水平,有效提升教學效果。
參考文獻:
[1] 于雁.高中信息技術python模擬程序的編寫及應用[J].電腦知識與技術,2019,15(30):224-225.
[2] 高曉明.初中Python教學的組織與實踐[J].中國信息技術教育,2019(23):26-27.
[3] 邱偉松,莊鴻鴻.融入圖形化編程的算法課程的教學效果對比分析[J].福建電腦,2019,35(7):131-132.
[4] 孫芳.以學生為中心的教學——高中信息技術項目學習初探[J].電腦知識與技術,2019,15(34):114-115.
[5] 王世達.初中信息科技實施Python編程教學的策略與思考[J].上海課程教學研究,2019(11):35-39.
[6] 楊芷若.對高中生提高計算機編程能力的體會[J].數字通信世界,2018(3):270+282
[7] 楊芷若.對高中生提高計算機編程能力的體會[J].數字通信世界,2018(3):270+282.
[8] 郭斯羽,溫和,孟志強,等.面向教學的可視化圖像處理編程語言設計[J].中國教育信息化,2017(8):93-96.
【通聯編輯:王力】