今日學習了python的詞云技術
from os import path
from wordcloud import wordcloud
import matplotlib.pyplot as plt
d=path.dirname(__file__)
text=open(path.join(d,"data")).read()
# 步驟3-2:設定一張詞雲圖物件
wordcloud = wordcloud(background_color="white", max_font_size=40).generate(text)
# 步驟4-1:建立乙個圖表畫布
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
# 步驟4-3:取消圖表x、y軸
plt.axis("off")
# 顯示
plt.show()
結果如下:這是沒有背景圖的詞云
接下來這個是愛麗絲漫遊**的詞云
from os import path
from pil import image
import numpy as np
from wordcloud import wordcloud
import matplotlib.pyplot as plt
d=path.dirname(__file__)
text=open(path.join(d,"data")).read()
alice_mask = np.array(image.open(path.join(d, "data/alice_mask.png")))
wordcloud=wordcloud(background_color="white",max_words=2000,mask=alice_mask)
wordcloud.generate(text)
wordcloud.to_file(path.join(d,"images//alice_word.png"))
用英文做詞云很簡單,不需要很麻煩的分詞技術,用wordcloud模組就可以簡單實現
執行結果如下
背景圖:
最後是中文詞云,中文詞云就比較麻煩了,得用到jieba模組的分詞技術,還得篩選
import jieba
from os import path #用來獲取文件的路徑
#詞云from pil import image
import numpy as np
import matplotlib.pyplot as plt
#詞云生成工具
from wordcloud import wordcloud,imagecolorgenerator
#需要對中文進行處理
import matplotlib.font_manager as fm
#背景圖
#獲取當前的專案檔案加的路徑
d=path.dirname(__file__)
#讀取停用詞表
stopwords_path='data/alice.txt'
#新增需要自定以的分詞
jieba.add_word("侯亮平")
#讀取要分析的文字
text_path="data"
#讀取要分析的文字,讀取格式
text=open(path.join(d,text_path),encoding="utf8").read()
#定義個函式式用於分詞
def jiebacleartext(text):
#定義乙個空的列表,將去除的停用詞的分詞儲存
mywordlist=
#進行分詞
seg_list=jieba.cut(text,cut_all=false)
#將乙個generator的內容用/連線
liststr='/'.join(seg_list)
#開啟停用詞表
f_stop=open(stopwords_path,encoding="utf8")
#讀取try:
f_stop_text=f_stop.read()
finally:
f_stop.close()#關閉資源
#將停用詞格式化,用\n分開,返回乙個列表
f_stop_seg_list=f_stop_text.split("\n")
#對預設模式分詞的進行遍歷,去除停用詞
for myword in liststr.split('/'):
#去除停用詞
if not(myword.split()) in f_stop_seg_list and len(myword.strip())>1:
return ' '.join(mywordlist)
text1=jiebacleartext(text)
#生成wc=wordcloud(
background_color="white",
max_words=150,
mask=bg, #設定的背景
max_font_size=60,
random_state=42,
font_path='c:/windows/fonts/simkai.ttf' #中文處理,用系統自帶的字型
).generate(text1)
#為設定字型
my_font=fm.fontproperties(fname='c:/windows/fonts/simkai.ttf')
#產生背景,基於彩色影象的顏色生成器
image_colors=imagecolorgenerator(bg)
#開始畫圖
plt.imshow(wc,interpolation="bilinear")
#為雲圖去掉座標軸
plt.axis("off")
#畫雲圖,顯示
#plt.figure()
plt.show()
#為背景圖去掉座標軸
plt.axis("off")
plt.imshow(bg,cmap=plt.cm.gray)
#plt.show()
#儲存雲圖
wc.to_file("data/sanguo.png")
執行結果:
可以看出,三國前20回里,呂布,曹操,玄德等詞出現的最多
基於python中jieba包的中文分詞中詳細使用
為了教別人jieba庫的使用,順便自己把這個整理一下,記錄下來,省的之後使用又來找資料 jieba 中文分詞比較好,但是英文分詞就用其他的 3種分詞模式 精確模式,將句子精確地切開,不存在冗餘,適合文字分析 全模式,把句子中所有的可以成詞的詞語都掃瞄出來,速度非常快,但是不能解決歧義,有冗餘 搜尋引...
Python基於jieba的中文詞云
python基於jieba的中文詞云。from os import path from wordcloud import wordcloud import matplotlib.pyplot as plt d path.dirname file text open path.join d,data ...
Python 基於 jieba 的中文分詞總結
目錄 pip install jiebajieba分詞器支援4種分詞模式 精確模式該模式會試圖將句子最精確地切分開,適合在文字分析時使用。全模式該模式會將句子中所有可以成詞的詞語都掃瞄出來,速度也非常快,缺點是不能解決歧義問題,有歧義的詞語也會被掃瞄出來。搜尋引擎模式該模式會在精確模式的基礎上對長詞...