如何用python建立詞雲圖片

firefule發表於2021-09-11

如何用python建立詞雲圖片

Python實現詞雲的庫有很多,較為常見的就是wordcloud,這個庫基於PIL,PIL是必不可少的,需要用的還有matplotlib和numpy。

本文使用直譯器為python2.7.13 32位。

安裝

pip install wordcloud

使用

針對庫示例做了一個簡單修改,直接使用generate_from_frequencies方法,而沒有使用generate()方法。有這樣幾個原因,generate_from_frequencies是基礎的方法,generate()仍然還是要呼叫generate_from_frequencies方法;實驗比較直接。

庫的使用方法很簡單,但是中文使用的話會有幾個問題,一個是字元編碼問題,二是字型問題,預設的字型不支援中文,因此需要加入font_path = "simfang.ttf"指定字型,這是把字型指定為同一個資料夾下的simfang.ttf。

示例:

#encoding=utf-8
from os import path
from wordcloud import WordCloud
import sys
reload(sys)
sys.setdefaultencoding('utf-8')


fre={"哈哈".decode('utf-8'): 1.2,"呵呵".decode('utf-8'):6}
wordcloud = WordCloud(font_path = "simfang.ttf").generate_from_frequencies(fre)

import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

效果如下:

如何用python建立詞雲圖片

先抽取網頁的文字,然後再進行分詞,將分詞結果根據頻率作為字典傳給generate_from_frequencies,生成詞雲。
更簡單,比如直接抽取文章的關鍵詞,比如部落格每篇文章就有關鍵詞,用Counter庫,直接生成頻率呼叫。

使用背景圖片生成詞雲

如何用python建立詞雲圖片

對上面的程式碼做了一點簡單的改動:

#encoding=utf-8

from os import path
from wordcloud import WordCloud
import sys
reload(sys)
sys.setdefaultencoding('utf-8')

d = path.dirname(__file__)
text = open(path.join(d, 'constitution.txt')).read().decode('utf-8')

import numpy as np
from PIL import Image
football = np.array(Image.open(path.join(d, "timg.jpg")))

fre={"哈哈".decode('utf-8'): 1.2,"呵呵".decode('utf-8'):6,"咯咯".decode('utf-8'):6,
"呵呵".decode('utf-8'):6,"咯咯".decode('utf-8'):6,
"啦啦".decode('utf-8'):1,"哦哦".decode('utf-8'):6,
"恩恩".decode('utf-8'):3,"呃呃".decode('utf-8'):6,
"餓餓".decode('utf-8'):3,"嗯嗯".decode('utf-8'):6,
"哼哼".decode('utf-8'):5,"麗麗".decode('utf-8'):6,
"咔咔".decode('utf-8'):7,"咳咳".decode('utf-8'):6,
"樂樂".decode('utf-8'):6,"吶吶".decode('utf-8'):6,
"嘎嘎".decode('utf-8'):6,"嘻嘻".decode('utf-8'):6}
#wordcloud = WordCloud(font_path = "simfang.ttf").generate(text)
wordcloud = WordCloud(font_path = "simfang.ttf",mask=football).generate_from_frequencies(fre)

import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")
plt.show()

效果如下:

如何用python建立詞雲圖片

更多技術請關注。

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1834/viewspace-2834011/,如需轉載,請註明出處,否則將追究法律責任。

相關文章