【时光之穿越一千年】python全文字频解析【jieba】【matplotlib构图】案例
生活随笔
收集整理的這篇文章主要介紹了
【时光之穿越一千年】python全文字频解析【jieba】【matplotlib构图】案例
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
需要環(huán)境:【jieba、wordcloud、matplotlib】
小說資料請自己去下載,或者找你想解析的小說即可。我這里爬取的【時(shí)光之穿越一千年】
我放在了項(xiàng)目路徑下:
解析代碼:
import jieba import os from wordcloud import WordCloud import matplotlib.pyplot as pltpath = os.getcwd()#獲取當(dāng)前路徑listDir=os.listdir(path)#獲取當(dāng)前目錄下的所有內(nèi)容listInfo="" for x in listDir:if ".txt" in x:#判斷是不是以.txt為后綴的文件file=open(x,"r",encoding="utf-8")#用utf-8的格式打開listInfo+=file.read()#讀取全部內(nèi)容file.close()words = jieba.lcut(listInfo)# 使用精確模式對文本進(jìn)行分詞 counts = {}# 通過鍵值對的形式存儲詞語及其出現(xiàn)的次數(shù) #統(tǒng)計(jì)詞頻 for word in words:if len(word) == 1: # 單個(gè)詞語不計(jì)算在內(nèi)continueelse:counts[word] = counts.get(word, 0) + 1 # 遍歷所有詞語,每出現(xiàn)一次其對應(yīng)的值加 1 #注解:dict.get(word,0)當(dāng)能查詢到相匹配的字典時(shí),就會顯示相應(yīng)key對應(yīng)的value,如果不能的話,就會顯示后面的這個(gè)參數(shù)#有些不重要的詞語但出現(xiàn)次數(shù)較多,可以通過構(gòu)建排除詞庫excludes來刪除 text=' '.join(words) excludes = {'一個(gè)','我們','你們','不可','知道','這里','卻說','自己','這樣','怎么','不是', '不知','這個(gè)','不能','如此'} #刪除不重要的詞語 for exword in excludes:del(counts[exword])items = list(counts.items()) items.sort(key=lambda x: x[1], reverse=True) # 根據(jù)詞語出現(xiàn)的次數(shù)進(jìn)行從大到小排序#輸出統(tǒng)計(jì)結(jié)果 for i in range(10):word, count = items[i]print("{0:<5}{1:>5}".format(word, count))#繪圖 wc=WordCloud(background_color='white',# 設(shè)置背景顏色font_path='msyh.ttc',# 若是有中文的話,這句代碼必須添加,不然會出現(xiàn)方框,不出現(xiàn)漢字 scale=2, #按照比例進(jìn)行放大畫布,如設(shè)置為2,則長和寬都是原來畫布的1.5倍max_words=100,# 設(shè)置最大現(xiàn)實(shí)的字?jǐn)?shù) max_font_size=80,# 設(shè)置字體最大值 stopwords=excludes)# 設(shè)置停用詞 wc.generate(text) # 顯示詞云圖 plt.imshow(wc) plt.axis('off') plt.show() wc.to_file(r'詞頻統(tǒng)計(jì).jpg')2、執(zhí)行效果:
如果有不需要的此可以在【excludes】中過濾掉。
希望能對大家了解文字有一定的幫助。
總結(jié)
以上是生活随笔為你收集整理的【时光之穿越一千年】python全文字频解析【jieba】【matplotlib构图】案例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python jieba库用法
- 下一篇: 【万能小说分析】【python】【词频分