Python基於jieba的中文詞云

2021-09-01 13:18:40 字數 3590 閱讀 8880

今日學習了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種分詞模式 精確模式該模式會試圖將句子最精確地切分開,適合在文字分析時使用。全模式該模式會將句子中所有可以成詞的詞語都掃瞄出來,速度也非常快,缺點是不能解決歧義問題,有歧義的詞語也會被掃瞄出來。搜尋引擎模式該模式會在精確模式的基礎上對長詞...