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