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