實戰一:手把手教你中英文詞雲
1.簡介
詞雲是一種數據呈現方式。
2.準備
工具:python 3.6 sublime text
所需安裝包:
pip install wordcloud matplotlib jieba pillow
3.WordCloud()可選的參數
font_path:可用於指定字體路徑,包括otf和ttf
width:詞雲的寬度,默認爲400
height:詞雲的高度,默認爲200
mask:蒙版,可用於定製詞雲的形狀
min_font_size:最小字號,默認爲4
max_font_size:最大字號,默認爲詞雲的高度
max_words:詞的最大數量,默認爲200
stopwords:將被忽略的停用詞,如果不指定則使用默認的停用詞詞庫
background_color:背景顏色,默認爲black
mode:默認爲RGB模式,如果爲RGBA模式且background_color設爲None,則背景將透明
4.英文詞雲
# _*_ coding:utf-8 _*_
# 進行英文詞雲生成
from wordcloud import WordCloud
import matplotlib.pyplot as plt
path = 'D://BaiduNetdiskDownload//深度有趣人工智能//實戰一 詞雲的使用//'
# 打開文本
text = open(path + 'source//constitution.txt').read()
# 生成對象
wc = WordCloud().generate(text)
# 顯示詞雲
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file(path + 'create_images//wordcloud1.png')
由於英文單詞之間有空格,所以不需要額外的處理。
5.中文分詞
(1)不分詞的效果
這裏以西遊記爲例
# _*_ coding:utf-8 _*_
# 中文不分詞效果展示
from wordcloud import WordCloud
import matplotlib.pyplot as plt
path = 'D://BaiduNetdiskDownload//深度有趣人工智能//實戰一 詞雲的使用//'
# 打開文本
text = open(path + 'source//xyj.txt',encoding = 'UTF-8').read()
# 生成對象
wc = WordCloud(font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
# 顯示詞雲
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file(path + 'create_images//wordcloud2.png')
(2)中文分詞效果
這裏用jieba進行中文分詞
# _*_ coding:utf-8 _*_
# 中文分詞後的詞雲
from wordcloud import WordCloud
import matplotlib.pyplot as plt
import jieba
path = 'D://BaiduNetdiskDownload//深度有趣人工智能//實戰一 詞雲的使用//'
# 打開文本
text = open(path + 'source//xyj.txt',encoding = 'UTF-8').read()
# 中文分詞
text = ' '.join(jieba.cut(text))
print(text[:100])
# 生成對象
wc = WordCloud(font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
# 顯示詞雲
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file(path+'create_images//wordcloud3.png')
(3)使用蒙版
這裏將mask翻譯爲蒙版,使用蒙版之後,可以根據提供的蒙版圖片,生成指定形狀的的詞雲
# _*_ coding:utf-8 _*_
# 使用蒙版
from wordcloud import WordCloud
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba
path = 'D://BaiduNetdiskDownload//深度有趣人工智能//實戰一 詞雲的使用//'
# 打開文本
text = open(path+'source//xyj.txt',encoding='utf-8').read()
# 中文分詞
text = ''.join(jieba.cut(text))
print(text[:100])
# 生成對象
mask = np.array(Image.open(path+"source//black_mask.png"))
wc = WordCloud(mask=mask,font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
# 顯示詞雲
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file(path+"create_images//wordcloud4.png")
(4)從蒙版中抽取顏色
# _*_ coding:utf-8 _*_
# 詞雲的顏色從蒙版中抽取
from wordcloud import WordCloud,ImageColorGenerator
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt
import jieba
path = 'D://BaiduNetdiskDownload//深度有趣人工智能//實戰一 詞雲的使用//'
# 打開文本
text = open(path+'source//xyj.txt',encoding='utf-8').read()
# 中文分詞
text = ''.join(jieba.cut(text))
print(text[:100])
# 生成對象
mask = np.array(Image.open(path+"source//color_mask.png"))
wc = WordCloud(mask=mask,font_path='Hiragino.ttf', width=800, height=600, mode='RGBA', background_color=None).generate(text)
# 從圖片中生成顏色
image_colors = ImageColorGenerator(mask)
wc.recolor(color_func=image_colors)
# 顯示詞雲
plt.imshow(wc,interpolation='bilinear')
plt.axis('off')
plt.show()
# 保存到文件
wc.to_file(path+"create_images//wordcloud5.png")
6.實戰一:手把手教你中英文詞雲
項目鏈接:鏈接: https://pan.baidu.com/s/1p-QFD3WchxrvIlCnGuexKQ 提取碼: zhcf