word_cloud 中文詞雲
在word_cloud 初體驗——製作 Adele 輪廓的詞雲圖中,我成功地實現了英文詞雲(採用了原圖色 mask 和按頻率比重)。這次利用 jieba 和 wordcloud,將冰心的散文詩用詞雲表示了出來。
工具
我是在OS X上完成的進行的詞雲構建。為了完成這個實驗,需要用到以下幾個工具:
- 用 Python 3 及其 IDE PyCharm 編寫原始碼
- Anaconda 用來搭建環境
- 一個摳圖軟體(我用的“搞定摳圖”)
原料
完成這次實驗還需要一些“原料”:
- 從 Python wordcloud 庫 下載的 sample 程式碼
- 網上找到 color 圖片和冰心的散文詩節選
- 除了用到了
os
PIL
numpy
matplotlib
等 Python 包,還用到了自然語義處理的jieba
包
環境
因為之前說過了英文環境的配置,中文環境的配置基本一樣,只不過多了一個jieba
包。“結巴”是一個強大的分詞庫,完美支援中文分詞,分為三種模式:精確模式(預設)、全模式和搜尋引擎模式。
分詞包
⚠️ jieba 屬於第三方包,不能用 conda install
直接下載,需要用一些特殊的方法。
需要首先尋找模組,找到合適的版本 condo-forge/jieba,然後安裝:
$ anaconda search -t conda jieba
$ anaconda show conda-forge/jieba
$ conda install --channel https://conda.anaconda.org/conda-forge jieba
找到我們剛才配置好的 WordCloud 環境
,加入到 PyCharm。
Python 版本
當然你可能會遇到這個問題:匯入其他庫(如numpy,pandas),並跑了一些簡單的程式都一切正常,唯獨匯入matplotlib 庫的時候,不管怎樣也畫不了圖。
有的解釋說這是因為 Python 的版本問題,由於我已經被 Mac 自帶的 Python 2 和 我下載的 Python 3 困擾多時, 我決定不理它了,直接採用最醜陋但很簡潔的辦法,加兩行程式碼在 import matplotlib.pyplot as plt
之前:
import matplotlib as mpl
mpl.use("TkAgg")
問題解決了,現在可以真正設計我們的詞雲圖了!
詞雲
接下來我們就可以設計自己的詞雲了!複製冰心散文詩到 text_ch.txt,並摳圖生成 heart.png 用作 mask。
問題一:漢化字型
一開始出現了問題,發現識別不了漢字——出現了一堆框框:
這時候需要從網上下載一些漢化字型格式(比如simhei.ttf),然後在我們的程式碼中加入:
# the font from github: https://github.com/adobe-fonts
font = '/資源庫/Fonts/Simhei.ttf'
wc = WordCloud(font_path=font).generate(cut_text)
這樣就可以用漢化字型了!
問題二:句雲→詞雲
但是還有一個問題就是一開始生成的詞雲是句子,因為沒有用到“結巴”分詞包。
得到“句子云”的原因有2個:
- 沒有使用 jieba.cut() 進行分詞,txt 被直接用於 WordCloud.generate()
- 使用了 jieba.cut() 但是沒有用特殊符號使得分好詞的句子又變成了原始 txt 格式,這時WordCloud.generate() 只能按標點符號得到“句子云”
進行如下的分詞操作處理:
# 分詞
d = path.dirname(__file__) if "__file__" in locals() else os.getcwd()
text = open(path.join(d, 'text_ch.txt')).read()
cut_text = ' '.join(jieba.cut(text))
j_text = jieba.cut(text)
cut1_text = ''.join(jieba.cut(text))
# 用分詞做詞雲 cut_text
wc = WordCloud(background_color="white", font_path=font).generate(cut_text)
成果
通過執行下面這段程式碼,可以發現做出了完美的中文詞雲:
# -*- coding: utf-8 -*-
from os import path
import jieba
from wordcloud import WordCloud
import matplotlib as mpl
import numpy as np
from PIL import Image
mpl.use("TkAgg")
import matplotlib.pyplot as plt
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator
# 分詞
d = path.dirname(__file__) if "__file__" in locals() else os.getcwd()
text = open(path.join(d, 'text_ch.txt')).read()
cut_text = ' '.join(jieba.cut(text))
j_text = jieba.cut(text)
cut1_text = ''.join(jieba.cut(text))
# the font from github: https://github.com/adobe-fonts
font = '/資源庫/Fonts/Simhei.ttf'
Heart_coloring = np.array(Image.open(path.join(d, "heart.png")))
stopwords = set(STOPWORDS)
stopwords.add("said")
# 用分詞做詞雲
wc = WordCloud(background_color="white", collocations=False, font_path=font, width=4400, height=4400, margin=2, mask=Heart_coloring,
max_font_size=120, min_font_size=20).generate(cut_text)
image_colors = ImageColorGenerator(Heart_coloring)
plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")
#plt.imshow(wc)
plt.axis("off")
plt.show()
# 把詞雲儲存下來
wc.to_file('show_Chinese.png')
最終的詞雲效果如圖所示:
美麗的詞雲就這樣做好了!?
更多工具
值得一提的是,WordArt 這款工具也有詞雲的處理功能。和python的wordcloud相比,這款處理軟體的優點在於:可以對個別詞調整字型和顏色;有更美觀的處理效果;也具有漢化字型的處理。但是,下載高清版是要收費的,而且價格不菲。逢19年春節之際,我用這個軟體處理的詞雲給大家拜個早年!
相關文章
- Python詞雲庫wordcloud中文顯示問題詳解PythonCloud
- 中文分詞原理及常用Python中文分詞庫介紹中文分詞Python
- matplotlib 圖示 中文亂碼, 與 wordcloud 詞雲圖 中文亂碼 解決方法Cloud
- 古詩詞 中文 分詞 自動化分詞
- NLP之中文分詞中文分詞
- 中文分詞技術中文分詞
- #Elasticsearch中文分詞器 #IK分詞器 @FDDLCElasticsearch中文分詞
- python 中文分詞包 jiebaPython中文分詞Jieba
- 中文搜尋引擎技術揭密:中文分詞中文分詞
- pyhanlp 中文詞性標註與分詞簡介HanLP詞性標註分詞
- Hanlp分詞之CRF中文詞法分析詳解HanLP分詞CRF詞法分析
- HanLP中文分詞Lucene外掛HanLP中文分詞
- 如何用Python做中文分詞?Python中文分詞
- SCWS PHP 中文簡易分詞PHP分詞
- 中文分詞器,整理自Ai中文分詞AI
- python分詞和生成詞雲圖Python分詞
- Python 詞雲系列Python
- 分詞工具Hanlp基於感知機的中文分詞框架HanLP中文分詞框架
- python 實現中文分詞統計Python中文分詞
- elastcisearch中文分詞器各個版本AST中文分詞
- 如何用Python提取中文關鍵詞?Python
- 深度有趣 | 15 淺談中文分詞中文分詞
- Coreseek-帶中文分詞的Sphinx中文分詞
- 史上最全中文分詞工具整理中文分詞
- 已知詞頻生成詞雲圖(資料庫到生成詞雲)--generate_from_frequencies(WordCloud)資料庫Cloud
- python使用jieba實現中文文件分詞和去停用詞PythonJieba分詞
- 中文分詞工具之基於字標註法的分詞中文分詞
- 從字到詞,大詞典中文BERT模型的探索之旅模型
- 中文分詞研究難點-詞語劃分和語言規範中文分詞
- NLP第3章 中文分詞技術中文分詞
- 最全中文停用詞表整理(1893個)
- elasticsearch教程--中文分詞器作用和使用Elasticsearch中文分詞
- Python文字處理NLP:分詞與詞雲圖Python分詞
- 如何用Python 製作詞雲-對1000首古詩做詞雲分析Python
- 使用cjieba(結巴分詞庫)實現php擴充套件中文分詞JiebaPHP套件中文分詞
- 如何用Python做詞雲?Python
- python -wordcloudan雲詞安裝PythonCloud
- 純前端實現詞雲展示+附微博熱搜詞雲Demo程式碼前端