您好,登錄后才能下訂單哦!
這篇文章給大家介紹如何在Python中生成任何形狀的詞云,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對(duì)大家能有所幫助。
什么是詞云呢?簡(jiǎn)單來說就是,將提供的一段文本,根據(jù)關(guān)鍵詞的出現(xiàn)頻率而生成的一幅圖像,人們只要掃一眼就能夠明白文章主旨。今天我們用python來實(shí)現(xiàn)這樣一個(gè)項(xiàng)目。如果成功,生成的結(jié)果會(huì)如下所示
生成中文詞云的PYTHON步驟
需要你的電腦安裝Python 接著利用pip工具安裝需要的jieba、wordcloud、PIL模塊
1.安裝依賴
$ pip install jieba
$ pip install wordcloud
$ pip install PIL
2.添加想要用來生成文本的文章
小編蹭一波最近比較火的電視劇沉香蜜蜜燼如霜的熱度,用主題曲歌詞制作了一個(gè)文本,放在data目錄下。Ok,DJ drop the beat
回憶輾轉(zhuǎn)來回 痛不過這心扉
愿只愿余生無悔 隨花香遠(yuǎn)飛
一壺清酒 一身塵灰
一念來回度余生無悔
一場(chǎng)春秋 生生滅滅 浮華是非
待花開之時(shí)再醉一回
不愿染是與非 怎料事與愿違
心中的花枯萎 時(shí)光它去不回
回憶輾轉(zhuǎn)來回 痛不過這心扉
3.選擇生成詞云的形狀
Hold,現(xiàn)在要找一張圖片,用它來定義你最后生成的詞云形狀。ok,我找來了一張打碟的DJ的圖片放在根目錄下。
4.代碼部分
a)用jieba成詞和權(quán)重的字典
def tokenize_content(content):
jieba.analyse.set_stop_words("data/stop_words.txt")
tags = jieba.analyse.extract_tags(content, topK=50, withWeight=True)
word_tokens_rank = dict()
for tag in tags:
word_tokens_rank[tag[0]] = tag[1]
return word_tokens_rank
第一步 還是去掉一些停用詞,例如口語詞匯或者意義不大的詞,停用詞可以自定義,在data目錄下的stop_words.txt中。
第二步 按照權(quán)重抽取前50個(gè)詞,并轉(zhuǎn)換成詞典的形式。
b)用上面的生成的字典,傳入word_cloud生成最后的效果
def generate_wordcloud(tags, mask):
word_cloud = WordCloud(width=512, height=512, random_state=10, background_color='white', font_path=font,stopwords=STOPWORDS, mask=mask)
word_cloud.generate_from_frequencies(tags)
plt.figure(figsize=(10, 8), facecolor='white', edgecolor='blue')
plt.imshow(word_cloud)
plt.axis('off')
plt.tight_layout(pad=0)
plt.show()
注意如果使用的是蘋果電腦,macOSX系統(tǒng)。需要添加
import matplotlib
matplotlib.use('TkAgg')
注意的事項(xiàng):
1:注意如果使用的是蘋果電腦,macOSX系統(tǒng)。需要在引包的時(shí)候添加
import matplotlib
matplotlib.use('TkAgg')
2:如果是windows系統(tǒng)中,需要找到具體的中文字體,并定義下中文字體路徑,例如如下。
font = r'C:\Windows\Fonts\simhei.ttf'
關(guān)于如何在Python中生成任何形狀的詞云就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,可以學(xué)到更多知識(shí)。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。