欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)創(chuàng)建詞云的示例詳解

 更新時間:2023年10月22日 09:14:58   作者:古明地覺的編程教室  
詞云一般是根據(jù)輸入的大量詞語生成的,如果某個詞語出現(xiàn)的次數(shù)越多,那么相應的大小就會越大,本文將利用wordcloud模塊實現(xiàn)詞云生成,需要的可以參考下

什么是詞云?在網(wǎng)絡上我們經(jīng)??梢钥吹揭粡垐D片,上面有一大堆大小不一的文字,這便是詞云。詞云一般是根據(jù)輸入的大量詞語生成的,如果某個詞語出現(xiàn)的次數(shù)越多,那么相應的大小就會越大。

Python 中有一個專門用來生成詞云的模塊:wordcloud,直接 pip 安裝即可,然后我們來看看它的用法。

# 導入模塊
from wordcloud import WordCloud
# 準備文本數(shù)據(jù),是一個字符串,單詞之間用空格分隔
sentence = "hello satori hello mashiro hello satori"
# 創(chuàng)建詞云對象
wc = WordCloud()
# 根據(jù)文本生成詞云
wc.generate(sentence)
# 保存為圖片
wc.to_file("word.png")

我們打開圖片看看效果:

我們看到單詞就顯示在了圖片上,如果單詞一多就像天空的云彩一樣漂浮著,并且單詞出現(xiàn)的頻率越高,那么該單詞在圖片上大小就越大。

雖然詞云生成了,但是風格是固定的,我們可不可以調(diào)整呢,顯然是可以的。WordCloud 里面支持很多參數(shù)用來調(diào)整風格,我們看一下這些參數(shù)。

  • width:詞云的寬,默認是400像素;
  • height:詞云的高,默認是200像素;
  • background_color:詞云的背景顏色,默認是黑色;
  • font_path:生成的詞云所使用的字體,傳入一個字體名稱;
  • mask:詞云背景圖片,接收一個 Numpy 數(shù)組??梢允褂?PIL 或者 cv2 讀取圖片,然后生成數(shù)組;
  • stopwords:要屏蔽的詞語,接收一個集合,生成詞云的時候會忽略掉屏蔽的詞語;
  • max_font_size:字體的最大大小,默認為 None;
  • min_font_size:字體的最小大小,默認為 None;
  • max_words:最多顯示多少個單詞,默認為200。比如文本數(shù)據(jù)有 10000 個不重復單詞,肯定不可能全部顯示,而是按照出現(xiàn)的頻率高低排序,選擇出現(xiàn)頻率最高的 N 個單詞,默認是 200 個;
  • contour_width:輪廓粗細;
  • contour_color:輪廓顏色;
  • scale:用來控制生成的圖片大小,默認為 1。如果我們改成了 10,那么生成的圖片大小會擴大 10 倍。這個參數(shù)不用管,沒太大用,默認為 1 即可;

我們舉例說明:

from wordcloud import WordCloud
sentence = "i do not need sex, because life fucks me every every single day"
wc = WordCloud(
    width=500,  # 設置寬度為500px
    height=300,  # 設置高度為300px
    background_color='pink',  # 設置背景為粉色
    stopwords={"sex", "fucks"},  # 設置禁用詞
    max_font_size=100,  # 設置最大的字體大小,所有詞都不會超過 100px
    min_font_size=10,  # 設置最小的字體大小,所有詞都會超過 10px
    max_words=10  # 最多生成 10 個詞,當然這里單詞比較少,看不出來什么
)

wc.generate(sentence)
wc.to_file("word.png")

我們看看生成的圖片:

我們看到圖片變寬了、變高了,背景變成粉色了,并且也沒有出現(xiàn)禁用詞。

但這個圖片是正方形的,而我們平常見到的詞云是有形狀的,比如一個圓形、或者一個人的形狀等等。顯然這是根據(jù)圖片生成的,而 wordcloud 也支持我們這么做,下面來演示一下。

from wordcloud import WordCloud
from PIL import Image
import numpy as np

# 一篇英文文章
with open("article.txt") as f:
    sentence = f.read()
# 加載一張圖片,轉(zhuǎn)化成numpy中的數(shù)組
mask = np.array(Image.open("哆啦A夢.png"))
# 傳入mask
wc = WordCloud(mask=mask)
wc.generate(sentence)
wc.to_file("word.png")

我們看一下生成的結(jié)果:

下面是原始的圖片,"多啦A夢.png"

會自動將周圍的白色區(qū)域給忽略掉,因此選擇的圖片建議最好是白底的。

然后目前生成詞云所使用的單詞都是英文的,那中文可不可以呢?我們來看一下。

from wordcloud import WordCloud

wc = WordCloud()
wc.generate("古明地覺的編程教室")
wc.to_file("word.png")

生成的結(jié)果如下:

顯然默認是不支持中文的,此時我們需要指定一個中文字體。

from wordcloud import WordCloud

# 傳入本機支持中文的字體名稱
wc = WordCloud(font_path="Arial Unicode.ttf")
wc.generate("古明地覺的編程教室")
wc.to_file("word.png")

看看效果:

中文正常顯示了,但顯示的是一整句話。因為 wordcloud 默認是以空格分隔單詞的,所以對于英文我們不需要做什么處理,因為英文單詞之間就是以空格分隔的。但中文則是所有的漢字都連在一起,因此整體被當成了一個詞。

這個時候推薦使用 jieba 分詞,將單詞進行分隔。

from wordcloud import WordCloud
import jieba

with open("出師表.txt") as f:
    sentence = f.read()
# 分詞得到列表,手動使用空格拼接
sentence = " ".join(jieba.cut(sentence))
wc = WordCloud(font_path="Arial Unicode.ttf")
wc.generate(sentence)
wc.to_file("word.png")

我們基于出師表的內(nèi)容生成詞云:

結(jié)果沒有問題,當然這里圖片有點小了,你也可以調(diào)整它的寬高。

另外我們一直都是將詞云保存成圖片,除了圖片,還可以保存成其它格式。

from io import BytesIO
from wordcloud import WordCloud
import jieba

with open("出師表.txt") as f:
    sentence = f.read()

sentence = " ".join(jieba.cut(sentence))
wc = WordCloud(font_path="Arial Unicode.ttf")
wc.generate(sentence)

# 將詞云保存為 PIL 的 Image 對象
im = wc.to_image()
buf = BytesIO()
# 將詞云的字節(jié)流保存在 buf 中,這樣可以直接交給客戶端進行渲染
im.save(buf, "png")
print(buf.getvalue())

# 當然也可以保存為文件,im.save(filename)
# wc.to_file() 底層也是先轉(zhuǎn)成 Image 對象、然后調(diào)用 im.save() 實現(xiàn)的

# 或者還可以保存為 SVG 格式
svg = wc.to_svg()
# 將 svg 的內(nèi)容保存成文件,就得到 SVG 圖片了
print(svg)

以上就是Python實現(xiàn)創(chuàng)建詞云的示例詳解的詳細內(nèi)容,更多關(guān)于python詞云的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python矩陣的基本運算及各種操作

    python矩陣的基本運算及各種操作

    python的numpy庫提供矩陣運算的功能,因此我們在需要矩陣運算的時候,需要導入numpy的包,下面這篇文章主要給大家介紹了關(guān)于python矩陣的基本運算及各種操作的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • matplotlib legend()里字體如何修改

    matplotlib legend()里字體如何修改

    這篇文章主要介紹了matplotlib legend()里字體如何修改問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python圖片由RGB空間轉(zhuǎn)成LAB空間的實現(xiàn)方式

    python圖片由RGB空間轉(zhuǎn)成LAB空間的實現(xiàn)方式

    這篇文章主要介紹了python圖片由RGB空間轉(zhuǎn)成LAB空間的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • Python中如何優(yōu)雅的合并兩個字典(dict)方法示例

    Python中如何優(yōu)雅的合并兩個字典(dict)方法示例

    字典是Python語言中唯一的映射類型,在我們?nèi)粘9ぷ髦薪?jīng)常會遇到,下面這篇文章主要給大家介紹了關(guān)于Python中如何優(yōu)雅的合并兩個字典(dict)的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-08-08
  • Django自定義列表 models字段顯示方式

    Django自定義列表 models字段顯示方式

    這篇文章主要介紹了Django自定義列表 models字段顯示方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • 使用python和opencv的mask實現(xiàn)摳圖疊加

    使用python和opencv的mask實現(xiàn)摳圖疊加

    這篇文章主要介紹了使用python和opencv的mask實現(xiàn)摳圖疊加操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 一篇文章帶你學習python的函數(shù)與類

    一篇文章帶你學習python的函數(shù)與類

    這篇文章主要為大家介紹了python的函數(shù)與類,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-01-01
  • python 工具類之Queue組件詳解用法

    python 工具類之Queue組件詳解用法

    隊列(queue)是一種先進先出的(First In First Out)的線性表,簡稱FIFO。隊列允許在一端進行插入操作,而在另一端進行刪除操作。允許插入的一端為隊尾,允許刪除的一端為隊頭。隊列不允許在中間部位進行操作
    2021-10-10
  • 利用rest framework搭建Django API過程解析

    利用rest framework搭建Django API過程解析

    這篇文章主要介紹了利用rest framework搭建Django API過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Python 中urls.py:URL dispatcher(路由配置文件)詳解

    Python 中urls.py:URL dispatcher(路由配置文件)詳解

    這篇文章主要介紹了Python 中urls.py:URL dispatcher(路由配置文件)詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03

最新評論