真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Python如何制作詞云

本篇內(nèi)容主要講解“Python如何制作詞云”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學(xué)習(xí)“Python如何制作詞云”吧!

我們提供的服務(wù)有:成都做網(wǎng)站、成都網(wǎng)站制作、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、興安ssl等。為成百上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的興安網(wǎng)站制作公司

效果如下:

Python如何制作詞云

(詞云--出現(xiàn)頻率越多的詞,字體越大 )

工具篇

1、安裝可視化庫

pip3 install matplotlib

Python如何制作詞云

3、安裝 “結(jié)巴” 庫, 這個名字起的真接地氣, 給開發(fā)者點個贊

pip3 install jieba

這個庫用來解析中文,把一句話解析成一個個的詞,

我們中文不像英文每個詞之間有空格。需要根據(jù)語義分析拆分成詞組

我們用《劍雨》的一段對話舉例:

import   jieba #引入結(jié)巴庫 
str='師傅,他為何說禪機已到,\
     佛祖點化世人講究機緣,\
     禪機一過緣即滅矣,\
     而禪機未到雖點亦不中
     我愿化身石橋又是何意'

print(str)
# 解析拆分詞組  lcut的方法
words = jieba.lcut(str)
print(words)

效果如下:

Python如何制作詞云

( 把完整的句子拆分成一個個的詞,看著斷斷續(xù)續(xù),可能這就是結(jié)巴的由來吧,【拆詞】最難的這部分,結(jié)巴庫都做好了,這也是python強大的原因吧,各式各樣的庫都有了 )

結(jié)巴庫

網(wǎng)上下載txt格式的《西游記》,

下載完成后轉(zhuǎn)換成utf-8格式再保存一下。

轉(zhuǎn)化方法:記事本另存為的時候,選擇編碼格式UTF-8

Python如何制作詞云

format 格式化輸出:

#列標題 format
print("{0:<5}{1:<8}{2:<5}".format('序號','詞語', '頻率'))

{0:<5} :

0 表示序號:第一個參數(shù),第一列,

< 左對齊, > 右對齊

5 代表寬度

任務(wù)一:統(tǒng)計西游記里面出現(xiàn)頻率最高的10個詞:

后面為了方便,我們把這個叫主代碼。

#引入結(jié)巴庫
import  jieba 
#open 內(nèi)置函數(shù) 不需要引用 直接使用
#開打文件西游記和python 文件放到同一個目錄,可直接引用不需要路徑
f = open('西游記.txt', 'r' ,encoding='utf-8'  )
# 查看文件的編碼格式
print('文件的編碼格式:'+f.encoding)
#讀取文件
txt = f.read()
#關(guān)閉文件,良好的習(xí)慣
f.close()

# 使用精確模式對文本進行分詞
#  使用結(jié)巴庫把西游拆分成一個個的詞組
words = jieba.lcut(txt)
 
# 通過鍵值對的形式存儲詞語及其出現(xiàn)的次數(shù)
# 大括號表示 python的字典類型對應(yīng),
# 鍵值對 key:value1 ,類似java的map對象和list 
counts = {}     

chiyun = []
for word in words:
     # == 1 單個詞語不計算在內(nèi)
    if  len(word) < 2 :  
        continue
    else:
         # 遍歷所有詞語,每出現(xiàn)一次其對應(yīng)的值加 1
        counts[word] = counts.get(word, 0) + 1   

#將鍵值對轉(zhuǎn)換成列表
items = list(counts.items())

# 根據(jù)詞語出現(xiàn)的次數(shù)進行從大到小排序
items.sort(key=lambda x: x[1], reverse=True)
#列標題 format
print("{0:<5}{1:<8}{2:<5}".format('序號','詞語', '頻率'))
#需要顯示的范圍  10即顯示前10個,0到9
for i in range(10):
    word, count = items[i]
    print("{0:<5}{1:<8}{2:>5}".format(i+1,word, count))

效果如下:

Python如何制作詞云

還是沒有觀音, 放出前100,200,300 到500在看:

終于出現(xiàn)了,在349位,重復(fù)61次,

應(yīng)該是有哪里問題,直覺判斷不止61次重復(fù)

Python如何制作詞云

預(yù)知后事如何,請聽下回分解,‘下回分解’排第二合理。

悟空每次打妖怪都要吹下牛,在洞口報個名:我是五百年前大鬧天宮的齊天大圣,這兩個詞出現(xiàn)在前10 合理。

詞云庫

我們在梳理下流程:

注意下:結(jié)巴庫不是必須,主要是用來把句子拆分成詞,如果你已經(jīng)有統(tǒng)計好的詞組,可直接用詞云顯示。

試一個簡單的:我們手工創(chuàng)建個詞組,直接用詞云顯示出來。即繞開結(jié)巴庫了

from wordcloud import WordCloud
# python的可視化庫,也是二級考試推薦的可視化庫
import matplotlib.pyplot as plt


str=['齊天大圣','大圣','大圣','八戒','嫦娥']
#數(shù)組里面添加內(nèi)容
str.append('玉兔')
str.append('女兒國')
str.append('牛魔王')
str.append('大圣')
str.append('土地公公')
str.append('小神仙')
str.append('八戒')

print(str)
#join 函數(shù) 用斜桿拼接詞組mask =maskph,
#這里一定要join拼接一下 轉(zhuǎn)成字符串
text_cut  =  '/'.join(str)

#看一下連接后的樣子 
#關(guān)鍵點 text_cut 是詞云要處理的內(nèi)容
print(text_cut)
wordcloud = WordCloud(  background_color='white',font_path = 'msyh.ttc', width=1000, height=860, margin=2).generate(text_cut)
# 顯示圖片 
plt.imshow(wordcloud)
plt.axis('off')
plt.show()

可觀察下效果圖:主要join后的輸出,用/拼接成了一個字符串:

Python如何制作詞云

效果圖:

(大圣和八戒出現(xiàn)次數(shù)多,字體最大)

詞云圖

先把全代碼放上,后面實例在解析:

這段可先略過,下面直接看效果圖:

#引入結(jié)巴庫
import  jieba
#詞云庫
from wordcloud import WordCloud
# python的可視化庫,也是二級考試推薦的可視化庫
import matplotlib.pyplot as plt
from PIL import Image  #處理圖片的
 #矩陣 好像也是協(xié)助處理圖片的
import numpy as np 



#open 內(nèi)置函數(shù) 不需要引用 直接使用
#開打文件西游記和python 文件放到同一個目錄,可直接引用不需要路徑
f = open('西游記.txt', 'r' ,encoding='utf-8'  )

# 查看文件的編碼格式
print('文件的編碼格式:'+f.encoding)

#讀取文件
txt = f.read()

#關(guān)閉文件,良好的習(xí)慣
f.close()


# 使用精確模式對文本進行分詞
#  使用結(jié)巴庫把西游拆分成一個個的詞組
words = jieba.lcut(txt)


# 通過鍵值對的形式存儲詞語及其出現(xiàn)的次數(shù)
# 大括號表示 python的字典類型對應(yīng),
# 鍵值對 key:value1 ,類似java的map對象和list 
counts = {}     
#數(shù)組對象  用來接收需要傳遞給詞云的內(nèi)容
chiyun = []
for word in words:
     # == 1 單個詞語不計算在內(nèi)
    if  len(word) < 2 :  
        continue
    else:
         # 遍歷所有詞語,每出現(xiàn)一次其對應(yīng)的值加 1
        counts[word] = counts.get(word, 0) + 1   

#將鍵值對轉(zhuǎn)換成列表
items = list(counts.items())

# 根據(jù)詞語出現(xiàn)的次數(shù)進行從大到小排序
items.sort(key=lambda x: x[1], reverse=True)


#列標題 format
print("{0:<5}{1:<8}{2:<5}".format('序號','詞語', '頻率'))


#需要顯示的范圍  10即顯示前10個,0到9
for i in range(80):
    word, count = items[i]
    print("{0:<5}{1:<8}{2:>5}".format(i+1,word, count))
    chiyun.append(word)


 #print(chiyun) 


#加載圖片信息
maskph = np.array(Image.open('山東艦航母.png'))


#join 函數(shù) 用斜桿拼接詞組
text_cut  =  '/'.join(chiyun)
wordcloud = WordCloud(mask =maskph,  background_color='white',font_path = 'msyh.ttc', width=1000, height=860, margin=2).generate(text_cut)
# 顯示圖片 
plt.imshow(wordcloud)
plt.axis('off')
plt.show()

效果1:全部顯示

即:結(jié)巴庫處理好的詞組,不做限制,全部送給詞云顯示:

Python如何制作詞云

顯示二:限定內(nèi)容顯示

比如改成 只輸出前20個詞:(顯示密度會稀好多)

即:結(jié)巴庫處理好后,取前20個高頻詞傳給詞云顯示:

再試一下前20的 四個字的詞:

Python如何制作詞云

到此,相信大家對“Python如何制作詞云”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


本文名稱:Python如何制作詞云
轉(zhuǎn)載注明:http://weahome.cn/article/iipioo.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部