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