暫時領先,未必最先達到終點

終究,命運的齒輪開始轉動了,從這一刻起
幾日不見,甚是思念!小夜斗又回來啦!
這幾日小夜斗一直在折騰于詞云制作、力扣刷題、java學習、還有爬取微博評論數(shù)據的爬蟲項目,一直沒有功夫寫博客,內心感到無比空虛,哈哈好啦,今天小夜斗給大家分享一期WordCloud詞云制作!
所需數(shù)據集: 停用詞文本、b站彈幕數(shù)據文本
這兩個數(shù)據小夜斗會在文末給大家分享的哈!
其中b站彈幕數(shù)據文本也可以自己動手去爬一下
好啦,前言介紹就這么多啦,下面讓小夜斗給大家整活吧!
先導入需要利用到的庫!
import jieba # 分詞
from wordcloud import WordCloud # 詞云
from PIL import Image # 圖片處理
import numpy as np # 圖片處理
import matplotlib.pyplot as plt # 畫圖
一: jieba分詞
所謂的分詞就是將一句話分成一個或幾個詞語的形式,例如
[圖片上傳失敗...(image-45ddbf-1611472232678)]
小夜斗爬取冰冰vlog數(shù)據中,有一句老婆好美!通過jieba分詞后
就會形成兩個詞語: "老婆","好美"! 小夜斗一雙涼涼的手敲代碼,
但心卻是冰冰的!下面讓我們來看分詞代碼吧!
# 讀取停用詞庫,注意編碼應為‘utf8’
f = open('小夜斗的停用詞表.txt', encoding='utf8')
stopwords = f.read().split('\n')
print(stopwords) # 打印停用詞
f.close() # 關閉停用詞文件
[圖片上傳失敗...(image-fe16c4-1611472232678)]
如上圖所示,打印出的為一個停用詞列表!
with open("冰冰vlog2.txt", "r", encoding='utf8') as fp:
text = fp.read()
這是一個讀取冰冰彈幕數(shù)據文件的操作,將其保存到text變量中!
segs = jieba.cut(text) # 進行jieba分詞
mytext_list = [] # 構建一個容納過濾掉停用詞的冰冰彈幕數(shù)據文件
# 文本清洗
for seg in segs: # 循環(huán)遍歷每一個分詞文本
# 如果該詞不屬于停用詞表 并且非空 長度不為1
if seg not in stopwords and seg != "" and len(seg) != 1:
# 將該詞語添加到mytext_list列表中
mytext_list.append(seg.replace(" ", ""))
print(mytext_list) # 打印過濾后的冰冰彈幕數(shù)據
[圖片上傳失敗...(image-d35b8e-1611472232678)]
如上圖所述,選取其中一小部分展示,上述操作的核心目的是:
jieba.cut(string) 精確模式:把文本精確的切分開,不存在冗余單詞,適合做文本分析
jieba.cut(string,cut_all = True) 全模式:把文本中所有可能的詞語都掃描出來,速度快,但有冗余。
jieba.cut_for_search(string) 搜索引擎模式:在精確模式基礎上,對長詞再次切分。
獲取過濾停用詞后的冰冰彈幕數(shù)據,相當于處理臟數(shù)據一樣
cloud_text = ",".join(mytext_list) # 連接列表里面的詞語
print(cloud_text)
[圖片上傳失敗...(image-ce7655-1611472232678)]
打印cloud_text的結果如上,這個數(shù)據是最終為詞云服務的!
二: 制作WordCloud詞云
- 詞云的目的: 將出現(xiàn)頻率最高的哪些詞匯展示出來!
- 注意圖片的選取要用色彩相差較大的,會發(fā)現(xiàn)整個矩形都堆滿了詞匯,而不是那種剛好出現(xiàn)人物形狀的詞云
- 如果你制作的詞云是整個矩陣鋪滿詞語,不煩換一張圖片試試
- 這里小夜斗從csdn博主那搞來了一張冰冰的帥氣照片!感覺這張圖片制作圖云的效果最nice了,圖片上面的水印加的是kimi君的博客鏈接!
冰冰美照
plt.figure() # 圖形窗口
mask = plt.imread('冰冰冰.jpeg') # 導入冰冰圖形蒙版
wc = WordCloud(
background_color="white", # 背景顏色
max_words=200, # 顯示最大次數(shù)
font_path=r'C:/Windows/Fonts/STXINGKA.TTF', # 字體
width=400, # 寬
height=200, # 高
mask=mask,
scale=10).generate(cloud_text) # 迭代生成詞云
wc.to_file("博客展示詞云.png")
plt.imshow(wc, interpolation="bilinear") # 插值為雙線性,會使顯示平滑更加平滑
plt.axis("off") # 坐標軸隱藏
plt.show()
print("小夜斗立項成功!")
- 上面是小夜斗自己做的幾副詞云,其中有人物圖形的是博客中分享的那張照片,其余幾張因為圖片的問題導致要么顯示不完全,要么是全鋪滿!
- 獲取源碼以及數(shù)據集,小夜斗公眾號回復”004詞云制作“即可!
微信公眾號: 夜斗小神社
好啦今天的分享就到這里啦,然后小夜斗就要滾去學習啦,see you!
-
在這個星球上,你很重要,請珍惜你的珍貴! ~~~夜斗小神社
星空
