參考自網(wǎng)易云課堂-深度有趣
感謝宏倫工作室的視頻錄制 供予學(xué)習(xí)參考
詞云 就像視頻里說的高端又一般 有種華而不實(shí)的趕腳 外行人看來是件很酷的東西
其一:若干詞案按照特定的圖案組成 這究竟是如何做到的
其二:若詞越大 則此詞若越重要
等真正去實(shí)踐生成詞云 好像并沒有想象中的那么困難 基本框架就三步
- 導(dǎo)入文本數(shù)據(jù)
- 使用wordcloud
- 導(dǎo)出圖片
就好了 非常簡(jiǎn)單 其中一些小細(xì)節(jié)都在是這三步基本框架中補(bǔ)充 認(rèn)真想想 其實(shí)是我們站在了巨人的肩膀上 wordcloud已經(jīng)把最核心最重要封裝好了 如:究竟是如何做到按特定的圖案排列 我們只需要拿來主義即可 在此感謝開發(fā)者們
下面是視頻的簡(jiǎn)單總結(jié)及補(bǔ)充 具體內(nèi)容還是去看視頻吧 不能辜負(fù)每一位原作者的汗水和心血
使用到的第三方包:
- wordcloud
- matplotlib
- PIL
- numpy
- jieba
1.英文詞云 直接采用默認(rèn)配置即可
wc = WordCloud().generate(text)
wc.to_file('wordcloud.png')
畢竟是歪果仁開發(fā)的語言 果然還是對(duì)英文特別友好
2.中文詞云 需額外添加中文字體包
wc = WordCloud(font_path='Hiragino.ttf',width = 800,height= 600,
mode = 'RGBA',background_color =None).generate(text)
3.中文詞云 除了配置字體包 還需分詞
英文天然空格分詞屬性 中文可就不好說了
text = ' '.join(jieba.cut(text))
wc = WordCloud(font_path = 'Hiragino.ttf',
mode = 'RGBA',background_color = None).generate(text)
4.詞云添加蒙版 (最酷炫的圖案來了)
black_mask.png 為蒙版底片
mask = np.array(Image.open('black_mask.png'))
wc = WordCloud(mask = mask,font_path = 'Hiragino.ttf',
mode = 'RGBA',background_color = None).generate(text)
5.詞云使用蒙版的顏色
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func = image_colors)
6.詞云自定義文字顏色
這里使用HSL來自定義顏色 詳情見文檔
參考文檔
def random_color(word,font_size,position,orientation,font_path,random_state):
s = 'hsl(120 ,%d%%,%d%%)' % (random.randint(0, 100),random.randint(0, 100))
return s
mask = np.array(Image.open('black_mask.png'))
wc = WordCloud(mask = mask ,color_func = random_color,
font_path = 'Hiragino.ttf',mode = 'RGBA',
background_color = None).generate(text)
7.詞云自定義關(guān)鍵詞及權(quán)重
#可自定義freq字典
freq ={}
mask = np.array(Image.open('timg.jpg'))
wc = WordCloud(font_path = 'Hiragino.ttf',mask = mask,
mode = 'RGBA',background_color= None).generate_from_frequencies(freq)
generate() = process_text() + generate_from_frequencies()
之前用到的generate()其實(shí)就是process_text() 統(tǒng)計(jì)文本詞頻 和jieba的統(tǒng)計(jì)關(guān)鍵詞 兩者差不多 結(jié)果很相似和generate_from_frequencies()根據(jù)詞頻做圖的結(jié)合體
8.詞云使用停用詞
有些沒有實(shí)際含義 卻普遍出現(xiàn) 如:你、我漾唉、他唱凯、如果等等
可根據(jù)實(shí)際效果 適當(dāng)摘出 復(fù)制到txt中 用于停用詞
# 獲取名詞
# jieba.enable_parallel(100) #開啟并行模式 win下不支持 很氣
text = ' '.join(x.word for x in psg.cut(text) if x.flag.startswith('n'))
# jieba.disable_parallel() #關(guān)閉并行模式
# 導(dǎo)入停用詞
stopwords = open('stopwords.txt').read().split('\n')
# 導(dǎo)入蒙版
mask = np.array(Image.open('1.jpg'))
wc = WordCloud(mask=mask, font_path='Hiragino.ttf',
mode='RGBA', background_color=None,
stopwords=stopwords).generate(text)
最后話不多說 Github