APP下载

运用Python可视化技术 提高中学编程教学趣味性

2020-09-29毛星皓

电脑知识与技术 2020年17期
关键词:词云分词高中信息技术

毛星皓

摘要:如何提高学生的积极性,是中学编程教学始终需要关注的问题。本文以词云制作为例,探讨在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.

【通联编辑:王力】

猜你喜欢

词云分词高中信息技术
分词在英语教学中的妙用
高中信息技术探究式教学的实践与思考
面向跨语言词云可视化的拓扑保持布局算法研究
论英语不定式和-ing分词的语义传承