1、课程基本信息课题算法与程序综合应用2教科书书名: 信息技术必修1 出版社:人民教育出版社;中国地图出版社 出版日期:2019 年 6 月教学目标教学目标: 了解文本分析的一般思路,体验解决文本问题的全过程;能利用读取文本文件的方式获取数据;认识字典数据类型,能利用字典存储和管理数据;知道jieba库的功能,能利用jieba库实现中文分词;能选择并利用已学算法,实现词频统计; 学习程序调试方法,提高编程能力;教学重点:文本分析的思路;读取文件的方法;字典及其使用;jieba库的功能及使用;教学难点:运用算法与编程知识来解决问题教学过程时间教学环节主要师生活动2分钟情境引入利用python进行编程
2、,我们不仅能处理数值数据、解决数学问题。它在处理文本数据 ,进行文本分析方面也颇具优势。比如,我们看到的热词榜、词云图、舆情趋势、文本情感分析等,这些都是利用编程来对文本进行分析处理的结果。这节课,我们就一起来分析解决一个文本数据处理的问题。小明在阅读时萌生了利用编程分析文学作品的想法,来看看他具体的需求。小明在阅读三国演义时,为了分析这部文学作品的内容及其写作特色,想把作品中出现次数最多的20个词查找出来。如何利用编程来实现呢?3分钟问题分解要解决的核心问题是查找文章的高频词已知条件是待处理的文本数据;编程实现时需要有读取模块。求解目标:输出高频词20个。编程时需要有显示输出模块。如何求解的
3、呢?我们可以根据结果 逆推一下。求解过程分析:分析统计、输出的是词语。但原始文本数据是整篇文章。人能识别提取文章中的词语,但计算机不行。因此,需要想办法将整篇文章切分或转换成相应的词语集合。这需要中文分词功能。需要统计每个词语的出现次数。这需要词频统计功能。根据词语的出现次数进行排序比较,选出符合要求的前20个词语。这需要词频排序功能。据前面的分析,我们可以将这个较为复杂的大问题分解为读取文件、中文分词、统计词频、词频排序和显示输出五个功能模块。16分钟实践探究5实践探究实践探究实践探究1、读取文件实践活动一:请同学们自行阅读任务单活动一学习材料。 输入并尝试理解相关语句。代码分析:读取文件通
4、过两条语句来完成。第一条语句,打开指定的文件,创建一个文件对象;第二条语句,读取文件中的全部内容。调试方法及演示:一个非常简单但有效的调试程序方法,我们可以利用print函数随时输出变量的内容或类型,来观察程序的进展 。程序演示与分析:见视频 2、中文分词(1)中文分词:读取文件输入数据已实现。下面我们来看看中文分词功能。文本数据已输入。我们需要将文本内容进行分词。问:什么是中文分词呢?中文分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。问:为什么中文需要分词?中文是以字为基本书写单位,词语之间没有明显的区分标记,因此进行中文处理时通常先将文本字符串切分成合理的词语序列,然后再进行
5、其它分析处理。(2)jieba与模块Jieba模块对中文有着强大的分词能力。Jieba模块是我们目前为止接触和使用的第一个第三方库。简要介绍下.Ptyhon语言中模块可分为标准模块、第三方模块和自定义模块。标准库是默认自带,不需要下载安装的。如之前我们接触和使用过的random随机数库。第三方模块是需要下载安装的模块。Jieba模块是使用前需要下载安装。(3)实践活动2:下面请同学们参照任务单中说明完成jieba模块的安装。自学中文分词相关语句的基本使用方法。(4)代码分析与效果演示:中文分词功能通过两条语句实现。首先导入分词模块。接着利用模块中lcut方法,将变量txt中的文本切分成词语后赋
6、值给变量words。老师来演示一下调试过程。仔细观察下。WORS变量的内容是由中括号括起来,中间用逗号分开。表明它是列表类型。列表中的元素就是分好的词语。(视频 )3、词频统计实践活动三:请同学们综合应用前面所学内容分析并确定算法。尝试绘制算法流程图。(1)算法的选择:解析算法需要找到已知条件与求解目标之间关系的表达式。统计每个词语的词频,能否找到这样的表达式呢?显然没有。枚举算法的思路是确定范围并逐一判断。显而易见,枚举算法适合解决统计词频这个问题。(2)算法的描述:利用枚举算法如何实现词频统计?我们一起梳理下词频统计的算法思路。 从词语表中取一词,判断是否是单字词,如果是,忽略不计,能出本
7、次循环。再到词语表中依序取一词,判断是否是单字词,如果不是,判断是否统计过。如果是第一次统计,需要将词语加入统计表并记录其出现次数为1;如果已经统计过,则原出现次数加1。直到依序取完所有的词,统计结束。(结合流程图)(3)字典类型及使用 问题;需要统计出词语内容及其出现次数。你打算用什么方式来记录和存储呢?我们之前学过利用列表来存储一组数据集合。有的同学表示:利用两个列表分别记录词语内容及出现次数。还有的同学打算利用一个列表,单数索引值存内容,双数索引值存出现次数。两种方案都可以实现。但采用列表这种方式,一旦词语顺序发生调整,容易出现次数对应上的错误。字典类型:字典。它能较好地刚才出现的问题。
8、字典的每个元素是个键值对,之间用冒号分隔。冒号左侧是创建后不可变的数据,称为键;冒号右侧是可变数据,称为值。如水果价格数据,可采用字典来记录。字典是无序集合。字典类型用花括号括起其中的元素,键与值之间用冒号分隔。通常用键来访问值。(4)代码的分析与演示请同学们依据算法流程图编写词频统计相关代码。代码分析与演示。4、词频排序实践活动四:问题1:字典中的元素能否进行排序呢?问题2:如何实现按词语的出现次数进行排序? 参看资源包中的导学资料。动手尝试编程实现。分析:问题1:因为字典是无序集合,所以字典中的元素不能进行排序。怎么解决?需要将字典转换成有序集合。如转换成列表类型。列表类有排序函数可以实现
9、快速排序。这样问题2迎刃而解。代码分析与演示:第一条语句,用list方法字典转为列表;第二条语句,利用列表的排序函数,实现排序。排序规则为按出现次数降序排列。5、显示输出 实践活动:自己学一学试一试。代码分析及效果演示。利用for语句,输出列表中前20个元素即可。小结:经历了读取文件、显示输出 五个模块,查找文章高频词的问题得以解决。2分钟知识扩展四、扩展通过分析前20个高频词,我们可以了解到作品的主要人物、地点及大体猜测作品的背景。(将军等说明有战争。)但同进也发现了不足,出现多词语指向同一人现象及包含意义不大的词语,需要我们进一步优化。同学们可以在此基础上继续研究分析数据,统计每个人物在全
10、书总的出现次数,寻找作品的核心人物。可以统计人物在全书各章回中的出现次数,总体进行分析人物在全书中的活动情况。如图中这一部分关羽有了密集出现,这是关羽过五关斩六将北上寻找刘备的精彩情节。 再比如80回后,是诸葛亮接受先帝托孤,鞠躬尽瘁的具体表现。分析后利于我们对这部经典作品的深入理解1分钟课堂小结与练习五、课堂小结:分治思想:用计算机解决复杂问题时,可以将大问题分解成若干个小的功能模块,然后逐一分析实现。算法与程序方面我们重温了枚举算法、学习了新的数据类型-字典,应用了一种简单有效的调试方法。文本数据的处理问题,我们了解了文本分析的一般思路,学习了文本数据处理的技巧和方法。六、课后练习:1.请同学们修改程序,实现如下功能:查找出场次数最多的5个人物。2.尝试着分析其它作品如乡土中国老人与海,说一说你的发现。3利用思维导图工具,梳理本章核心内容与关键能力