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
- 中文分詞技術中文分詞
- #Elasticsearch中文分詞器 #IK分詞器 @FDDLCElasticsearch中文分詞
- IKAnalyzer 中文分詞的不同版本切詞方式中文分詞
- 中文搜尋引擎技術揭密:中文分詞中文分詞
- Hanlp分詞之CRF中文詞法分析詳解HanLP分詞CRF詞法分析
- pyhanlp 中文詞性標註與分詞簡介HanLP詞性標註分詞
- Python分詞模組推薦:jieba中文分詞PythonJieba中文分詞
- python分詞和生成詞雲圖Python分詞
- iOS中文近似度的演算法及中文分詞(結巴分詞)的整合iOS演算法中文分詞
- 已知詞頻生成詞雲圖(資料庫到生成詞雲)--generate_from_frequencies(WordCloud)資料庫Cloud
- java+lucene中文分詞,搜尋引擎搜詞剖析Java中文分詞
- SCWS PHP 中文簡易分詞PHP分詞
- HanLP中文分詞Lucene外掛HanLP中文分詞
- python 中文分詞包 jiebaPython中文分詞Jieba
- ElasticSearch5.6.1 + 中文分詞(IK)ElasticsearchH5中文分詞
- 分享IKAnalyzer 3.0 中文分詞器中文分詞
- Python 詞雲系列Python
- 【Python】Wordcloud 詞雲PythonCloud
- 分詞工具Hanlp基於感知機的中文分詞框架HanLP中文分詞框架
- 純前端實現詞雲展示+附微博熱搜詞雲Demo程式碼前端
- 史上最全中文分詞工具整理中文分詞
- 深度有趣 | 15 淺談中文分詞中文分詞
- elastcisearch中文分詞器各個版本AST中文分詞
- 如何用Python做中文分詞?Python中文分詞
- 中文分詞演算法總結中文分詞演算法
- 從字到詞,大詞典中文BERT模型的探索之旅模型
- 中文分詞工具之基於字標註法的分詞中文分詞
- Python搭建環境實現中文分詞標籤雲(官方手冊稍作調整)Python中文分詞
- Python文字處理NLP:分詞與詞雲圖Python分詞
- 有道雲詞典--翻譯/螢幕取詞翻譯
- 中文分詞研究難點-詞語劃分和語言規範中文分詞
- python使用jieba實現中文文件分詞和去停用詞PythonJieba分詞
- elasticsearch教程--中文分詞器作用和使用Elasticsearch中文分詞
- python 實現中文分詞統計Python中文分詞
- NLP第3章 中文分詞技術中文分詞
- 如何用Python提取中文關鍵詞?Python