Python 十分鐘學會用任意中文文字生成詞云

2021-08-02 04:09:06 字數 3686 閱讀 1301

本文需要的兩個python類庫 

jieba:中文分詞分詞工具 

wordcloud:python下的詞云生成工具

寫作本篇文章用時乙個小時半,閱讀需要十分鐘,讀完該文章後你將學會如何將任意中文文字生成詞云 

python詞云 worldcloud 十五分鐘入門與高階

python中文分詞 jieba 十五分鐘入門與高階

**部分**於其他人的部落格,但是因為bug或者執行效率的原因,我對**進行了較大的改變

**第一部分,設定**執行需要的大部分引數,你可以方便的直接使用該**而不需要進行過多的修改

第二部分為jieba的一些設定,當然你也可以利用iscn引數取消中文分詞

第三部分,wordcloud的設定,包括展示與儲存

如果你想用該**生成英文詞云,那麼你需要將iscn引數設定為0,並且提供英文的停用詞表,但是我更推薦你使用python詞云 worldcloud 十五分鐘入門與高階這篇文章中的**,因為它更簡潔,更有利於使用』

關於該程式的使用,你可以直接讀注釋在數分鐘內學會如何使用它

# - * - coding: utf - 8 -*-

## csdn:

from os import path

from scipy.misc import imread

import matplotlib.pyplot as plt

import jieba

# jieba.load_userdict("txt\userdict.txt")

# 新增使用者詞庫為主詞典,原詞典變為非主詞典

from wordcloud import wordcloud, imagecolorgenerator

# 獲取當前檔案路徑

# __file__ 為當前檔案, 在ide中執行此行會報錯,可改為

# d = path.dirname('.')

d = path.dirname(__file__)

stopwords = {}

iscn = 1

#預設啟用中文分詞

# 設定背景路徑

text_path = 'txt/lz.txt'

#設定要分析的文字路徑

font_path = 'd:\fonts\simkai.ttf'

# 為matplotlib設定中文字型路徑沒

stopwords_path = 'stopwords\stopwords1893.txt'

# 停用詞詞表

imgname1 = "wordclouddefautcolors.png"

# 儲存的名字1(只按照背景形狀)

imgname2 = "wordcloudcolorsbyimg.png"

# 儲存的名字2(顏色按照背景顏色布局生成)

my_words_list = ['路明非'] # 在結巴的詞庫中新增新詞

back_coloring = imread(path.join(d, back_coloring_path))# 設定背景

# 設定詞云屬性

wc = wordcloud(font_path=font_path, # 設定字型

background_color="white", # 背景顏色

max_words=2000, # 詞云顯示的最大詞數

mask=back_coloring, # 設定背景

max_font_size=100, # 字型最大值

random_state=42,

width=1000, height=860, margin=2,# 設定預設的大小,但是如果使用背景的話,那麼儲存的大小將會按照其大小儲存,margin為詞語邊緣距離

)# 新增自己的詞庫分詞

defadd_word

(list):

for items in list:

jieba.add_word(items)

add_word(my_words_list)

text = open(path.join(d, text_path)).read()

defjiebacleartext

(text):

mywordlist =

seg_list = jieba.cut(text, cut_all=false)

liststr="/ ".join(seg_list)

f_stop = open(stopwords_path)

try:

f_stop_text = f_stop.read( )

f_stop_text=unicode(f_stop_text,'utf-8')

finally:

f_stop.close( )

f_stop_seg_list=f_stop_text.split('\n')

for myword in liststr.split('/'):

ifnot(myword.strip() in f_stop_seg_list) and len(myword.strip())>1:

return

''.join(mywordlist)

if iscn:

text = jiebacleartext(text)

# 生成詞云, 可以用generate輸入全部文字(wordcloud對中文分詞支援不好,建議啟用中文分詞),也可以我們計算好詞頻後使用generate_from_frequencies函式

wc.generate(text)

# wc.generate_from_frequencies(txt_freq)

# txt_freq例子為[('詞a', 100),('詞b', 90),('詞c', 80)]

# 從背景生成顏色值

image_colors = imagecolorgenerator(back_coloring)

plt.figure()

# 以下**顯示

plt.imshow(wc)

plt.axis("off")

plt.show()

# 繪製詞云

# 儲存

wc.to_file(path.join(d, imgname1))

image_colors = imagecolorgenerator(back_coloring)

plt.imshow(wc.recolor(color_func=image_colors))

plt.axis("off")

# 繪製背景為顏色的

plt.figure()

plt.imshow(back_coloring, cmap=plt.cm.gray)

plt.axis("off")

plt.show()

# 儲存

本文發表於

十分鐘學會less

譯者 wleonardo 我們都知道在大型的專案中,當css有數千行 的時候,css的編寫有一些麻煩。我們經常會出現複製相同的 到不同的地方或者通過我們的編輯器來替換所有相同的顏色。這需要我們費很大的力氣去保持css的可維護性。但是其實我們並不是一定要這樣。幸運的是,web開發社群已經解決了這個問題...

十分鐘學會Excel匯出

excel匯出在內網系統一般用的很多,一般分為poi和jxl兩種,前者支援excel2003 xls 和excel2007 xlsx 而後者只支援excel2003 xls 所以我們這裡使用poi來做excel 的匯出 我們以匯出員工資訊的資料為例子 第一步 匯入poi的jar包 第二步,在前台寫乙...

課間十分鐘

時間限制 1000 ms 記憶體限制 128 mb 兩人都是數學愛好者,便發明了乙個遊戲。在遊戲開始前,他們先約定乙個正整數n,同時令m 1。遊戲過程中,每個人都可以將m的值擴大2到9中的任意倍數。第乙個使m n的人就是最後的贏家。181818181818和zbt都十分聰明,並且遊戲過程中都使用最佳...