Python程序設(shè)計(jì)基礎(chǔ) 課件 第9章 第三方庫_第1頁
Python程序設(shè)計(jì)基礎(chǔ) 課件 第9章 第三方庫_第2頁
Python程序設(shè)計(jì)基礎(chǔ) 課件 第9章 第三方庫_第3頁
Python程序設(shè)計(jì)基礎(chǔ) 課件 第9章 第三方庫_第4頁
Python程序設(shè)計(jì)基礎(chǔ) 課件 第9章 第三方庫_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

第9章Python第三方庫python程序設(shè)計(jì)基礎(chǔ)教程9.1第三方庫概述

本節(jié)主要介紹Python的第三方庫的用法,包括jieba庫和wordcloud庫的用法簡介,jieba庫是通過將待處理內(nèi)容與與分詞詞庫進(jìn)行比對,按指定策略獲得包含的分詞。worcloud庫是一個優(yōu)秀的詞云展示第三方庫。9.2第三方庫的獲取和安裝

本節(jié)主要介紹的第三方庫有jieba庫以及wordcloud庫,安裝方法有兩種。(1)安裝包模式安裝:在Windows系統(tǒng)環(huán)境下,從對應(yīng)的jieba和wordcloud庫的官方網(wǎng)站下載安裝包,自動安裝即可。(2)在線安裝:通過pip3語句進(jìn)行安裝pip3install+‘對應(yīng)第三方庫的名字’9.2第三方庫的獲取和安裝

(2)在線安裝:通過pip3語句進(jìn)行安裝有時在線鏡像源安裝可能會較緩慢,可以采用清華大學(xué)鏡像源,安裝語句如下:pip3install+’第三方庫的名字’-i+‘清華大學(xué)鏡像源’?清華大學(xué)鏡像:/simple?阿里云鏡像:/pypi/simple/?中國科技大學(xué)鏡像:/simple/?華中理工大學(xué)鏡像:/?山東理工大學(xué)鏡像:/?豆瓣鏡像:/simple/9.3jieba庫及其使用

本節(jié)主要介紹的jieba庫是一個第三方中文分詞主要功能:利用一個中文詞庫確定漢字之間的關(guān)聯(lián)概率,漢字間概率大的組成詞組,形成分詞結(jié)果。通過命令行下運(yùn)行一下命令進(jìn)行安裝jieba.lcut(sentence,cut_all=true)全模式,返回語句sentence中所有可以成詞的詞語,速度非常快,但是不能解決歧義。jieba.lcut(sentence)精確模式,試圖將語句sentence最精確地切開,適合文本分析。jieba.lcut_for_search(sentence)搜索引擎模式,在精確模式的基礎(chǔ)上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞。pip3installjieba9.3jieba庫及其使用

jieba庫常用方法方法含義jieba.lcut(sentence)精確模式,將語句劃分開,返回值為列表類型jieba.lcut(sentence,cut_all=true)全模式,輸出文本sentence中所有可能單詞,返回值為列表類型jieba.lcut_for_search(sentence)搜索引擎模式,適合搜索引擎建立索引的分詞結(jié)果,返回值為列表類型jieba.cut(sentence)精確模式,將語句劃分開,返回值為可迭代的數(shù)據(jù)類型jieba.cut(sentence,cut_all=true)全模式,輸出文本sentence中所有可能單詞,返回值為可迭代的數(shù)據(jù)類型jieba.cut_for_search(sentence)搜索引擎模式,建立適合搜索引擎檢索的分詞結(jié)果,返回值為可迭代的數(shù)據(jù)類型jieba.add_word(sentence)向分詞詞典中添加新詞9.3jieba庫及其使用

例9-1三種模式的應(yīng)用。importjiebaseg_list=jieba.cut("《生死疲勞》是中國當(dāng)代作家莫言創(chuàng)作的長篇小說",cut_all=True)print("fullpattern:"+",".join(seg_list)) ##全模式seg_list=jieba.cut("《生死疲勞》是中國當(dāng)代作家莫言創(chuàng)作的長篇小說")print("accuratepattern:"+",".join(seg_list)) ##精確模式seg_list=jieba.cut_for_search("《生死疲勞》是中國當(dāng)代作家莫言創(chuàng)作的長篇小說") ##搜索引擎模式print("searchmodel:"+",".join(seg_list))9.3jieba庫及其使用

例9-2統(tǒng)計(jì)唐詩三百首中的詞語出現(xiàn)次數(shù)。編程思路:詞頻分析,就是對某一或某些給定的詞語在某文件中出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計(jì)分析。中文詞頻分析的基本原理是利用jieba庫對文章進(jìn)行分析,統(tǒng)計(jì)每個詞出現(xiàn)的個數(shù),就是建立詞和出現(xiàn)次數(shù)的字典。然后按出現(xiàn)的次數(shù)從高到底排序,根據(jù)出現(xiàn)頻率高的詞來分析文章。importjieba#首先要保證所打開的文件是utf-8編碼,如果不是,可使用記事本另存為utf-8編碼#UTF-8是一種面向互聯(lián)網(wǎng)傳輸出現(xiàn)的變長(1-4字節(jié))的字符UNICODE編碼,它兼容ASCII碼,即英文字符1個字節(jié),漢字占3個字節(jié)。withopen('唐詩三百首.txt','r',encoding='utf-8')asfr: txt=fr.read();words=jieba.lcut(txt)#精確模式分析,返回一個列表類型counts={}#生成一個空字典forwordinwords:#統(tǒng)計(jì)每個單詞的個數(shù) 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統(tǒng)計(jì)唐詩三百首中的詞語出現(xiàn)次數(shù)。編程思路:排在前面的這些詞的統(tǒng)計(jì)結(jié)果沒有意義,如標(biāo)點(diǎn)、空格、沒有意義的字等。這些詞可以在統(tǒng)計(jì)前用空格替換掉,或者在統(tǒng)計(jì)之后從字典中刪除,一般做法是將這些詞收集起來,建立停用詞表。常用的停用詞表可以在網(wǎng)上下載。過濾掉長度為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:#統(tǒng)計(jì)每個單詞的個數(shù) 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中文詞頻分析,統(tǒng)計(jì)“水滸傳.txt”中出現(xiàn)頻率最高的二十個英雄人物及出現(xiàn)次數(shù)。思路:詞頻分析,就是對某一或某些給定的詞語在某文件中出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計(jì)分析。中文詞頻分析的基本原理是利用jieba庫對文章進(jìn)行分析,統(tǒng)計(jì)每個詞出現(xiàn)的個數(shù),就是建立詞語和出現(xiàn)次數(shù)的字典。然后按出現(xiàn)的次數(shù)從高到底排序,根據(jù)出現(xiàn)頻率高的詞來分析文章內(nèi)容。importjiebaimporttimestart=time.perf_counter()#起始時間txt=open("shuihuzhuan1.txt","r",encoding='utf-8').read()names=['宋江','盧俊義','吳用','公孫勝','關(guān)勝','林沖','秦明','呼延灼','花榮','柴進(jìn)','李應(yīng)','朱仝','魯智深','武松','董平','張清','楊志','徐寧','索超','戴宗','劉唐','李逵','史進(jìn)','穆弘','雷橫','李俊','阮小二','張橫','阮小五','張順','阮小七','楊雄','石秀','解珍','解寶','燕青','朱武','黃信','孫立','宣贊','郝思文','韓滔','彭玘','單廷珪','魏定國','湯隆','杜興','鄒淵','鄒潤','朱貴','朱富','蔡福','蔡慶','李立','李云','焦挺','石勇','孫新','顧大嫂','張青','孫二娘','王定六','郁保四','白勝','時遷','段景住']words=jieba.lcut(txt)cnt={}#用來計(jì)數(shù)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}出現(xiàn)次數(shù)為:{1:>5}".format(name,ans))end=time.perf_counter()#結(jié)束時間print('程序運(yùn)行時間:%.4f'%(end-start))9.3jieba庫及其使用

例9-4現(xiàn)有一英文文本文件“Ihaveadream.txt”,欲統(tǒng)計(jì)其中單詞出現(xiàn)頻率最高的10個單詞。思路:詞頻分析,就是對某一或某些給定的詞語在某文件中出現(xiàn)的次數(shù)進(jìn)行統(tǒng)計(jì)分析。英文詞頻分析的基本原理是統(tǒng)計(jì)每個詞出現(xiàn)的個數(shù),就是建立詞語和出現(xiàn)次數(shù)的字典。然后按出現(xiàn)的次數(shù)從高到底排序,根據(jù)出現(xiàn)頻率高的詞來分析文章內(nèi)容。排在前面的這些單詞的統(tǒng)計(jì)結(jié)果沒有意義,如標(biāo)點(diǎn)、空格、沒有意義的符號等。這些詞可以在統(tǒng)計(jì)前用空格替換掉,或者在統(tǒng)計(jì)之后從字典中刪除,一般在統(tǒng)計(jì)前將無意義單詞用空格替換。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("第{}名:{},出現(xiàn)了{(lán)}次。".format(i+1,wordtimeslist[i][0],wordtimeslist[i][1]))9.4wordcloud庫及其使用worcloud庫是一個優(yōu)秀的詞云展示第三方庫。安裝方法有兩種方法。第一種方法步驟如下:1安裝wheel2安裝wordcloud2.1查看對應(yīng)whl版本2.2下載對應(yīng)的wordcloud版本pip3installwheel9.4wordcloud庫及其使用worcloud庫是一個優(yōu)秀的詞云展示第三方庫。安裝方法有兩種方法。第一種方法步驟如下:2.3安裝wordcloudpipinstall‘對應(yīng)的wordcloud下載路徑’2.4安裝成功9.4wordcloud庫及其使用worcloud庫是一個優(yōu)秀的詞云展示第三方庫。安裝方法有兩種方法。第二種方法步驟如下:安裝成功結(jié)果如圖所示。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指定詞云對象生成圖片的寬度,默認(rèn)值400height指定詞云對象生成圖片的高度,默認(rèn)值200min_font.size指定詞云對象字體的最小值,默認(rèn)值4號font_step指定詞云對象字體間隔,默認(rèn)值1font_path指定詞云對象字體文件的路徑,默認(rèn)值Nonemax_words指定詞云對象最大單詞數(shù)量,默認(rèn)值200mask指定詞云對象形狀,默認(rèn)長方形background_color指定詞云對象的背景顏色,默認(rèn)黑色w.generate(txt)向WordCloud對象w中加載文本內(nèi)容w.to_file(filename)將詞云對象輸出為圖片格式,.png,.jpg9.4wordcloud庫及其使用例9-5:生成中文文本對應(yīng)的詞云內(nèi)容。importwordcloudimportjiebatxt='據(jù)中國載人航天工程辦公室消息,'\'北京時間2024年4月25日20時59分,'\'搭載神舟十八號載人飛船的長征二號F遙十八運(yùn)載火箭在酒泉衛(wèi)星發(fā)射中心點(diǎn)火發(fā)射,'\'約10分鐘后,神舟十八號載人飛船與火箭成功分離,進(jìn)入預(yù)定軌道。'\'目前,航天員乘組狀態(tài)良好,發(fā)射取得圓滿成功。'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:生成給定內(nèi)容對應(yīng)的詞云對象。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,即可執(zhí)行文件,這里的可執(zhí)行文件指的是擴(kuò)展名為.exe的文件。步驟如下:1.安裝Pyinstaller2.切換至需要打包的文件路徑3.執(zhí)行打包程序pipinstallPyinstallercd+‘需要打包的文件路徑’Pyinstaller-F-w文件名.py9.5python程序打包

步驟如下:4.切換至需要打包的文件路徑下找到dist文件夾并打開,可以看到打包的exe可執(zhí)行文件。結(jié)果如圖所示。9.6綜合案例例9-7:生成給定要求的詞云對象。importnumpyasnpimportmatplotlib.pyplotaspltfromwordcloudimportWordCloudtext="welcometowordcloud"x,y=np.ogrid[:300,:300]

#創(chuàng)建0-300二維數(shù)組mask=(x-150)**2+(y-150)**2>130**2#創(chuàng)建以150,150為圓心,半徑為130的Maskmask=255*mask.astype(int)#轉(zhuǎn)化為intwc=WordCloud(background_color="white",repeat=True,mask=mask)wc.generate(text)plt.axis("off")#關(guān)閉坐標(biāo)軸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")#展示詞云結(jié)果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:讀取網(wǎng)絡(luò)電影評論。importpprintimportrequestsimportparselimportcsv#csv模塊保存數(shù)據(jù)到Excelf=open('豆瓣電影數(shù)據(jù).csv',mode='a',encoding='utf-8',newline='')csv_writer=csv.DictWriter(f,fieldnames=['電影名字','參演人員','上映時間','拍攝國家','電影類型','電影評分','評價人數(shù)','電影概述'])csv_writer.writeheader()#寫入表頭#模擬瀏覽器發(fā)送請求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文本數(shù)據(jù)轉(zhuǎn)換成selector對象selector=parsel.Selector(response.text)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論