最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python詞云庫wordCloud使用方法詳解(解決中文亂碼)

 更新時間:2020年02月17日 13:57:18   作者:修煉之路  
這篇文章主要介紹了python詞云庫wordCloud使用方法詳解(解決中文亂碼),需要的朋友可以參考下

文章中的例子主要借鑒wordColud的examples,在文章對examples中的例子做了一些改動。

一、wordColud設(shè)計中文詞云亂碼

使用wordColud設(shè)計詞云的時候可能會產(chǎn)生亂碼問題,因為wordColud默認(rèn)的字體不支持中文,所以我們只需要替換wordColud的默認(rèn)字體即可正常顯示中文。

1、中文詞云亂碼

我們使用simhei(黑體)來替換wordColud的默認(rèn)字體。

2、替換默認(rèn)字體

a、在字體文件*.tff字體文件(simhei.tff)拷貝到wordColud安裝的文件夾中,文件夾路徑:anaconda(python)-->lib-->site-packages-->wordcolud,如下圖:

其中矩形框出來的是wordColud默認(rèn)的字體,橢圓形框的是我們下載的字體。

b、修改wordcolud.py文件中的字體設(shè)置,打開改路徑下的wordcolud.py文件,找到下圖的所示的框出來的這一行(29行)

將系統(tǒng)的DroidSansMono.tff修改為simhei.tff即可。

二、wordColud示例

1、設(shè)計一個簡單的圓形詞云

import numpy as np
import matplotlib.pyplot as plt
from wordcloud import WordCloud,STOPWORDS
from PIL import Image
from os import path
import matplotlib.pyplot as plt
#用來正常顯示中文
plt.rcParams["font.sans-serif"]=["SimHei"]
#用來正常顯示負(fù)號
plt.rcParams["axes.unicode_minus"]=False
import os
import random,jieba
 
'''
繪制單個詞一個圓形的詞云
'''
def single_wordColud():
  text = "第一 第二 第三 第四"
  #產(chǎn)生一個以(150,150)為圓心,半徑為130的圓形mask
  x,y = np.ogrid[:300,:300]
  mask = (x-150) ** 2 + (y-150) ** 2 > 130 ** 2
  mask = 255 * mask.astype(int)
  wc = WordCloud(background_color="white",repeat=True,mask=mask)
  wc.generate(text)
 
  #將x軸和y軸坐標(biāo)隱藏
  plt.axis("off")
  plt.imshow(wc,interpolation="bilinear")
  plt.show()

2、以圖片形狀作為背景設(shè)計詞云

下面以蠟筆小新的這張圖片作為背景來設(shè)計一個詞云,我們通過讀取一個txt文件,文件中包含了很多段落,然后通過jieba對句子進(jìn)行分詞,去除停用詞之后,生成一張詞云的照片。

a、讀取文件內(nèi)容

使用jieba分詞后,詞之間需要通過空格進(jìn)行分割,不然在產(chǎn)生詞云的時候回變成一個詞。

'''
中文分詞
'''
def segment_words(text):
  article_contents = ""
  #使用jieba進(jìn)行分詞
  words = jieba.cut(text,cut_all=False)
  for word in words:
    #使用空格來分割詞
    article_contents += word+" "
  return article_contents

b、讀取停用詞

停用詞包括一些標(biāo)點符號,和一些沒有實際意義的詞,我們需要將這些詞都去除。

'''
從文件中讀取停用詞
'''
def get_stopwords():
  dir_path = path.dirname(__file__) if "__file__" in locals() else os.getcwd()
  #獲取停用詞的路徑
  stopwords_path = os.path.join(dir_path,"txt/stopwords.txt")
  #創(chuàng)建set集合來保存停用詞
  stopwords = set()
  #讀取文件
  f = open(stopwords_path,"r",encoding="utf-8")
  line_contents = f.readline()
  while line_contents:
    #去掉回車
    line_contents = line_contents.replace("\n","").replace("\t","").replace("\u3000","")
    stopwords.add(line_contents)
    line_contents = f.readline()
  return stopwords

c、生成詞云圖片

def drow_mask_wordColud():
  #獲取當(dāng)前文件的父目錄
  d = path.dirname(__file__) if "__file__" in locals() else os.getcwd()
  mask = np.array(Image.open(path.join(d,"img/test.jpg")))
  text = open(path.join(d,"txt/test.txt"),"r",encoding="utf-8").read().
      replace("\n","").replace("\t","").replace("\u3000","")
  #對文本進(jìn)行分詞
  text = segment_words(text)
  #獲取停用詞
  stopwords = get_stopwords()
  #創(chuàng)建詞云
  '''
  max_words:顯示詞的數(shù)量
  mask:背景
  stopwords:停用詞,是一個set集合
  margin:詞之間的間隔
  background_color:詞云圖片背景顏色
  '''
  wc = WordCloud(max_words=100,mask=mask,background_color="white",
          stopwords=stopwords,margin=10,random_state=1).generate(text)
  default_colors = wc.to_array()
  # #保存詞云圖片
  # wc.to_file("a_new_hope.png")
  plt.imshow(default_colors,interpolation="bilinear")
  plt.axis("off")
  plt.show()

3、自定義詞云的顏色

from wordcloud import WordCloud,get_single_color_func
import matplotlib.pyplot as plt
 
'''
定義一個字體顏色設(shè)置類
'''
class GroupedColorFunc(object):
  def __init__(self,color_to_words,default_color):
    self.color_func_to_words=[
      (get_single_color_func(color),set(words))
      for (color,words) in color_to_words.items()
    ]
    self.defalt_color_func=get_single_color_func(default_color)
  def get_color_func(self,word):
    try:
      #設(shè)置每個詞的顏色
      color_func = next(color_func for (color_func,words) in self.color_func_to_words
               if word in words)
    except StopIteration:
      #詞的默認(rèn)顏色
      color_func = self.defalt_color_func
    return color_func
  def __call__(self,word,**kwargs):
    return self.get_color_func(word)(word,**kwargs)
 
 
if __name__ == "__main__":
  text = "第一 第二 第三 第四 第五 第六"
  #創(chuàng)建詞云
  wc = WordCloud(collocations=False,background_color="white").generate(text)
  #設(shè)置詞的顏色
  color_to_words={
    #使用RGB來設(shè)置詞的顏色
    "#00ff00":["第一","第五"],
    "red":["第三","第六"],
    "yellow":["第二"]
  }
  #設(shè)置詞默認(rèn)的顏色
  default_color = "blue"
  grouped_color_func = GroupedColorFunc(color_to_words,default_color)
  #設(shè)置詞云的顏色
  wc.recolor(color_func=grouped_color_func)
  #顯示詞云圖
  plt.figure()
  plt.imshow(wc,interpolation="bilinear")
  plt.axis("off")
  plt.show()

通過詞的顏色設(shè)置類,來設(shè)置不同詞的顏色。

4、自定義突出詞的重要程度

在生成詞云的時候,默認(rèn)使用的是使得詞頻高的詞更加突出,突出的詞會比較大,有時候我們已經(jīng)計算出了詞的權(quán)重,想通過詞云圖來突出權(quán)重大小的差別。

from wordcloud import WordCloud
import matplotlib.pyplot as plt
import numpy as np
 
def get_mask():
  x,y = np.ogrid[:300,:300]
  mask = (x-150) ** 2 + (y-150) ** 2 > 130 ** 2
  mask = 255 * mask.astype(int)
  return mask
 
if __name__ == "__main__":
  #每個詞的權(quán)重
  text = {"第一":0.1,"第二":0.2,"第三":0.3,"第四":0.4,"第五":0.5}
  wc = WordCloud(background_color="white",mask=get_mask())
  wc.generate_from_frequencies(text)
  plt.axis("off")
  plt.imshow(wc,interpolation="bilinear")
  plt.show()

5、保存詞云圖片

wc.to_file("test.png")

更多關(guān)于python詞云庫wordCloud使用方法請查看下面的相關(guān)鏈接

相關(guān)文章

  • windows上安裝python3教程以及環(huán)境變量配置詳解

    windows上安裝python3教程以及環(huán)境變量配置詳解

    這篇文章主要介紹了windows上安裝python3教程以及環(huán)境變量配置詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • 打包Python代碼的常用方法實現(xiàn)程序exe應(yīng)用

    打包Python代碼的常用方法實現(xiàn)程序exe應(yīng)用

    Python是一門強大的編程語言,但在將Python代碼分享給其他人時,讓他們安裝Python解釋器并運行腳本可能有點繁瑣,這時,將Python代碼打包成可執(zhí)行的應(yīng)用程序(.exe)可以大大簡化這個過程,本文將介紹幾種常用的方法,輕松地將Python代碼變成獨立的可執(zhí)行文件
    2023-12-12
  • 關(guān)于jupyter lab安裝及導(dǎo)入tensorflow找不到模塊的問題

    關(guān)于jupyter lab安裝及導(dǎo)入tensorflow找不到模塊的問題

    這篇文章主要介紹了關(guān)于jupyter lab安裝及導(dǎo)入tensorflow找不到模塊的問題,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-03-03
  • pandas如何處理缺失值

    pandas如何處理缺失值

    這篇文章主要介紹了pandas如何處理缺失值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • python實現(xiàn)按關(guān)鍵字篩選日志文件

    python實現(xiàn)按關(guān)鍵字篩選日志文件

    今天小編大家分享一篇python實現(xiàn)按關(guān)鍵字篩選日志文件方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python逐行讀取文件內(nèi)容的方法總結(jié)

    Python逐行讀取文件內(nèi)容的方法總結(jié)

    在本篇文章里小編給大家整理的是關(guān)于Python四種逐行讀取文件內(nèi)容的方法,有興趣的朋友們可以學(xué)習(xí)下。
    2020-02-02
  • python多線程http下載實現(xiàn)示例

    python多線程http下載實現(xiàn)示例

    python多線程http下載實現(xiàn)示例,大家參考使用吧
    2013-12-12
  • Python 如何操作 SQLite 數(shù)據(jù)庫

    Python 如何操作 SQLite 數(shù)據(jù)庫

    這篇文章主要介紹了Python 如何操作 SQLite 數(shù)據(jù)庫,幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • python在回調(diào)函數(shù)中獲取返回值的方法

    python在回調(diào)函數(shù)中獲取返回值的方法

    今天小編就為大家分享一篇python在回調(diào)函數(shù)中獲取返回值的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-02-02
  • Python字符串格式化方式

    Python字符串格式化方式

    這篇文章主要介紹了Python字符串格式化方式,字符串格式化在我們的開發(fā)過程中被廣泛的應(yīng)用,因此也是我們要重點掌握的內(nèi)容之一,下文相關(guān)介紹,需要的朋友可以參考一下
    2022-04-04

最新評論

江口县| 清徐县| 龙游县| 社会| 博罗县| 渭源县| 鄯善县| 浦东新区| 开阳县| 灵寿县| 张家川| 读书| 绵阳市| 屏山县| 无为县| 高陵县| 佛教| 阜南县| 大渡口区| 修文县| 皮山县| 洛阳市| 修水县| 江门市| 丰县| 甘洛县| 宁晋县| 英德市| 敦煌市| 南充市| 新乐市| 侯马市| 太保市| 仪陇县| 稷山县| 云和县| 鸡东县| 澄城县| 原平市| 甘肃省| 上高县|