python中wordcloud函数不同形状云图_Python实现Wordcloud生成词云图的示例
wordcloud是Python擴展庫中一種將詞語用圖片表達出來的一種形式,通過詞云生成的圖片,我們可以更加直觀的看出某篇文章的故事梗概。
首先貼出一張詞云圖(以哈利波特小說為例):
在生成詞云圖之前,首先要做一些準備工作
1.安裝結巴分詞庫
pip install jieba
Python中的分詞模塊有很多,他們的功能也都是大同小異,我們安裝的結巴分詞?是當前使用的最多的類型。
下面我來簡單介紹一下結巴分詞的用法
結巴分詞的分詞模式分為三種:
(1)全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度快,但是不能解決歧義問題
(2)精確模式:將句子最精確地切開,適合文本分析
(3)搜索引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞
下面用一個簡單的例子來看一下三種模式的分詞區別:
import jieba
# 全模式:把句子中所有的可以成詞的詞語都掃描出來, 速度快,但是不能解決歧義問題
text = "哈利波特是一常優秀的文學作品"
seg_list = jieba.cut(text, cut_all=True)
print(u"[全模式]: ", "/ ".join(seg_list))
# 精確模式:將句子最精確地切開,適合文本分析
seg_list = jieba.cut(text, cut_all=False)
print(u"[精確模式]: ", "/ ".join(seg_list))
# 默認是精確模式
seg_list = jieba.cut(text)
print(u"[默認模式]: ", "/ ".join(seg_list))
# 搜索引擎模式:在精確模式的基礎上,對長詞再次切分,提高召回率,適合用于搜索引擎分詞
seg_list = jieba.cut_for_search(text)
print(u"[搜索引擎模式]: ", "/ ".join(seg_list))
下面是對這句話的分詞方式:
通過這三種分詞模式可以看出,這些分詞模式并沒有很好的劃分出“哈利波特”這個專有名詞,這是因為在結巴分詞的字典中并沒有記錄這個名詞,所以需要我們手動添加自定義字典
添加自定義字典:找一個方便引用的位置? ? ? ? ? ? ? (下圖的路徑是我安裝的位置),新建文本文檔(后綴名為.txt),將想添加的詞輸入進去(注意輸入格式),保存并退出
在上面的代碼中加入自定義字典的路徑,再點擊運行
jieba.load_userdict("/home/jmhao/anaconda3/lib/python3.7/site-packages/jieba/mydict.txt")
分詞結果,可以看出“哈利波特”這個詞已經被識別出來了
結巴分詞還有另一個禁用詞的輸出結果
stopwords = {}.fromkeys(['優秀', '文學作品'])
#添加禁用詞之后
seg_list = jieba.cut(text)
final = ''
for seg in seg_list:
if seg not in stopwords:
final += seg
seg_list_new = jieba.cut(final)
print(u"[切割之后]: ", "/ ".join(seg_list_new))
可以看到輸出結果中并沒有“優秀”和“文學作品”兩個詞
結巴分詞還有很多比較復雜的操作,具體的可以去官網查看,我就不再過多的贅述了
下面我們正式開始詞云的制作
首先下載模塊,這里我所使用的環境是Anaconda,由于Anaconda中包含很多常用的擴展包,所以這里只需要下載wordcloud。若使用的環境不是Anaconda,則另需安裝numpy和PIL模塊
pip install wordcloud
然后我們需要找一篇文章并使用結巴分詞將文章分成詞語的形式
# 分詞模塊
def cut(text):
# 選擇分詞模式
word_list = jieba.cut(text,cut_all= True)
# 分詞后在單獨個體之間加上空格
result = " ".join(word_list)
# 返回分詞結果
return result
這里我在當前文件夾下創建了一個文本文檔“xiaoshuo.txt”,并復制了一章的小說作為詞云的主體文字
使用代碼控制,打開并讀取小說的內容
#導入文本文件,進行分詞,制作詞云
with open("xiaoshuo.txt") as fp:
text = fp.read()
# 將讀取的中文文檔進行分詞
text = cut(text)
在網上找到一張白色背景的圖片下載到當前文件夾,作為詞云的背景圖(若不指定圖片,則默認生成矩形詞云)
#設置詞云形狀,若設置了詞云的形狀,生成的詞云與圖片保持一致,后面設置的寬度和高度將默認無效
mask = np.array(image.open("monkey.jpeg"))
接下來可以根據喜好來定義詞云的顏色、輪廓等參數 下面為常用的參數設置方法
完整代碼
#導入詞云庫
from wordcloud import WordCloud
#導入圖像處理庫
import PIL.Image as image
#導入數據處理庫
import numpy as np
#導入結巴分詞庫
import jieba
# 分詞模塊
def cut(text):
# 選擇分詞模式
word_list = jieba.cut(text,cut_all= True)
# 分詞后在單獨個體之間加上空格
result = " ".join(word_list)
return result
#導入文本文件,進行分詞,制作詞云
with open("xiaoshuo.txt") as fp:
text = fp.read()
# 將讀取的中文文檔進行分詞
text = cut(text)
#設置詞云形狀
mask = np.array(image.open("monkey.jpeg"))
#自定義詞云
wordcloud = WordCloud(
# 遮罩層,除白色背景外,其余圖層全部繪制(之前設置的寬高無效)
mask=mask,
#默認黑色背景,更改為白色
background_color='#FFFFFF',
#按照比例擴大或縮小畫布
scale=,
# 若想生成中文字體,需添加中文字體路徑
font_path="/usr/share/fonts/bb5828/逐浪雅宋體.otf"
).generate(text)
#返回對象
image_produce = wordcloud.to_image()
#保存圖片
wordcloud.to_file("new_wordcloud.jpg")
#顯示圖像
image_produce.show()
注:若想要生成圖片樣式的詞云圖,找到的圖片背景必須為白色,或者使用Photoshop摳圖替換成白色背景,否則生成的詞云為矩形
我的詞云原圖:
生成的詞云圖:
到此這篇關于Python實現Wordcloud生成詞云圖的示例的文章就介紹到這了,更多相關Python Wordcloud生成詞云圖內容請搜索我們以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持我們!
時間:2020-03-30
Python基于WordCloud制作詞云圖
這篇文章主要介紹了python基于WordCloud制作詞云圖,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下 1. 導入需要的包package import matplotlib.pyplot as plt from scipy.misc import imread from wordcloud import WordCloud,STOPWORDS import xlrd 2. 設置生成詞云圖的背景圖片,最好是分辨率高且色彩邊界分明的圖片 de
Python基于time模塊求程序運行時間的方法
本文實例講述了Python基于time模塊求程序運行時間的方法.分享給大家供大家參考,具體如下: 要記錄程序的運行時間可以利用Unix系統中,1970.1.1到現在的時間的毫秒數,這個時間戳輕松完成. 方法是程序開始的時候取一次存入一個變量,在程序結束之后取一次再存入一個變量,與程序開始的時間戳相減則可以求出. Python中取這個時間戳的方法為引入time類之后,使用time.time();就能夠拿出來.也就是Java中的System.currentTimeMillis(). 由于Python
Python基于回溯法子集樹模板實現8皇后問題
本文實例講述了Python基于回溯法子集樹模板實現8皇后問題.分享給大家供大家參考,具體如下: 問題 8×8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處于同一行.同一列或同一斜線上,問有多少種擺法. 分析 為了簡化問題,考慮到8個皇后不同行,則每一行放置一個皇后,每一行的皇后可以放置于第0.1.2.....7列,我們認為每一行的皇后有8種狀態.那么,我們只要套用子集樹模板,從第0行開始,自上而下,對每一行的皇后,遍歷它的8個狀態即可. 代碼: ''' 8皇后問題 '''
Python基于list的append和pop方法實現堆棧與隊列功能示例
本文實例講述了Python基于list的append和pop方法實現堆棧與隊列功能.分享給大家供大家參考,具體如下: #coding=utf8 ''''' 堆棧: 堆棧是一個后進先出(LIFO)的數據結構. 在棧上"push"元素是個常用術語,意思是把一個對象添加到堆棧中. 刪除一個元素,可以把它"pop"出堆棧. 隊列: 隊列是一種先進先出(FIFO)的數據類型. 新的元素通過"入隊"的方式添加進隊列的末尾, "出對"就是從
Python基于Tkinter的HelloWorld入門實例
本文實例講述了Python基于Tkinter的HelloWorld入門實例.分享給大家供大家參考.具體分析如下: 初學Python,打算做幾個Tkinter的應用來提高. 剛學的HelloWorld,秀一下.我用Python3.2的,Windows版本的. 源代碼如下: #導入sys和tkinter模塊 import sys, tkinter #創建主窗口 root = tkinter.Tk() root.title("HelloWorld") root.minsize(200, 10
Python基于回溯法子集樹模板解決0-1背包問題實例
本文實例講述了Python基于回溯法子集樹模板解決0-1背包問題.分享給大家供大家參考,具體如下: 問題 給定N個物品和一個背包.物品i的重量是Wi,其價值位Vi ,背包的容量為C.問應該如何選擇裝入背包的物品,使得放入背包的物品的總價值為最大? 分析 顯然,放入背包的物品,是N個物品的所有子集的其中之一.N個物品中每一個物品,都有選擇.不選擇兩種狀態.因此,只需要對每一個物品的這兩種狀態進行遍歷. 解是一個長度固定的N元0,1數組. 套用回溯法子集樹模板,做起來不要太爽!!! 代碼 '''0-
Python基于checksum計算文件是否相同的方法
本文實例講述了Python基于checksum計算文件是否相同的方法.分享給大家供大家參考.具體如下: 假設有2個二進制文件(0.bin, 1.bin),用checksum檢驗內容是否相同 # coding: utf8 # Python2.6.2 import md5 with open('0.bin', 'rb') as f: s = md5.new(f.read()).hexdigest() with open('1.bin', 'rb') as f: ss = md5.new(f.read
Python基于正則表達式實現檢查文件內容的方法【文件檢索】
本文實例講述了Python基于正則表達式實現檢查文件內容的方法分享給大家供大家參考,具體如下: 這個是之前就在學python,欣賞python的小巧但是功能強大,是連電池都自帶的語言.平時工作中用Java ,覺得python在日常生活中比java用處要大,首先語法沒那么復雜,特別是io的操作,java里要寫一大坨沒關的代碼.還有就是不用編譯,而且linux系統默認都會自帶. 這次遇到的問題是工作當中想要遷移一個系統中的一個模塊,這個時候需要評估模塊里的代碼有沒有對其他代碼強依賴,就是有沒有imp
Python基于正則表達式實現文件內容替換的方法
本文實例講述了Python基于正則表達式實現文件內容替換的方法.分享給大家供大家參考,具體如下: 最近因為有一個項目需要從普通的服務器移植到SAE,而SAE的thinkphp文件結構和本地測試的有出入,需要把一些html和js的引用路徑改成SAE的形式,為了不手工改,特地速成了一下Python的正則表達式和文件操作.主要要求是將某目錄下的html和js里面的幾個路徑變量分別更改成相應的形式,匹配文件名的時候用了正則 import os import re #all file in the dir
python基于windows平臺鎖定鍵盤輸入的方法
本文實例講述了python基于windows平臺鎖定鍵盤輸入的方法.分享給大家供大家參考.具體分析如下: pywin32中沒有BlockInput這個函數.VC++中有,發現這個方法就可以了. 該代碼可阻斷windows平臺下的鼠標鍵盤輸入,如下所示: # coding: UTF-8 import time from ctypes import * user32 = windll.LoadLibrary('user32.dll') user32.BlockInput(True); time.sl
Python基于tkinter模塊實現的改名小工具示例
本文實例講述了Python基于tkinter模塊實現的改名小工具.分享給大家供大家參考,具體如下: #!/usr/bin/env python #coding=utf-8 # # 版權所有 2014 yao_yu # 本代碼以MIT許可協議發布 # 文件名批量加.xls后綴 # 2014-04-21 創建 # import os import tkinter as tk from tkinter import ttk version = '2014-04-21' app_title = '文件名
總結
以上是生活随笔為你收集整理的python中wordcloud函数不同形状云图_Python实现Wordcloud生成词云图的示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 即时通讯源码|IM即时通讯源码开源
- 下一篇: 显示2位小数 python3_Pytho