Python word_cloud 部分文檔翻譯 標簽雲系列(二)


轉載地址:https://zhuanlan.zhihu.com/p/20436581
上文末尾提到 Python 下還有一款詞雲生成器。amueller/word_cloud · GitHub

可以直接使用命令 pip install wordcloud 安裝,自行補充完整依賴。

網上搜不到有關的中文文章,自己探索了一下,也算做出了結果。由於沒有中文支持的說明和中文文檔,在此簡單補充並翻譯部分文檔。翻譯可能有出入僅供參考,只是為了加深自己理解所用。

#后面有示例和展示。想了想放到一篇里面太臃腫,所以另起一篇展示。

API Reference

API 分為三部分

生成詞雲的部分、生成圖像顏色的部分和隨機顏色函數。

wordcloud.WordCloud

class wordcloud.WordCloud(font_path=None, width=400, height=200, margin=5, ranks_only=False, prefer_horizontal=0.9,mask=None, scale=1, color_func=<function random_color_func at 0x2b8b422a31b8>, max_words=200, stopwords=None,random_state=None, background_color='black', max_font_size=None)

主要部分,用來生成詞雲並生成圖像。

 

參數:

font_path : string

用到的字體文件的路徑(支持OTF 或 TTF格式)。默認字體是
DroidSansMono 。非 Linux 系統需自行調整路徑參數。

說明:Windows 下中文支持的方法。

1、准備好一個中文字體,如 simhei.ttf

2、將其復制到 C:\Python27\Lib\site-packages\wordcloud\

3、在 wordcloud.py 中修改 FONT_PATH 為相應字體。(注意是大寫,大寫的字體路徑是默認路徑,小寫的字體是后面使用時可以再次指定的,會覆蓋默認字體)

FONT_PATH = os.environ.get("FONT_PATH", os.path.join(os.path.dirname(__file__),

"simhei.ttf"))

4、注意中文的編碼應為 utf-8 ,否則會導致亂碼無法顯示

#可以參見不知道什么語言的用戶提出的 issue Word cloud unicode (multilanguage) problem · Issue #70 · amueller/word_cloud · GitHub

width : int (default=400)

畫布寬度

height : int (default=200)

畫布高度

ranks_only : boolean (default=False)

是否只用詞頻排序而不是實際詞頻統計值,默認 False

prefer_horizontal : float (default=0.90)

詞語水平出現的頻率,默認 0.9 (即垂直出現頻率為 0.1 )

mask : nd-array or None (default=None)

如果參數為空,則使用二維遮罩繪制詞雲。
如果 mask 非空,設置的寬高值將被忽略,遮罩形狀被 mask 取代。
除全白(#FFFFFF)的部分將不會繪制,其余部分會用於繪制詞雲。

scale : float (default=1)

計算與繪制圖像間的比例。對於較大的詞雲圖像,使用比例而非較大的畫布會顯著提升繪圖速度,但是可能會造成詞語間的粗糙擬合。

max_words : number (default=200)

詞語的最大數量

stopwords : set of strings

屏蔽詞

max_font_size : int or None (default=None)

最大詞的最大字號。如果不指定,則為圖像高度。

 

說明:

畫布越大,運行耗時會顯著提升。如果你需要輸出一幅較大的詞雲圖像,嘗試設置較小的畫布並使用比例參數來調節。

基於最大字號和比例參數,算法可能會更傾向於使用詞語的排名順序而非它們的實際頻率。

 

屬性:

words_: list of tuples (string, float)

帶有頻率的詞語

layout_:list of tuples (string, int, (int, int), int, color))

編碼擬合好的詞雲。每個詞語的字符串、字號、位置、方向和顏色的編碼。

 

方法:

static __init__(font_path=None, width=400, height=200, margin=5, ranks_only=False, prefer_horizontal=0.9, mask=None,scale=1, color_func=<function random_color_func at 0x2b8b422a31b8>, max_words=200, stopwords=None,random_state=None, background_color='black', max_font_size=None)

static fit_words(frequencies) / generate_from_frequencies(這兩個一個意思)

依據詞語和頻率生成詞雲

參數:frequencies : array of tuples

包含了詞語和頻率的數組

static generate(text) / generate_from_text

從文本中生成詞雲,調用 _text 和 fit_words

static process_text(text)

將長文本分詞並去除屏蔽詞(此處指英語,中文分詞還是需要自己用別的庫先行實現,使用上面的 fit_words(frequencies) )

參數:text : string

需要處理的文本

返回:words : list of tuples (string, float)

帶有相應頻率的詞語

說明:有標記詞頻的更好方法,但是作者沒有把那些全部包括進來。

static recolor(random_state=None, color_func=None)

對現有輸出重新着色。重新上色會比重新生成整個詞雲快很多。

參數:

random_state : RandomState, int, or None, default=None

如果非空,會使用固定的隨機狀態。
如果給出一個整數,它會被用作 random.Random 狀態的一個種子(根源)

color_func : function or None, default=None

生成新顏色的函數,如果為空,則使用 self.color_func

static to_array()

轉化為 numpy array

返回:image : nd-array size (width, height, 3)

numpy 矩陣的詞雲圖像

static to_file(filename)

輸出到文件

參數:filename : string

輸出的文件路徑

 

wordcloud.ImageColorGenerator

class wordcloud.ImageColorGenerator(image)

基於 RGB 圖像生成顏色。詞語將會使用一定矩形區域內的平均顏色上色。這個對象可以被調用作為詞雲或者重新上色方法的顏色函數。

參數:image : nd-array, shape (height, width, 3)

用來生成詞語顏色的圖像。 Alpha 通道會被忽略。大小應與畫布大小相同。

static __init__(image)

 

wordcloud.random_color_func

wordcloud.random_color_func(word=None, font_size=None, position=None, orientation=None, font_path=None, random_state=None)

隨機生成色調

默認的上色方法。僅僅會生成一個隨機的色調( 80% 顏色值 50% 亮度)

參數:

word, font_size, position, orientation : ignored.

random_state : random.Random object or None, (default=None)

如果一個隨機的對象已經給出,這會用作生成隨機數字(沒看懂)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM