推荐星级:
  • 1
  • 2
  • 3
  • 4
  • 5

Python教学中实用型词频统计案例展示

更新时间:2019-12-26 11:53:53 大小:2M 上传用户:songhuahua查看TA发布的资源 标签:python 下载积分:1分 评价赚积分 (如何评价?) 收藏 评论(0) 举报

资料介绍

针对目前程序设计课程中的教学案例实用性差的问题,分析大学生在学习和生活中遇到的实际问题以及当前的热点问题,依托Python强大的计算生态环境,提出“Python实用型案例教学”的观点,并具体针对词频统计问题,给出了大学英语四、六级考试高频词求解和可视化展示案例以及古诗字频统计及可视化展示案例,最终达到提高学生程序设计学习兴趣和解决实际问题能力的目的。


部分文件列表

文件名 大小
Python教学中实用型词频统计案例展示.pdf 2M

部分页面预览

(完整内容请下载后查看)
12 期  
计 算 机 教 育  
Computer Education  
20  
2017 12 10 日  
G642  
中图分类号:  
文章编号:1672-5913(2017)12-0020-08  
Python 教学中实用型词频统计案例展示  
邓擎琼,彭炜明,尹 乾,赵世凤,王学松  
(北京师范大息科学与技术学院,北100875)  
摘 要:针对目前程序设计课程中的教学案例实用性差的问题,分析大学生在学习和生活中遇到的实  
际问题以及当前的热点问题,依Python大的计算生态环境,提出“Python用型案例教学观  
点,并具体针对词频统计问题,给出了大学英语四、六级考试高频词求解和可视化展示案例以及古诗  
字频统计及可视化展示案例,最终达到提高学生程序设计学习兴趣和解决实际问题能力的目的。  
关键词Python序设计;实用性;案例教学;词频统计;计算生态  
全球有超过十万个第三方库,几乎覆盖所有技  
术领[5]。依托这样的生态圈,国内高校中从事  
Python 教学的老师可以便捷高效地创建出新的教  
学案例。什么样的教学案例能引起学生的共鸣,  
这是一个值得思考的问题。针对上述国Python  
教学案例中的问题,依Python 强大的计算生  
态环境,我们提出Python 实用型案例教学方  
法。一是通过分析大学生在学习和生活中遇到的  
实际问题,构建相应的教学案例;二是针对热点  
问题、热点资讯构造教学案例。这些案例不仅能  
让学生感Python 计算生态圈的功能之强大和  
多样,更能增强学生程序设计学习兴趣,激发学  
生自主学习和运Python 计算生态,最终提高  
实际解决问题的能力。  
1 背 景  
Python 语言已经成为国际最受欢迎的程序设  
计语言,国外众多大学2009 年开始针对该语  
言广泛开设相关课程。然而国内起步较晚,直到  
2016 年,教育部高等学校大学计算机课程教学  
指导委员会才首次建议Python 语言作为程序  
设计入门课程的教学语[1]2 年来,国内一  
批高校逐步开设Python 语言教学。由于教学实  
践时间尚短,国Python 教学中多沿用国外的教  
学案例或其他程序设计语言的教学案例,其中前  
者导致教学案例缺乏中国特色,后者导致教学案  
例缺Python 特色。例如针对文本词频统计这一  
问题,国内高校往往使用国外教材或教学中的案  
例,对莎士比亚的经典作品《哈姆雷特》[2]、古  
腾堡文学作[3]、美国总统就职演说等进行词频  
统计和分析,显然这样的教学案例远离中国大  
学生的学习和生活,因此缺乏吸引力。再如在  
Python 循环结构的教学中,国内高校往往还以闰  
年判断、打印水仙花数等问题作为案[4],这些  
问题既不是学生关心的问题,也不是热点问题,  
因此也很难给学生留下深刻印象。  
本文具体针对词频统计问题,给出了两个  
教学案例。一是针对大学英语四、六级考试,通  
过对历年试题分析获得其中的高频词,辅助学  
生进行英语复习;二是在中央电视台科教频道  
大型文化益智节目《中国诗词大会引领下,  
带动学生对不同诗人、不同朝代以及不同风格  
的诗词进行比较,从中分享诗词之美,感受诗  
而另一方面Python 有强大的计算生态环境, 词之趣。  
基金项目:北京师范大学新生研讨课项目“Python序设计14-04-39北京师范大学研究生方法课建设项  
目“Python程之美11300-3122121a1。  
作者简介:邓擎琼,女,高级工程师,研究方向为计算机图形学,qqdeng@ bnu.edu.cn;  
王学松(通信作者男,高级工程师,研究方向为虚拟现实在教育中的应用,wangxs@ bnu.edu.cn。  
词、比较级形容词等进行还原处理,得到原型单  
词(即词元之后再判断该单词是否为六级单  
词,如果是则保存至一个列表;不是则摒弃。词  
形还原在自然语言处理中非常常见。常用第三  
方模NLTK 来处理。处理过程一般为:首先  
用字符串split() 方法NLTK 提供的分句工  
具(例punkt sentence segmenter整套试题  
分解成一个一个的句子,然后对每一个句子用  
NLTK 供的工(例word_tokenize pos_  
tag其进行分词和词性标注,得到该句子中的  
每一个单词和它的词性,之后对每个单词根据  
其词性采用 NLTK 提供的词性还原工具(例如  
WordNetLemmatizer到对应的词元。这样得到  
的词元很准确,但国内大多数高校Python 是  
作为入门语言进行教学,上NLTK 模块的实现  
有些难度,因此可根据教学情况采用简化方法。  
例如,可采用字符串的方法对一般化变形的动词  
和名词实现词形还原,具体代码如下:  
import string  
2 大学英语四、六级考试高频词分析  
我们对大学英语四、六级历年考试真题进行  
分析,从中挖掘出常考词。这一案例对学生吸引  
力非常大,且案例运行结果实用性强,能辅助学  
生进行复习,提高考试成绩。  
该案例是一项综合性案例,展示Python  
多个知识点的运用,包括:首先利Reqests 和  
Beatifulsoup Python 第三方库爬取相关网页  
获得英语考试历年考题以及四、六级词汇表;然  
后对试题文本进行规范化处理,得到其中的四级  
或六级单词,并进行词频统计;最后把词频统计  
结果保存CSV 文件,并利Matplotlib 库对高  
频词及每年出现次数进行直观显示。下面以英语  
六级考试为例,详细介绍该案例的具体实现过程  
及结果。  
2.1 年试题及词汇表的获取  
很多英语学习网站,如新东方在线、沪江  
英语等都提供历年考试真题和单词词汇表。通过  
比较这些网站,最终我们选择
com/cet4/zhuanti/linianzhenti/ 上爬2014 6 月  
2016 12 月的考试真题,以及
koolearn.com/20160210/796642.html 爬取词汇  
表。原因是上述两个网站资料相对齐全且分类整  
齐,利于进行网络数据获取。在获取过程中主要  
requests.get() BeautifulSoup find() 方  
法。其中前者用于得到网页内容,后者用于从网  
页内容中解析和获取需要的数据。为便于后续分  
析,在爬取每一年的试题数据后,把该数据保存  
txt 文件,存在本地磁盘。单词词汇表数据做  
同样处理。  
def loadExamp(fname): #fname 为一txt 试题文件  
with open(fname, 'rt', encoding='UTF-8') as f:  
text=f.read().lower()  
lst =[] #lst 保存试题中包含的六级单词  
text = text.replace('--', ' ')  
text = text.replace('(', ' ')  
text = text.replace(')', ' ')  
text = text.replace('?', ' ')  
# 去除无空格分割的标点符号  
wordlist= text.split()  
for word in wordlist:  
word=word.strip(' !“{}')  
# 去除中文标点符号  
2.2 题中的六级单词提取  
word=word.strip(string.punctuation)  
通过上述步骤获得的试题书写很不规范,里  
面含有很多中英文标点符号、中文字符等,且不  
同句子间经常无空格分开,因此需要对这些文  
本进行规范化处理。此外,英语单词存在各种  
形态变化:动词的多种时态(过去时、过去完  
成时、一般现在时和现在进行时名词复数形  
式、形容词比较级等。而六级词汇表中保存的都  
是单词原型,如动词为一般现在时态、名词为单  
数形式等。因此,单词提取还包括一个“词形还  
过程,即对不同时态变化的动词、复数名  
# 去除英文标点符号  
if word in cet6:  
#cet6 为六级单词列表,下面为词形还原过程  
lst.append(word)  
elif word.endswith(('s','ed'))and word[0:-1] in cet6:  
# works workliked like  
lst.append(word[0:-1])  
elif word.endswith(('es','ed'))and word[0:-2] in  
cet6: # boxes boxworked work  
lst.append(word[0:-2])  

全部评论(0)

暂无评论