pyinstaller和wordcloud和jieba的使用案列

L雜貨店發表於2021-10-28

一、pyinstaller庫

1、簡介

pyinstaller庫:將指令碼程式轉變為可執行(.exe)格式的第三方庫
注意:需要在.py檔案所在目錄進行以下命令,圖示副檔名是.ico

2、格式:

pyinstaller -F 檔案.py
pyinstaller -i 圖示名.ico 檔名.py
image
生成後的.exe檔案放在dict資料夾裡
image

image

二、wordcloud庫

1、詞雲介紹

詞雲以詞語為基本單元,根據其在文字中出現的頻率設計不同大小一形成視覺上不同的效果,形成關鍵詞雲層或關鍵詞渲染,從而使讀者一眼就可以讀到文字重點。wordcloud的核心是WordCloud類,所有功能都封裝在這個類中,使用時需要先例項化一個WordCloud類的物件,並呼叫。

2、需要安裝的模組

pip install wordcloud
pip install imageio
注意:字型檔案需要指定路徑,或者和檔案放在同一目錄

3、wordcloud常用的函式

WordCloud().generate(文字) 將字串轉化成詞雲
WordCloud().to_file(檔案路徑) 將詞雲生成檔案

4、案列

點選檢視程式碼
from wordcloud import WordCloud     #使用WordCloud類
import imageio     
# from scipy.misc import imread  其中imread模組在scipy中已經被棄用,建議使用imageio
mask = imageio.imread('C:/Users/wordcloud/hzw.png') 
#圖片轉換成陣列形式,一般使用png圖片,windows中路徑要麼用/要麼要\\因為一條\代表轉義字元
with open('C:/Users/wordcloud/hzw.txt','r',encoding='utf-8') as f:
    txt = f.read()
    wordcloud = WordCloud(width=1017,\
        height=1097,\
        max_words=400,\
        max_font_size=80,\
        mask=mask,\
        font_path='msyh.ttc',\
            ).generate(txt)      #字串轉化成詞雲
    wordcloud.to_file('C:/Users/wordcloud/xhzw.png')  #詞雲生成檔案

image

效果展示:
image

在生成詞雲時,wordcloud預設會以空格或標點為分割符對目標文字進行分詞處理,對於中文文字,分詞處理需要由使用者來完成,可以結合jieba庫一起使用,一般步驟是先將文字分詞處理,然後以空格拼接,再呼叫。
用法:
words = jieba.lcut(txt)#進準分詞
newtxt = ' '.join(words) #空格拼接
結合jieba庫的效果
image

三、jieba庫

1、簡介

通過中文詞庫的方式來識別分詞的
-- 利用一箇中文詞庫,確定漢字之間的關聯概率
-- 通過計算漢字之間的概率,漢字間概率大的組成片語,形成分詞結果
-- 除了分詞,使用者還可以新增自定義的片語

2、案列

點選檢視程式碼
from posixpath import commonpath
import jieba
with open('C:/Users/hzw.txt','r',encoding='utf-8') as f:
    txt = f.read()
    words = jieba.lcut(txt)
    counts = {}
    bd = [',','。','、',' ']
    for word in words:
        if word in bd:
            continue           #如果文字中有標點符號,就跳過
        elif len(word)==1:     #表示一個字的次遇到就跳過
            continue
        else:
            counts[word]=counts.get(word,0)+1   #將出現過的次記錄次數並寫進字典
    items = list(counts.items())      #將字典轉成列表
    items.sort(key=lambda x:x[1],reverse=True)  
    #x可以是任意,[]裡面的數表示對第幾個元素排序,reverse=True表示升序,預設是降序
    for i in range(3):  #迴圈三次,只展示排名前三的結果
        word,count=items[i]   #從元組裡取值
        print(f'{word:^5}:{count:<5}')    #^居中對齊,保留5個寬度

效果展示

image

相關文章