【上中課程】詞雲Word Cloud(標籤雲、詞頻分析、文本分析)的實現——應用jieba庫和wordcloud庫

        詞雲,又稱文字雲、標籤雲,是對文本數據中出現頻率較高的“關鍵詞”在視覺上的突出呈現,形成關鍵詞的渲染形成類似雲一樣的彩色圖片,從而一眼就可以領略文本數據的主要表達意思。常見於博客、微博、文章分析等。

基本概念:

1.語  料  庫:預料庫是我們要分析的所有文檔的集合
2.中文分詞:指的是將一個漢字序列切成一個一個單獨的詞
3.停  用  詞:數據處理的時候,自動過濾掉某些字或詞,如:web,網站等

基本操作步驟如下:

1.構建預料庫

2.語料庫文件讀取

3.中文分詞
分詞包:jiebe.cut(content)
.content:需要分詞的句子
.返回segment:分詞的詞組
(詞庫可到搜狗下載,然後用深藍詞庫轉換工具轉成無拼音的文本格式)

jieba.add_word(w) 向分詞詞典增加新詞w

4.詞頻統計--分組統計各詞組數量

5.移除停用詞

6.繪製詞雲圖


下面是我在jupyter上運行的代碼部分:


import numpy as np
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba

from scipy.misc import imread
import imageio

from PIL import Image
from os import path

#open("abc.txt",encoding="gbk").read()

#
def grey_color_func(word,font_size,position,orientation,random_state=None,**kwargs):
    return "hsl(0,0%%,%d%%)"%random.randint(60,100)
#對文本進行讀取
txt=open("huozhe.txt",encoding="utf-8").read()

#對添加新的中文分詞(如人名等)


#對文本進行分詞處理
words = jieba.lcut(txt,cut_all = False)
#cut_all:是否採用全模式
#HMM:是否採用HMM模型
#讀取停用詞,創建停用詞表
stopwords = [line.strip() for line in open("CS.txt").readlines()]
#stopwords.add("浩介")




#去除停用詞,並統計詞頻
counts = {}
for word in words:
    #不在停用詞表內
    if word not in stopwords:
        #不統計單個的字
        if len(word) ==1:
            continue
        else:
            if word in counts:
                counts[word] += 1
            else:
                counts[word] = 1

#list方法的作用是吧元組轉換成列表。
items = list(counts.items())
#進行降序排序
items.sort(key = lambda x:x[1],reverse=True)

#查看前 ?? 個結果。
for i in range(30):
    word,count = items[i]
    print("{0:<10}{1:>5}".format(word,count))

text = open("huozhe.txt",encoding="utf-8").read()  
#結巴分詞  
mytext = jieba.cut(text,cut_all=False)  #採用精準模式,true爲全模式
wt = " /".join(mytext)  

bg_image = imageio.imread('demo2.jpg')
print("圖片加載成功")


#設置詞雲相關參數
wc = WordCloud( #設置背景顏色
               background_color = "white",
                #設置最大顯示的字數
               max_words = 200,
                #設置背景圖片
    
               mask = bg_image,
                #此處添加停用詞庫——需要上門導入
               stopwords = stopwords,
                #設置中文字體,詞雲默認字體是“DroidSansMono.ttf字體庫”,不支持中文
               font_path = "simsun.ttf",
                #設置字體最大值
               max_font_size = 500,
                #設置有多少種隨機生成狀態,即有多少種配色方案
               random_state = 30,
                #輪廓線寬度
               contour_width=3,
                #輪廓線顏色
               contour_color = 'steelblue',
                )
mycloud= wc.generate(wt)#生成詞雲  


#設置生成圖片的標題
plt.title("Jie_You")



#展示詞雲圖  
plt.imshow(mycloud)  
#設置是否顯示 X、Y 軸的下標。
plt.axis("off")  
plt.show()

#保存所生成的詞雲圖
#mycloud.to_file('test.jpg')

mycloud.to_file('test.jpg')

注:1.上圖是我用於生成詞雲圖的樣圖。2.預料庫爲 餘華的短篇小說《活着》。3.停用詞爲CS.txt,下載自網絡。另外自己又添加了部分停用詞。

 

 

中文分詞詳細介紹【https://blog.csdn.net/jiajikang_jjk/article/details/83744936

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章