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

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

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

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

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

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

我們打開圖片看看效果:

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

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

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

我們舉例說明:

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

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

我們看看生成的圖片:

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

但這個(gè)圖片是正方形的,而我們平常見到的詞云是有形狀的,比如一個(gè)圓形、或者一個(gè)人的形狀等等。顯然這是根據(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夢(mèng).png"))
# 傳入mask
wc = WordCloud(mask=mask)
wc.generate(sentence)
wc.to_file("word.png")

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

下面是原始的圖片,"多啦A夢(mèng).png"

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

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

from wordcloud import WordCloud

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

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

顯然默認(rèn)是不支持中文的,此時(shí)我們需要指定一個(gè)中文字體。

from wordcloud import WordCloud

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

看看效果:

中文正常顯示了,但顯示的是一整句話。因?yàn)?wordcloud 默認(rèn)是以空格分隔單詞的,所以對(duì)于英文我們不需要做什么處理,因?yàn)橛⑽膯卧~之間就是以空格分隔的。但中文則是所有的漢字都連在一起,因此整體被當(dāng)成了一個(gè)詞。

這個(gè)時(shí)候推薦使用 jieba 分詞,將單詞進(jìn)行分隔。

from wordcloud import WordCloud
import jieba

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

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

結(jié)果沒有問題,當(dāng)然這里圖片有點(diǎn)小了,你也可以調(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 對(duì)象
im = wc.to_image()
buf = BytesIO()
# 將詞云的字節(jié)流保存在 buf 中,這樣可以直接交給客戶端進(jìn)行渲染
im.save(buf, "png")
print(buf.getvalue())

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

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

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

相關(guān)文章

  • python矩陣的基本運(yùn)算及各種操作

    python矩陣的基本運(yùn)算及各種操作

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

    matplotlib legend()里字體如何修改

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新評(píng)論