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