版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章Python第三方库python程序设计基础教程9.1第三方库概述
本节主要介绍Python的第三方库的用法,包括jieba库和wordcloud库的用法简介,jieba库是通过将待处理内容与与分词词库进行比对,按指定策略获得包含的分词。worcloud库是一个优秀的词云展示第三方库。9.2第三方库的获取和安装
本节主要介绍的第三方库有jieba库以及wordcloud库,安装方法有两种。(1)安装包模式安装:在Windows系统环境下,从对应的jieba和wordcloud库的官方网站下载安装包,自动安装即可。(2)在线安装:通过pip3语句进行安装pip3install+‘对应第三方库的名字’9.2第三方库的获取和安装
(2)在线安装:通过pip3语句进行安装有时在线镜像源安装可能会较缓慢,可以采用清华大学镜像源,安装语句如下:pip3install+’第三方库的名字’-i+‘清华大学镜像源’•清华大学镜像:/simple•阿里云镜像:/pypi/simple/•中国科技大学镜像:/simple/•华中理工大学镜像:/•山东理工大学镜像:/•豆瓣镜像:/simple/9.3jieba库及其使用
本节主要介绍的jieba库是一个第三方中文分词主要功能:利用一个中文词库确定汉字之间的关联概率,汉字间概率大的组成词组,形成分词结果。通过命令行下运行一下命令进行安装jieba.lcut(sentence,cut_all=true)全模式,返回语句sentence中所有可以成词的词语,速度非常快,但是不能解决歧义。jieba.lcut(sentence)精确模式,试图将语句sentence最精确地切开,适合文本分析。jieba.lcut_for_search(sentence)搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。pip3installjieba9.3jieba库及其使用
jieba库常用方法方法含义jieba.lcut(sentence)精确模式,将语句划分开,返回值为列表类型jieba.lcut(sentence,cut_all=true)全模式,输出文本sentence中所有可能单词,返回值为列表类型jieba.lcut_for_search(sentence)搜索引擎模式,适合搜索引擎建立索引的分词结果,返回值为列表类型jieba.cut(sentence)精确模式,将语句划分开,返回值为可迭代的数据类型jieba.cut(sentence,cut_all=true)全模式,输出文本sentence中所有可能单词,返回值为可迭代的数据类型jieba.cut_for_search(sentence)搜索引擎模式,建立适合搜索引擎检索的分词结果,返回值为可迭代的数据类型jieba.add_word(sentence)向分词词典中添加新词9.3jieba库及其使用
例9-1三种模式的应用。importjiebaseg_list=jieba.cut("《生死疲劳》是中国当代作家莫言创作的长篇小说",cut_all=True)print("fullpattern:"+",".join(seg_list)) ##全模式seg_list=jieba.cut("《生死疲劳》是中国当代作家莫言创作的长篇小说")print("accuratepattern:"+",".join(seg_list)) ##精确模式seg_list=jieba.cut_for_search("《生死疲劳》是中国当代作家莫言创作的长篇小说") ##搜索引擎模式print("searchmodel:"+",".join(seg_list))9.3jieba库及其使用
例9-2统计唐诗三百首中的词语出现次数。编程思路:词频分析,就是对某一或某些给定的词语在某文件中出现的次数进行统计分析。中文词频分析的基本原理是利用jieba库对文章进行分析,统计每个词出现的个数,就是建立词和出现次数的字典。然后按出现的次数从高到底排序,根据出现频率高的词来分析文章。importjieba#首先要保证所打开的文件是utf-8编码,如果不是,可使用记事本另存为utf-8编码#UTF-8是一种面向互联网传输出现的变长(1-4字节)的字符UNICODE编码,它兼容ASCII码,即英文字符1个字节,汉字占3个字节。withopen('唐诗三百首.txt','r',encoding='utf-8')asfr: txt=fr.read();words=jieba.lcut(txt)#精确模式分析,返回一个列表类型counts={}#生成一个空字典forwordinwords:#统计每个单词的个数 counts[word]=counts.get(word,0)+1#有则加1,没有返回0+1(添加了新的键值对)items=list(counts.items())#返回所有的键值对items.sort(key=lambdax:x[1],reverse=True)#排序foriinrange(30):#打印前30个 word,count=items[i] print("{0:<10}{1:>5}".format(word,count))#word左对齐,count右对齐9.3jieba库及其使用
例9-2统计唐诗三百首中的词语出现次数。编程思路:排在前面的这些词的统计结果没有意义,如标点、空格、没有意义的字等。这些词可以在统计前用空格替换掉,或者在统计之后从字典中删除,一般做法是将这些词收集起来,建立停用词表。常用的停用词表可以在网上下载。过滤掉长度为1的词。importjiebadefstopwordslist(filepath):stopwords=[line.strip()forlineinopen(filepath,'r',encoding='utf-8').readlines()]returnstopwordsstopwords=stopwordslist('中文停用词.txt')#加载停用词表的路径withopen('唐诗三百首.txt','r',encoding='utf-8')asfr: txt=fr.read();words=jieba.lcut(txt)#精确模式分析,返回一个列表类型counts={}#生成一个空字典forwordinwords:#统计每个单词的个数 ifwordnotinstopwords: iflen(word)!=1:#同时过滤长度为1的字 counts[word]=counts.get(word,0)+1items=list(counts.items())#返回所有的键值对items.sort(key=lambdax:x[1],reverse=True)#排序foriinrange(30):#打印前30个 word,count=items[i] print("{0}({1}),".format(word,count),end='')9.3jieba库及其使用
例9-3中文词频分析,统计“水浒传.txt”中出现频率最高的二十个英雄人物及出现次数。思路:词频分析,就是对某一或某些给定的词语在某文件中出现的次数进行统计分析。中文词频分析的基本原理是利用jieba库对文章进行分析,统计每个词出现的个数,就是建立词语和出现次数的字典。然后按出现的次数从高到底排序,根据出现频率高的词来分析文章内容。importjiebaimporttimestart=time.perf_counter()#起始时间txt=open("shuihuzhuan1.txt","r",encoding='utf-8').read()names=['宋江','卢俊义','吴用','公孙胜','关胜','林冲','秦明','呼延灼','花荣','柴进','李应','朱仝','鲁智深','武松','董平','张清','杨志','徐宁','索超','戴宗','刘唐','李逵','史进','穆弘','雷横','李俊','阮小二','张横','阮小五','张顺','阮小七','杨雄','石秀','解珍','解宝','燕青','朱武','黄信','孙立','宣赞','郝思文','韩滔','彭玘','单廷珪','魏定国','汤隆','杜兴','邹渊','邹润','朱贵','朱富','蔡福','蔡庆','李立','李云','焦挺','石勇','孙新','顾大嫂','张青','孙二娘','王定六','郁保四','白胜','时迁','段景住']words=jieba.lcut(txt)cnt={}#用来计数forwordinwords:ifwordnotinnames:#如果根本不是人名,那就不记录这个分词了continuecnt[word]=cnt.get(word,0)+1items=list(cnt.items())#将其返回为列表类型items.sort(key=lambdax:x[1],reverse=True)#排序print(items)foriinrange(20):#输出二维列表name,ans=items[i]print("{0:<5}出现次数为:{1:>5}".format(name,ans))end=time.perf_counter()#结束时间print('程序运行时间:%.4f'%(end-start))9.3jieba库及其使用
例9-4现有一英文文本文件“Ihaveadream.txt”,欲统计其中单词出现频率最高的10个单词。思路:词频分析,就是对某一或某些给定的词语在某文件中出现的次数进行统计分析。英文词频分析的基本原理是统计每个词出现的个数,就是建立词语和出现次数的字典。然后按出现的次数从高到底排序,根据出现频率高的词来分析文章内容。排在前面的这些单词的统计结果没有意义,如标点、空格、没有意义的符号等。这些词可以在统计前用空格替换掉,或者在统计之后从字典中删除,一般在统计前将无意义单词用空格替换。importstringdefsplitwords(filepathname):f=open(filepathname,"r")filedata=f.read()f.close()forchinstring.punctuation+string.whitespace:filedata=filedata.replace(ch,"")wordslist=filedata.split("")while""inwordslist:wordslist.remove("")returnwordslistwordslist=splitwords("Ihaveadream.txt")print(wordslist)##wordtimesdic={}##forwordinwordslist:##ifwordnotinwordtimesdic:wordtimesdic[word]=wordslist.count(word)##print(wordtimesdic)wordtimesdic={}forwordinwordslist:ifwordnotinwordtimesdic:wordtimesdic[word]=1else:wordtimesdic[word]+=1print(wordtimesdic)wordtimeslist=list(wordtimesdic.items())wordtimeslist.sort(key=lambdaitem:item[1],reverse=True)foriinrange(10):print("第{}名:{},出现了{}次。".format(i+1,wordtimeslist[i][0],wordtimeslist[i][1]))9.4wordcloud库及其使用worcloud库是一个优秀的词云展示第三方库。安装方法有两种方法。第一种方法步骤如下:1安装wheel2安装wordcloud2.1查看对应whl版本2.2下载对应的wordcloud版本pip3installwheel9.4wordcloud库及其使用worcloud库是一个优秀的词云展示第三方库。安装方法有两种方法。第一种方法步骤如下:2.3安装wordcloudpipinstall‘对应的wordcloud下载路径’2.4安装成功9.4wordcloud库及其使用worcloud库是一个优秀的词云展示第三方库。安装方法有两种方法。第二种方法步骤如下:安装成功结果如图所示。pip3install-i/simplewordcloud9.4wordcloud库及其使用wordcloud库常用方法:-WordCloud()。方法含义w=wordcloud.WordCloud(width,height,min_font.size,max_font.size,font_step,font_path,max_words,stopwords,mask,background_color)
width指定词云对象生成图片的宽度,默认值400height指定词云对象生成图片的高度,默认值200min_font.size指定词云对象字体的最小值,默认值4号font_step指定词云对象字体间隔,默认值1font_path指定词云对象字体文件的路径,默认值Nonemax_words指定词云对象最大单词数量,默认值200mask指定词云对象形状,默认长方形background_color指定词云对象的背景颜色,默认黑色w.generate(txt)向WordCloud对象w中加载文本内容w.to_file(filename)将词云对象输出为图片格式,.png,.jpg9.4wordcloud库及其使用例9-5:生成中文文本对应的词云内容。importwordcloudimportjiebatxt='据中国载人航天工程办公室消息,'\'北京时间2024年4月25日20时59分,'\'搭载神舟十八号载人飞船的长征二号F遥十八运载火箭在酒泉卫星发射中心点火发射,'\'约10分钟后,神舟十八号载人飞船与火箭成功分离,进入预定轨道。'\'目前,航天员乘组状态良好,发射取得圆满成功。'font=r'C:\windows\Fonts\msyh.ttc'w=wordcloud.WordCloud(font_path=font)w.generate("".join(jieba.lcut(txt)))w.to_file("wordcloud.png")9.4wordcloud库及其使用例9-6:生成给定内容对应的词云对象。fromosimportpathfromPILimportImageimportnumpyasnpimportmatplotlib.pyplotaspltimportosfromwordcloudimportWordCloud,STOPWORDSd=path.dirname(__file__)if"__file__"inlocals()elseos.getcwd()#读文件alice.txttext=open(path.join(d,"alice.txt"),encoding="UTF-8").read()#读词云对象图片alice_mask=np.array(Image.open(path.join(d,"alice_mask.png")))stopwords=set(STOPWORDS)stopwords.add("said")wc=WordCloud(background_color="white",max_words=2000,mask=alice_mask,stopwords=stopwords,contour_width=3,contour_color="steelblue")#generatewordcloudwc.generate(text)#storetofilewc.to_file(path.join(d,"alice.png"))#showplt.imshow(wc,interpolation="bilinear")plt.axis("off")plt.figure()plt.imshow(alice_mask,cmap=plt.cm.gray,interpolation="bilinear")plt.axis("off")plt.show()9.5python程序打包
本章主要介绍如何将Python程序打包成exe文件。exe文件英文名是executablefile,即可执行文件,这里的可执行文件指的是扩展名为.exe的文件。步骤如下:1.安装Pyinstaller2.切换至需要打包的文件路径3.执行打包程序pipinstallPyinstallercd+‘需要打包的文件路径’Pyinstaller-F-w文件名.py9.5python程序打包
步骤如下:4.切换至需要打包的文件路径下找到dist文件夹并打开,可以看到打包的exe可执行文件。结果如图所示。9.6综合案例例9-7:生成给定要求的词云对象。importnumpyasnpimportmatplotlib.pyplotaspltfromwordcloudimportWordCloudtext="welcometowordcloud"x,y=np.ogrid[:300,:300]
#创建0-300二维数组mask=(x-150)**2+(y-150)**2>130**2#创建以150,150为圆心,半径为130的Maskmask=255*mask.astype(int)#转化为intwc=WordCloud(background_color="white",repeat=True,mask=mask)wc.generate(text)plt.axis("off")#关闭坐标轴plt.imshow(wc,interpolation="bilinear")plt.show()9.6综合案例例9-8:生成自定义词云。fromPILimportImageimportnumpyasnpimportmatplotlib.pyplotaspltfromwordcloudimportWordCloud,STOPWORDStext_path='test.txt'scr_text='''TheZenofPython,byTimPetersBeautifulisbetterthanugly.Explicitisbetterthanimplicit.Simpleisbetterthancomplex.Inthefaceofambiguity,refusethetemptationtoguess.Thereshouldbeone--andpreferablyonlyone--obviouswaytodoit.Althoughthatwaymaynotbeobviousatfirstunlessyou'reDutch.Nowisbetterthannever.Althoughneverisoftenbetterthan*right*now.Iftheimplementationishardtoexplain,it'sabadidea.Iftheimplementationiseasytoexplain,itmaybeagoodidea.Namespacesareonehonkinggreatidea--let'sdomoreofthose!'''withopen(text_path,'w',encoding='utf-8')asf:f.write(scr_text)withopen(text_path,'r',encoding='utf-8')asf:text=f.read()mask=np.array(Image.open("mask.png"))stopwords=set(STOPWORDS)stopwords.add("better")wc=WordCloud(background_color="white",max_words=2000,mask=mask,stopwords=stopwords,contour_width=2,contour_color='red',scale=2,repeat=True)wc.generate(text)wc.to_file("result.png")#展示词云结果plt.imshow(wc,interpolation='bilinear')plt.axis("off")plt.figure()#展示mask图片plt.imshow(mask,cmap=plt.cm.gray,interpolation='bilinear')plt.axis("off")plt.show()9.6综合案例例9-9:读取网络电影评论。importpprintimportrequestsimportparselimportcsv#csv模块保存数据到Excelf=open('豆瓣电影数据.csv',mode='a',encoding='utf-8',newline='')csv_writer=csv.DictWriter(f,fieldnames=['电影名字','参演人员','上映时间','拍摄国家','电影类型','电影评分','评价人数','电影概述'])csv_writer.writeheader()#写入表头#模拟浏览器发送请求forpageinrange(0,251,25):url=f'/top250?start={page}&filter='headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/81.0.4044.138Safari/537.36'}response=requests.get(url=url,headers=headers)#把response.text文本数据转换成selector对象selector=parsel.Selector(response.text)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高新技术开发区社区服务中心、警务中心项目可行性研究报告
- 蔬菜、花卉新品种工厂化育苗项目可行性研究报告
- SYB课件(大学生版)
- 《税负分析测算表》课件
- 《程序化成功案例》课件
- (部编版八年级《政治》课件)第2课时-天下兴亡-匹夫有责
- 《提升职场说话技巧》课件
- 2023年的院感知识培训内容
- 高校食堂管理员合同样本
- 医疗器械招投标法规实习心得
- 辛弃疾生平简介(课堂PPT)
- 小学生学业成绩等级制度-小学学业等级
- 过程审核VDA6.3检查表
- 常压矩形容器设计计算软件
- 交流变换为直流的稳定电源设计方案
- PR6C系列数控液压板料折弯机 使用说明书
- 装配工艺通用要求
- 钢结构工程环境保护和文明施工措施
- 物业管理业主意见征询表
- 8D培训课件 (ppt 43页)
- 劳动力计划表
评论
0/150
提交评论