讀取txt文件並生成詞雲圖


 
        

讀取txt文件並生成詞雲圖

03jWIU.md.png

  • (一)下載第三方模塊

    1.wordcloud:它把我們帶權重的關鍵詞渲染成詞雲。

    2.jieba:是一個分詞模塊,因為我是從一個txt文本里提取關鍵詞,所以需要 jieba 來分詞並統計詞頻。如果是已經有了現成的數據,不再需要它。
    pip install wordcloud
     ​
    pip install jieba

     

  • (二)WordCloud類的使用

  • WordCloud構造方法的參數 說明
    font_path 字體路徑,需要展現什么字體就把該字體路徑+后綴名寫上,如:font_path = ‘黑體.ttf’
    width 輸出的畫布寬度,默認為400像素
    height 輸出的畫布高度,默認為200像素
    prefer_horizontal 詞語水平方向排版出現的頻率,默認 0.9 (所以詞語垂直方向排版出現頻率為 0.1 )
    mask 如果參數為空,則使用二維遮罩繪制詞雲。如果 mask 非空,設置的寬高值將被忽略,遮罩形狀被 mask 取代。除全白(#FFFFFF)的部分將不會繪制,其余部分會用於繪制詞雲。如:bg_pic = imread(‘讀取一張圖片.png’),背景圖片的畫布一定要設置為白色(#FFFFFF),然后顯示的形狀為不是白色的其他顏色。可以用ps工具將自己要顯示的形狀復制到一個純白色的畫布上再保存。
    scale 按照比例進行放大畫布,如設置為1.5,則長和寬都是原來畫布的1.5倍。
    min_font_size 顯示的最小的字體大小
    font_step 字體步長,如果步長大於1,會加快運算但是可能導致結果出現較大的誤差。
    max_words 顯示的詞的最大個數
    stopwords 設置需要屏蔽的詞,如果為空,則使用內置的STOPWORDS
    background_color 背景顏色,如background_color=‘white’,背景顏色為白色。
    max_font_size 顯示的最大的字體大小
    mode 當參數為“RGBA”並且background_color不為空時,背景為透明。
    relative_scaling 詞頻和字體大小的關聯性
    color_func 生成新顏色的函數,如果為空,則使用 self.color_func
    regexp 使用正則表達式分隔輸入的文本
    collocations 是否包括兩個詞的搭配
    colormap 給每個單詞隨機分配顏色,若指定color_func,則忽略該方法。

 

數據准備

小說《中國合伙人1.txt》,約3400行 03jZK1.png

源代碼

 
import jieba
 import jieba.analyse
 import codecs
 import re
 from collections import Counter
 from wordcloud import WordCloud
 import matplotlib.pyplot as plt
 import wordcloud
 ​
 ​
 # 創建停用詞列表
 def stopwordlist():
     stopwords = [line.strip() for line in open('../結巴分詞/hit_stopwords.txt',encoding='UTF-8').readlines()]
     return stopwords
 ​
 ​
 # 對句子進行中文分詞
 def seg_depart(sentence):
     print('正在分詞')
     sentence_depart = jieba.cut(sentence.strip())
     # 創建一個停用詞列表
     stopwords = stopwordlist()
     # 輸出結果為 outstr
     outstr = ''
 #     去停用詞
     for word in sentence_depart:
         if word not in stopwords:
             if word != '\t':
                 outstr += word
                 outstr += " "
     return outstr
 ​
 ​
 ​
 print("讀取文件並生成詞雲圖")
 ​
 def create_word_cloud(file):
 ​
     # 讀取文件內容
     content = codecs.open(file,'r','gbk').read()
   # 去停用詞
     content = seg_depart(content)
     # 結巴分詞
     wordlist = jieba.cut(content)
     wl = " ".join(wordlist)
 ​
     print(wl)
 ​
     # 配置詞雲圖
     wc = wordcloud.WordCloud(
     #     設置背景顏色
         background_color='white',
     #     設置最大顯示的詞數
         max_words=100,
     #     設置字體路徑
         font_path = 'C:\Windows\Fonts\msyh.ttc',
         height=1200,
         width=1600,
     #     設置字體最大值
         max_font_size=300,
     #     設置有多少種配色方案,即多少種隨機生成狀態
         random_state=50,
     )
 ​
     # 生成詞雲圖
     myword = wc.generate(wl)
 ​
     # 展示詞雲圖
     plt.imshow(myword)
     plt.axis("off")
     plt.show()
 ​
 ​
 ​
 create_word_cloud("中國合伙人1.txt")

 


 
 

生成詞雲圖

03jWIU.md.png

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM