詞雲圖是文本分析中比較常見的一種可視化手段,將出現頻率相對高的詞字體相對變大,讓重點詞,關鍵詞一目了然
主要用到了python的兩個庫:wordcloud和jieba,直接pip安裝即可
jieba主要用於中文分詞,wordcloud主要用於統計詞頻和繪圖
jieba分詞:
import jieba
s = "一身男兒血,滿腔報國志"
print("精准模式:" + '|'.join(jieba.cut(s)))
print("全模式:" + '|'.join(jieba.cut(s, cut_all=True)))
print("搜索引擎模式:" + '|'.join(jieba.cut_for_search(s)))
輸出:
精准模式:一身|男兒|血|,|滿腔|報國志
全模式:一身|男兒|血|,|滿腔|報國|報國志
搜索引擎模式:一身|男兒|血|,|滿腔|報國|報國志
這里還可以設置自定義詞典,比如“一身男兒血”不能進行分割,我們可以將“一身男兒血”放入自定義詞典
自定義詞典的格式:一個詞占一行,比如我們設置的dict.txt是
import jieba
s = "一身男兒血,滿腔報國志"
jieba.load_userdict('dict.txt')
print("精准模式:" + '|'.join(jieba.cut(s)))
print("全模式:" + '|'.join(jieba.cut(s, cut_all=True)))
print("搜索引擎模式:" + '|'.join(jieba.cut_for_search(s)))
輸出:
精准模式:一身男兒血|,|滿腔|報國志
全模式:一身|一身男兒血|男兒|血|,|滿腔|報國|報國志
搜索引擎模式:一身|男兒|一身男兒血|,|滿腔|報國|報國志
首先我們找一張圖片,如:
准備一段文字,可以是字符串,也可以是寫在文件里面的,寫在文件內的需要讀取出來,然后在用jieba進行分詞,如果是分好的詞,可以直接進行使用
代碼:
import jieba
import numpy as np
import PIL.Image as Image
from wordcloud import WordCloud
text = '''
世界上最簡單、有最重要的東西是什么?——是數字。
0到9九個數字,支撐起了人類的科學大廈。0和1兩個數字,
構建了無邊無際的互聯網世界。5G、大數據、人工智能、
工業互聯網……“新基建”將推動我國步入下一個發展周期,
背后的本質是0和1。再來看一串數字:14萬所學校,
300萬個班級,1.3億學生,全國3億人。
這是釘釘最新發布的“在線上課”數據和總的用戶數據。
這串數字的背后,仍是0和1。沒有0和1,就沒有中國的抗疫勝利,
社會就要停滯,經濟就要崩潰。
'''
word_list = jieba.cut(text)
space_word_list = ' '.join(word_list)
print(space_word_list)
# 調用包PIL中的open方法,讀取圖片文件,通過numpy中的array方法生成數組
mask_pic = np.array(Image.open("1.png"))
word = WordCloud(
font_path='C:/Windows/Fonts/simfang.ttf', # 設置字體,本機的字體
mask=mask_pic, # 設置背景圖片
background_color='white', # 設置背景顏色
max_font_size=150, # 設置字體最大值
max_words=2000, # 設置最大顯示字數
stopwords={'的'} # 設置停用詞,停用詞則不在詞雲途中表示
).generate(space_word_list)
image = word.to_image()
word.to_file('2.png') # 保存圖片
image.show()
結果: