翻了一下知乎,發現了以前收藏的製作詞雲的教程,於是動手試了一下
所需環境:
1.python3
2.wordcloud
python原來就安裝了,然後就是Wordcloud,安裝方法有三個1.使用pip安裝,2.使用whl文件安裝,3.使用anaconda安裝
我也不知道爲什麼,我每次用pip都會爆炸(我好絕望啊),然後開始百度,就下載了適合自己電腦及python版本的whl文件進行安裝
用anaconda的話還是very方便的,但是我在第二種方法就安裝完了,也就沒怎麼用anaconda
首先,來一段最簡單的生成詞雲的代碼(當然,最簡單的一般沒什麼用)
import matplotlib.pyplot as plt#導入畫圖的庫
from wordcloud import WordCloud#詞雲生成庫
import jieba#jieba分詞庫
text=open("text.txt","r",encoding="utf-8").read(500)#打開所要分析的文本
wordlist=jieba.cut(text,cut_all=True)
wl_space_split=" ".join(wordlist)#使用結巴進行分詞並用空格隔開
my_wordcloud=WordCloud().generate(wl_space_split)
plt.imshow(my_wordcloud)
plt.axis("off")
plt.show()#生成詞雲
因爲Wordcloud默認使用的是不支持中文的字體庫,所以這段代碼只能對英文文本生成詞雲
上面是傳入馬丁路德金《i have a dream》得到的效果圖
接下來,看一下這兩個教程
https://zhuanlan.zhihu.com/p/23453890
http://blog.csdn.net/vivian_ll/article/details/68067574
啊,還是很多地方不懂啊,寫不下去了
貼上最後版本的代碼
import matplotlib.pyplot as plt#導入畫圖的庫
from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS
import jieba#jieba分詞庫
import numpy as np
from PIL import Image
import jieba.analyse
#我在程序裏用到的文件都是放在和程序同一個文件夾,當然你也可以寫文件的絕對路徑
text=open("text.txt","r",encoding="utf-8").read(10000000)#打開所要分析的文本
alice_coloring=np.array(Image.open("xiaohuangren.jpg"))#傳入圖片
wordlist=jieba.cut(text,cut_all=True)
wl_space_split=" ".join(wordlist)#使用結巴進行分詞並用空格隔開
jieba.load_userdict("userdict.txt")#導入自定義詞典
jieba.analyse.set_stop_words("stopwords.txt")
#,allowPOS=('nb','n','nr', 'ns','a','ad','an','nt','nz','v','d')
tags=jieba.analyse.extract_tags(text,topK=200,withWeight=True,allowPOS=('nb','n','nr', 'ns','a','ad','an','nt','nz','v','d'))#提取關鍵詞
wc = WordCloud(
font_path=u"C:\Windows\Fonts\simkai.ttf",#修改默認字體庫,我這裏使用的是Windows裏面的楷體,你也可以按這一路徑選擇喜歡的字體庫或者去下載其他字體庫
width=1920,#寬
height=1080,#高
margin=5,
background_color="white",#背景顏色
max_words=200, #最大詞量
mask=alice_coloring,#設置背景圖片
max_font_size=60,#最大號字體
#stopwords=STOPWORDS.add("一個")
)
#wc.generate(wl_space_split)
for word,fre in tags:
print(word,fre)
keywords=dict(tags)
wc.generate_from_frequencies(keywords)
image_colors = ImageColorGenerator(alice_coloring)
plt.imshow(wc.recolor(color_func=image_colors))
plt.axis("off")
plt.show()#生成詞雲