python做詞雲 (WordCloud)

來源:互聯網
上載者:User

標籤:介紹   return   dde   nta   最大   container   color   意思   target   

python做詞雲 (WordCloud) 1. 安裝
 某個教程給出的方法,到[這裡][1]下載相應的wordcolud,然後到相應目錄pip安裝。  其實直接
pip install wordcloud

就ok了 ,進入python。 import wordcloud成功即可。

##2. 文檔簡要說明

可以看到文檔主要就3個主要的函數,目前主要介紹WordCloud模組以及相關的函數。

  1. WordCloud()
class wordcloud.WordCloud(font_path=None, width=400, height=200, margin=2, ranks_only=None, prefer_horizontal=0.9, mask=None, scale=1, color_func=None, max_words=200, min_font_size=4, stopwords=None, random_state=None, background_color=‘black‘, max_font_size=None, font_step=1, mode=‘RGB‘, relative_scaling=0.5, regexp=None, collocations=True, colormap=None, normalize_plurals=True)

font_path:字型位置,中文的時候需要制定一些。
prefer_horizontal:float,水平方向的擬合次數,如果小於1,一旦水平方向不合適就旋轉這個詞。 意思就是詞雲的演算法水平詞和豎直方向詞的一種數量衡量。
mask :控制詞雲的背景。nd-array or None (default=None)如果是空,就使用width和height參數。不然使用mask作為背景。
scale:縮放圖片
max_words:顯示的最大詞
stopwords:停用詞
relative_scaling:這個比較有意思,如果true,字型的大小與詞語順序有關。false,字型大小與詞雲頻率有關。

  1. 相關函數

fit_words(frequencies) 根據單詞與頻率產生詞雲
generate(tex) 根據文本直接產生詞雲,僅限 英文的
generate_from_frequencies(frequencies, max_font_size=None) 根據單詞與頻率產生詞雲,可以指定最大數目
generate_from_text()根據文本直接產生詞雲。英文的
process_text(text) 根據text產生單詞的統計數目,返回{word,int},去除了停用詞。只限於英文的

關於fit_words的參數問題,

讓我們傳的是一個tuple,包含了word和frequency,實際我這麼做的時候參數是錯誤了,看一下原始碼

 def fit_words(self, frequencies):        """Create a word_cloud from words and frequencies.        Alias to generate_from_frequencies.        Parameters        ----------        frequencies : array of tuples            A tuple contains the word and its frequency.        Returns        -------        self        """        return self.generate_from_frequencies(frequencies)

參數說明仍然說是用“ A tuple contains the word and its frequency.”,又去調用了self.generate_from_frequencies(frequencies),

 def generate_from_frequencies(self, frequencies, max_font_size=None):        """Create a word_cloud from words and frequencies.        Parameters        ----------        frequencies : dict from string to float            A contains words and associated frequency.        max_font_size : int            Use this font-size instead of self.max_font_size        Returns        -------        self        """        # make sure frequencies are sorted and normalized        frequencies = sorted(frequencies.items(), key=item1, reverse=True)        frequencies = frequencies[:self.max_words]        # largest entry will be 1        max_frequency = float(frequencies[0][4])        frequencies = [(word, freq / max_frequency)                       for word, freq in frequencies]

這個時候的參數成了"dict from string to float",而且裡面那個列表產生式 相當於產生了一個新的 frequencies ,這個新的 frequencies 是個array of tuple。所以我們還是要傳字典形式的。只不過函數內部變成了 array of tuple 。。。。。年久未修?

3. 知乎教育水平 產生詞雲執行個體
#coding=utf-8#匯入wordcloud模組和matplotlib模組from wordcloud import WordCloud,ImageColorGeneratorimport  matplotlib.pyplot as pltfrom scipy.misc import imreadimport jiebaimport jieba.analysecontent = (",").join(data2[‘教育經曆‘].values.tolist())#dataframe格式資料tags = jieba.analyse.extract_tags(content, topK=200, withWeight=False)text =" ".join(tags)print(tags)#讀入背景圖片bj_pic=imread(‘1.png‘)#產生詞雲(通常字型路徑均設定在C:\\Windows\\Fonts\\也可自行下載)font=r‘C:\\Windows\\Fonts\\STFANGSO.ttf‘#不加這一句顯示口字形亂碼  ""報錯 wordcloud=WordCloud(mask=bj_pic,background_color=‘white‘,font_path=font,scale=0.5).generate_from_text(text)  #直接根據文本產生 詞雲plt.imshow(wordcloud)plt.axis(‘off‘)plt.show()wordcloud.to_file(‘test2.jpg‘)


可以試著停用詞,university,或者直接在tags裡把不想要的刪除。圖片很小,用了scale=0.5

嘗試了一下fit_words,必須傳入字典形式的。!!!

wordcloud = WordCloud(mask=bj_pic,background_color=‘white‘,font_path=font,scale=3.5).fit_words({"sb":3,"我是":4,"操":10})plt.imshow(wordcloud)plt.axis(‘off‘)plt.show()

python做詞雲 (WordCloud)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.