python3 定製詞雲

翻了一下知乎,發現了以前收藏的製作詞雲的教程,於是動手試了一下

所需環境:

        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()#生成詞雲



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