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