一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Python第三方庫(kù)wordcloud(詞云)快速入門與進(jìn)階

 ZhouAndrew 2018-06-29


下載:
1——使用conda下載(前提是安裝了Anaconda,推薦這種方法):

conda install -c conda-forge wordcloud
  • 1

2——使用pip命令(筆主開發(fā)環(huán)境為windows,第一次按這種方法安裝,會(huì)出現(xiàn)錯(cuò)誤,按照網(wǎng)上的解決辦法一直沒解決):

pip install wordcloud
  • 1

實(shí)例

1–入門案例

#!/usr/bin/env python
"""
Minimal Example
===============

使用默認(rèn)參數(shù)根據(jù)美國(guó)憲法生成方形的詞云
"""

from os import path
from wordcloud import WordCloud

d = path.dirname(__file__)

# 讀取整個(gè)文本
text = open(path.join(d, 'constitution.txt')).read()

# 生成一個(gè)詞云圖像
wordcloud = WordCloud().generate(text)

# matplotlib的方式展示生成的詞云圖像
import matplotlib.pyplot as plt
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis("off")

#max_font_size設(shè)定生成詞云中的文字最大大小
#width,height,margin可以設(shè)置圖片屬性
# generate 可以對(duì)全部文本進(jìn)行自動(dòng)分詞,但是他對(duì)中文支持不好
wordcloud = WordCloud(max_font_size=66).generate(text)
plt.figure()
plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

# pil方式展示生成的詞云圖像(如果你沒有matplotlib)
# image = wordcloud.to_image()
# image.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37

入門案例

2–使用蒙版圖像可以生成任意形狀的wordcloud。

#!/usr/bin/env python
"""
Masked wordcloud
================

使用蒙版圖像可以生成任意形狀的wordcloud。
"""

from os import path
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

from wordcloud import WordCloud, STOPWORDS

d = path.dirname(__file__)

# 讀取整個(gè)文本.
text = open(path.join(d, 'alice.txt')).read()

#讀取圖片(圖片來源:http://www./stencils/movies/alice%20in%20wonderland/255fk.jpg)
alice_mask = np.array(Image.open(path.join(d, "alice_mask.png")))

stopwords = set(STOPWORDS)
stopwords.add("said")
#設(shè)置詞云的一些屬性
wc = WordCloud(background_color="white", max_words=2000, mask=alice_mask,
               stopwords=stopwords)
# 生成詞云
wc.generate(text)

#保存到本地
wc.to_file(path.join(d, "alice.png"))

#展示
plt.imshow(wc, interpolation='bilinear')
plt.axis("off")
plt.figure()
plt.imshow(alice_mask, cmap=plt.cm.gray, interpolation='bilinear')
plt.axis("off")
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

3–著色

#!/usr/bin/env python
"""
使用自定義顏色
===================

使用重新著色方法和自定義著色功能。
"""

import numpy as np
from PIL import Image
from os import path
import matplotlib.pyplot as plt
import random

from wordcloud import WordCloud, STOPWORDS


def grey_color_func(word, font_size, position, orientation, random_state=None,
                    **kwargs):
    return "hsl(0, 0%%, %d%%)" % random.randint(60, 100)

d = path.dirname(__file__)

# 讀取圖片(圖片來源:http://www./stencils/movies/star%20wars/storm-trooper.gif)
mask = np.array(Image.open(path.join(d, "stormtrooper_mask.png")))

# 文字來源:“新希望”電影劇本(網(wǎng)址:http://www./scripts/Star-Wars-A-New-Hope.html)
text = open(path.join(d, 'a_new_hope.txt')).read()

# 預(yù)處理一點(diǎn)點(diǎn)文本
text = text.replace("HAN", "Han")
text = text.replace("LUKE'S", "Luke")

# 添加電影劇本特定的停用詞
stopwords = set(STOPWORDS)
stopwords.add("int")
stopwords.add("ext")

wc = WordCloud(max_words=1000, mask=mask, stopwords=stopwords, margin=10,
               random_state=1).generate(text)
# 存儲(chǔ)默認(rèn)的彩色圖像
default_colors = wc.to_array()
plt.title("Custom colors")
plt.imshow(wc.recolor(color_func=grey_color_func, random_state=3),
           interpolation="bilinear")
wc.to_file("a_new_hope.png")
plt.axis("off")
plt.figure()
plt.title("Default colors")
plt.imshow(default_colors, interpolation="bilinear")
plt.axis("off")
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53

#!/usr/bin/env python
"""
Image-colored wordcloud
=======================
您可以在ImageColorGenerator中實(shí)現(xiàn)使用基于圖像的著色策略對(duì)文字云進(jìn)行著色,它使用由源圖像中的單詞占用的區(qū)域的平均顏色。

"""

from os import path
from PIL import Image
import numpy as np
import matplotlib.pyplot as plt

from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

d = path.dirname(__file__)

# 讀取整個(gè)文本
text = open(path.join(d, 'alice.txt')).read()

# 讀取蒙板/彩色圖像(圖片是從http://jirkavinse./art/quot-Real-Life-quot-Alice-282261010下載的)
alice_coloring = np.array(Image.open(path.join(d, "alice_color.png")))
stopwords = set(STOPWORDS)
stopwords.add("said")

wc = WordCloud(background_color="white", max_words=2000, mask=alice_coloring,
               stopwords=stopwords, max_font_size=40, random_state=42)
# 生成詞云
wc.generate(text)

# 從圖像創(chuàng)建著色
image_colors = ImageColorGenerator(alice_coloring)

# 顯示
plt.imshow(wc, interpolation="bilinear")
plt.axis("off") #不顯示坐標(biāo)尺寸
plt.figure()
# 重新著色詞云并顯示
# 我們也可以直接在構(gòu)造函數(shù)中給使用:color_func=image_colors 
plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")
plt.axis("off") #不顯示坐標(biāo)尺寸
plt.figure()
plt.imshow(alice_coloring, cmap=plt.cm.gray, interpolation="bilinear")
plt.axis("off") #不顯示坐標(biāo)尺寸
plt.show()#一次繪制三張圖
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46


4–表情

 #!/usr/bin/env python
"""
表情實(shí)例
===============
一個(gè)簡(jiǎn)單的例子,顯示如何包含表情符號(hào)。 請(qǐng)注意,這個(gè)例子似乎不適用于OS X(蘋果系統(tǒng)),但是確實(shí)如此
在Ubuntu中正常工作
包含表情符號(hào)有3個(gè)重要步驟:
1) 使用io.open而不是內(nèi)置的open來讀取文本輸入。 這確保它被加載為UTF-8
2) 重寫詞云使用的正則表達(dá)式以將文本解析為單詞。 默認(rèn)表達(dá)式只會(huì)匹配ascii的單詞
3) 將默認(rèn)字體覆蓋為支持表情符號(hào)的東西。 包含的Symbola字體包括黑色和白色大多數(shù)表情符號(hào)的白色輪廓。 目前PIL / Pillow庫(kù)存在的問題似乎可以預(yù)防
它在OS X上運(yùn)行正常(https://github.com/python-pillow/Pillow/issues/1774)。
如果你有問題,試試在Ubuntu上運(yùn)行
"""
import io
import string
from os import path
from wordcloud import WordCloud

d = path.dirname(__file__)

#使用io.open將文件正確加載為UTF-8非常重要
text = io.open(path.join(d, 'happy-emoji.txt')).read()

# the regex used to detect words is a combination of normal words, ascii art, and emojis
# 2+ consecutive letters (also include apostrophes), e.x It's
normal_word = r"(?:\w[\w']+)"
# 2+ consecutive punctuations, e.x. :)
ascii_art = r"(?:[{punctuation}][{punctuation}]+)".format(punctuation=string.punctuation)
# a single character that is not alpha_numeric or other ascii printable
emoji = r"(?:[^\s])(?<![\w{ascii_printable}])".format(ascii_printable=string.printable)
regexp = r"{normal_word}|{ascii_art}|{emoji}".format(normal_word=normal_word, ascii_art=ascii_art,
                                                     emoji=emoji)

# 生成一個(gè)詞云圖片
# Symbola字體包含大多數(shù)表情符號(hào)
font_path = path.join(d, 'fonts', 'Symbola', 'Symbola.ttf')
wordcloud = WordCloud(font_path=font_path, regexp=regexp).generate(text)

# 采用matplotlib方式:展示生成的圖片
import matplotlib.pyplot as plt
plt.imshow(wordcloud)
plt.axis("off")
plt.show()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44

表情實(shí)例

以上所有例子可以到我的github上下載(持續(xù)更新Python第三方庫(kù)使用demo以及常見python爬蟲,python玩微信等內(nèi)容):

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    久久精品福利在线观看| 久久精品国产亚洲熟女| 午夜日韩在线观看视频| 日韩无套内射免费精品| 精品人妻精品一区二区三区| 亚洲天堂精品一区二区| 中文字幕人妻一区二区免费| 91天堂免费在线观看| 福利视频一区二区在线| 日韩免费成人福利在线| 国产成人午夜福利片片| 真实偷拍一区二区免费视频| 香港国产三级久久精品三级| 东京热电东京热一区二区三区| 国产午夜精品福利免费不| 久久午夜福利精品日韩| 亚洲精品成人福利在线| 高清在线精品一区二区| 色哟哟精品一区二区三区| 色婷婷中文字幕在线视频| 欧美精品一区二区三区白虎| 99少妇偷拍视频在线| 内射精品欧美一区二区三区久久久| 伊人欧美一区二区三区| 中文精品人妻一区二区| 好吊日在线视频免费观看| av中文字幕一区二区三区在线| 99久久精品国产日本| 国产精品欧美一区二区三区不卡| 大香蕉再在线大香蕉再在线| 亚洲一区二区三区在线免费| 欧美色婷婷综合狠狠爱| 99久久免费看国产精品| 九九热最新视频免费观看| 欧美日韩有码一二三区| 欧美人妻免费一区二区三区| 国产女优视频一区二区| 字幕日本欧美一区二区| 日本福利写真在线观看| 日韩成人免费性生活视频| 国产在线小视频你懂的|