pyinstaller和wordcloud和jieba的使用案列

一、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

Tags: