资源简介 2.4.3算法与程序实现的综合应用第二课时练习题jieba库有三种模式,请写出不同模式下的分词结果。1全模式(以一个字为基准,筛选邻近并且可以组成词语的字进行组合显示)importjiebas="钓鱼要上岛上钓不上岛上钓不到"seg_list=jieba.cut(s,cut_all=False)#cut_all=False表示全模式分词print("FullMode:","/".join(seg_list))2.精准模式importjiebas="钓鱼要上岛上钓不上岛上钓不到"s1="钓鱼要上岛上钓,不上岛上钓不到"seg_list,seg_list1=jieba.cut(s),jieba.cut(s1)#cut_all=True表示全模式分词;省略的话,默认为精准模式print("FullMode:","/".join(seg_list),"\nFullMode1:","/".join(seg_list1))3搜索引擎模式importjiebas="钓鱼要上岛上钓不上岛上钓不到"seg_list=jieba.cut_for_search(s)#该模式适用于搜索引擎构建倒排序索引的分词print("FullMode:",",".join(seg_list))答案:1写出分词结果:2分词结果:3分词结果:教学设计课例名称2.4.3算法与程序实现的综合应用(第二课时)学段学科高一信息技术教材版本人教中图版章节必修1第二章第四节授课学校核心素养目标根据具体需要,应用不同的算法,编写程序实现相应的问题求解。借助给定的资源进行对比,完成相应问题分析。有意识地迁移,应用所学方法解决类似问题,强化主动应用算法知识解决问题的意识。3、分析程序实现的关键技术,加深学生对数字化工具背后的技术思想和方法的感悟。教学重难点1、教学重点:词频统计的算法设计与程序实现。亲历阅读与分析程序,体会程序中每一语句、函数的含义。2、教学难点:结合具体问题进行算法优化,并总结此类问题的解决方法,迁移到类似问题中。教材分析本节内容是算法与程序实现的综合应用,教材案例中引用一个重要的技术支撑:字典。本节多了一些全新概念和功能实现,在教学中需要不拘泥于教科书中提供的资源,拓展更多的内容。本节内容较多,分为两课时讲解,第一课时主要学习字典的相关知识,第二节课主要是经历具体问题的解决过程,进行算法与程序实现的综合应用,由浅入深,自顶而下,逐步求精地学习。教学策略本节强调学生通过感悟迁移和操作来体验算法与程序的综合应用,通过案例的举证和类比总结相关问题的解决方法。突出学生主体,让学生亲历问题解决的全过程,通过师生交流、生生交流、逐步理解和内化算法思想,鼓励学生对运行结果进行分析,思考问题产生的原因,进一步优化。2.4.3算法与程序实现的综合应用第二课时教学准备:在电脑cmd后台下载安装如下工具:一、温故知新——字典与列表对前面所学的字典与列表进行比较,归纳梳理,总结出相似点与不同点。1、相似点列表的元素和字典的值可以是任意类型,比如数字、字符串、列表、字典,甚至对象等类型。2、不同点(1)列表有顺序,索引总是从0开始、连续增大的,字典无序,不需从0开始。(2)列表不允许对不存在的索引赋值,但字典则允许直接对不存在的key赋值。(3)列表中的元素是使用索引访问的,通过索引可以对数据进行查询、修改、删除。(4)字典中的元素是使用键来访问的,通过键可以对数据进行查询、修改、删除。(5)字典的查找效率要比列表的查找效率更高。二、讲授新知(一)字典与列表的相关函数字典没有顺序,但调用字典的keys()函数可以得到键构成的列表。列表可以排序,将字典元素转换为列表,再排序。(二)读取文件Python对文本文件和二进制文件采用统一的操作步骤:?打开-操作-关闭1、打开文件调用内置函数open()打开文件,并实现该文件与一个变量的关联。open()函数语法:?<变量>=open(<文件名>,<打开模式>)参数说明:<文件名>可以是一个简单的文件名,也可以是包含完整路径的文件名。<打开模式>用于控制打开文件的方式,例如读或写。2、读取文本文件,替换内容、写出文件三、学以至用——英文小说的词频统计(一)词频统计的IPO描述学生探究:词频统计的IPO描述输入——处理——输出(二)词频统计的算法学生分析,在教师的引导下给出思路1、第一步:提取单词2、第二步:对每个单词进行计数3、第三步:排序(三)英文词频统计的完整程序1)读取文件,通过lower()、replace()函数将所有单词统一为小写,并用空格替换特殊字符。2)对处理后的文本进行词频统计存入字典3)统计结果存为列表类型,按词频由高到低进行排序,输出前十位(四)输出统计结果以三个步骤让学生体验构建程序的过程,亲历阅读与分析程序,体会程序中每一语句、函数的含义。改写:显示20个出现次数最多的词语。四、实践活动进一步加强解决“词频统计”相关问题的能力。1、思考:在问题求解中,要完成读取文件和显示输出内容外,程序中还要重点实现哪些功能?完成下图:以上一案例的分析进行知识迁移,给出本问题的解决过程:分词——统计——排序2、jieba分词文本词频的统计,对英文不需要很麻烦的分词技术,但对中文要准确提取词语,就需要引入Python第三方库“jieba”的知识。jieba是python中一个重要的第三方中文分词函数库,他将待分词的内容与分词词库依次进行比对,通过图结构和动态规划的方法找到最大概率的词组,生成一个列表。算法流程图4、探究活动,完成下列任务:5、调试程序为了更有效地查找、修改程序中存在的错误,需要仔细阅读和分析程序语句,掌握必要的调试方法。断点调试是一种较为直观的程序调试方式,其基本方法为: 进入调试状态; 设置断点; 检查运行状态下各个变量的值,确定错误的位置,并进行修改; 反复调试直至程序运行正确。思考:在前面已经找到的高频词中,包括有“商议”“如何”等与人名无关的词语。想一想,如何去除这些词语?尝试修改程序。五、深入探究在大数据时代,经常可以在媒体或者网站上看到一些非常漂亮的信息图。教师运行词云相关程序,引领学生通过网络搜索“词语统计+词云”相关信息,课后进一步深入学习。附:三国演义词频统计程序:importjiebaexcludes={"将军","却说","荆州","二人","不可","不能","如此"}txt=open("threekingdoms.txt","r",encoding='utf-8').read()words=jieba.lcut(txt)counts={}forwordinwords:iflen(word)==1:continueelifword=="诸葛亮"orword=="孔明曰":rword="孔明"elifword=="关公"orword=="云长":rword="关羽"elifword=="玄德"orword=="玄德曰":rword="刘备"elifword=="孟德"orword=="丞相":rword="曹操"else:rword=wordcounts[rword]=counts.get(rword,0)+1forwordinexcludes:delcounts[word]items=list(counts.items())items.sort(key=lambdax:x[1],reverse=True)foriinrange(10):word,count=items[i]print("{0:<10}{1:>5}".format(word,count))(共34张PPT)第二章算法与程序实现2.4.3算法与程序实现的综合应用第二课时目录CONTENTS一字典与列表二读取文件三词频统计四实践活动五阅读拓展字典与一列表本节程序涉及字典与列表的转换。字典的键使用不可变类型,包括布尔型、整数、浮点数、字符串和元组。可变类型(如列表)不能作为字典的键。字典和列表有类似,但也有一些区别。1、相似点列表的元素和字典的值可以是任意类型,比如数字、字符串、列表、字典,甚至对象等类型。一、字典与列表2、不同点(1)列表有顺序,索引总是从0开始、连续增大的,字典无序,不需从0开始。(2)列表不允许对不存在的索引赋值,但字典则允许直接对不存在的key赋值。(3)列表中的元素是使用索引访问的,通过索引可以对数据进行查询、修改、删除。(4)字典中的元素是使用键来访问的,通过键可以对数据进行查询、修改、删除。(5)字典的查找效率要比列表的查找效率更高。一、字典与列表3、相关函数字典没有顺序,但调用字典的keys()函数可以得到键构成的列表。列表可以排序,我们将字典元素转换为列表,再排序。(1)字典转换为列表,用函数list():?list(<字典>.items())(2)使用排序函数sorted(),默认是以列表元素的第一个子元素来排序。一、字典与列表读取文二件二、读取文件Python对文本文件和二进制文件采用统一的操作步骤:?打开-操作-关闭1、打开文件调用内置函数open()打开文件,并实现该文件与一个变量的关联。open()函数语法:?<变量>=open(<文件名>,<打开模式>)参数说明:<文件名>可以是一个简单的文件名,也可以是包含完整路径的文件名。<打开模式>用于控制打开文件的方式,例如读或写。#获取内容str1?=?f.read()#替换内容str2?=?str1.replace("ha","123")print(str1)print(str2)2、读取文本文件,替换内容、写出文件#写出文件ff?=?open(path,?"w")#将信息写入缓冲区ff.write(str2)#刷新缓冲区ff.flush()#路径path?=?r"D:\python\1.txt"#读入f?=?open(path,?"r",?encoding="utf-8")二、读取文件词频统三计三、词频统计英文小说的词频统计词频统计的IPO描述词频统计的算法词频统计的完整程序输出统计结果1、词频统计的IPO描述对于一篇文章,我们要统计并找出其中多次出现的词语,这就是“词频统计”。从算法上看,词频统计只是累加问题,也就是给文章的每个词语设计一个计数器,词语每出现一次,相关计数器就加1。以词语为键,出现次数为值,构成“词语:出现次数”的键值对。词频统计的IPO描述词频统计的IPO描述探究:词频统计的IPO描述输入——处理——输出输入:从文件中读取处理:使用字典统计词语出现的频率输出:出现最多的10个词语及其频率词频统计的算法2、词频统计的算法统计过程主要应用了哪种算法?A枚举算法B排序法C解析法D递归法词频统计的算法2、词频统计的算法第一步:提取单词统计词频的第一步,是分解并提取文章的单词。(1)同一个单词会存在大小写的形式,因此需要将大写字母统一转换为小写字母。(2)英文单词的分隔可以是空格、标点符号或者特殊符号。为了统一分隔方式,调用函数replace()将各种特殊字符和标点符号替换为空格。词频统计的算法2、词频统计的算法第二步:对每个单词进行计数假设将所有单词保存在列表words中,变量word代表words的元素,使用字典counts统计单词出现的次数:counts[word]=counts[word]+1无论单词是否在字典中,处理逻辑都可以简洁地表示为如下代码:counts[word]=counts.get(word,0)+1get()函数表示:如果word在字典中,则返回word对应的值;如果word不在字典中,则返回0。2、词频统计的算法第三步:排序对单词的统计值从高到低进行排序:items=list(counts.items())items.sort(key=lambdax:x[1],reverse=True)第1行代码是将字典转换为列表。第2行代码是按照列表元素的第2项对列表进行排序,参数reverse=True表示从大到小排序。词频统计的算法词频统计程序3、词频统计的完整程序以《飘》为例,统计词频最高的前十位。1)读取文件,通过lower()、replace()函数将所有单词统一为小写,并用空格替换特殊字符defgettext():txt=pen("piao.txt","r",errors='ignore').read()txt=txt.lower()forchin'!"#$&()+,-/:;<=>?@[\\]^_{|}·~‘’':txt=txt.replace(ch,"")returntxt2)对处理后的文本进行词频统计存入字典txt=gettext()words=txt.split()counts={}forwordinwords:counts[word]=counts.get(word,0)+3)统计结果存为列表类型,按词频由高到低进行排序,输出前十位items=list(counts.items())items.sort(key=lambdax:x[1],reverse=True)foriinrange(10):word,count=items[i]print("{0:<10}{1:>5}".format(word,count))输出词频统计结果4、输出词频统计结果从思路上看,词频统计只是一个累加的问题,用于网络信息的自动检索和归档,但在信息爆炸时代,这种检索或归档非常有必要。在词频统计领域,哈佛大学的齐夫老师做了开创性的工作,提出了齐夫定律:即词的频次和他的等级相乘是一个常数。另外剑桥大学有一款词频分析软件WordSMith,狂难用。实践活四动《三国演义》词频统计 Python在自然语言处理方面,有其天然的优势:简单、快捷。所以经常会遇到利用Python从一篇文档中,统计文本词频的问题。以《三国演义》这部名著为例,进行中文词语的统计,文中哪些人物的出场次数最多呢?让我们用Python来解决看看吧!IPO描述探究完成此问题的IPO描述: 经前面分析,文本词频统计是通过对文本信息的自动检索,进行累加的计算。Input:读取《三国演义》内容Process:利用“字典”统计词语的出现次数Output:打印出《三国演义》中出场次数最多的人名和具体次数问题解决过程 思考:在问题求解中,要完成读取文件和显示输出内容外,程序中还要重点实现哪些功能?完成下图:以上一案例的分析进行知识迁移,给出本问题的解决过程。jieba分词本节一直在强调的是文本词频的统计,“词语”是关键,对英文不需要很麻烦的分词技术,但对中文要准确提取词语,就需要引入Python第三方库“jieba”的知识。jieba是python中一个重要的第三方中文分词函数库,他将待分词的内容与分词词库依次进行比对,通过图结构和动态规划的方法找到最大概率的词组,生成一个列表。?python的jieba库可在命令提示符下,直接输入pipinstalljieba进行安装。jieba库常用的分词模式有三种:??精确模式:jieba.lcut(str),尽可能地将文本精确地分开,比较适合于文本分析??全模式:jieba.lcut(str,cut_all=True),把文本中可以成词的词语尽可能地分出来,速度较快,但不能解决歧义问题??搜索引擎模式:jieba.lcut_for_search(str),在精确模式的基础上,对长词进行再次切分,提高召回率,适合于搜索引擎。jieba分词函数描述jieba.cut(s)精确模式,返回一个可迭代的数据类型jieba.cut(s,cut_all=True)全模式,输出文本s中所有可能单词jieba.cut_for_search(s)搜索引擎模式,适合搜索引擎建立索引的分词结果jieba.lcut(s)精确模式,返回一个列表类型,建议使用jieba.lcut(s,cut_all=True)全模式,返回一个列表类型,建议使用jieba.lcut_for_search(s)搜索引擎模式,返回一个列表类型,建议使用jieba.add_word(w)向分词词典中增加新词wjieba库jieba分词算法流程图算法程序实现#打开“三国演义.txt”文件,读取文件内容importjieba#导入jieba分词excludes={"将军","却说","荆州","二人","不可","不能","如此","商议","如何","公主","军士","主公","左右","军马","引兵","次日","大喜","天下","东吴","于是","今日","不敢","魏兵","陛下","一人","都督","人马","不知"}f=open("threekingdoms.txt","r",encoding='utf-8')#打开文件txt=f.read()#读取文件内容程序第一句导入jieba分词程序实现探究活动,完成下列任务:第一步分词words=(请补充完整)#将句子拆分为词语保存到列表中第二步统计统计结果保存到哪里?建立空字典的语句是?根据流程图完成具体编码的实现。第三步排序items=list(请补充完整)#字典转化为列表后才可以排序items.sort(请补充完整)#对列表items按“次数”降序排序调试程序程序实现调试程序程序实现在前面已经找到的高频词中,有“商议”、“如何”等与人名无关的词语。想一想,如何去除这些词语?尝试修改程序。阅读拓五展词云实现Python词云实现学生通过网络搜索“词云”相关信息,课后进一步深入学习。谢谢 展开更多...... 收起↑ 资源列表 2.4.3算法与程序实现的综合应用(第二课时)-【新教材】人教中图版(2019)高中信息技术必修一教案.docx 2.4.3算法与程序实现的综合应用(第二课时)-【新教材】人教中图版(2019)高中信息技术必修一练习.docx 2.4.3算法与程序实现的综合应用(第二课时)-【新教材】人教中图版(2019)高中信息技术必修一课件34.pptx