計算機二級python 知識點篇(第三方庫)
考點考綱
- 腳 本 程 序 轉 變 為 可 執 行 程 序 的 第 三 方 庫 :PyInstaller庫(必選)
- 第三方庫: jieba庫(必選)、 wordcloud庫(可選)
PyInstaller庫與程序打包
-
PyInstaller是一個十分有用的Python第三方庫, 它能夠在Windows、 Linux、 Mac OS X等操作系統下將Python源文件打包, 變成直接可運行的可執行文件。
-
通過對源文件打包, Python程序可以在沒有安裝Python的環境中運行, 也可以作為一個獨立文件方便傳遞和管理
-
使用PyInstaller庫對Python源文件打包十分簡單,使用方法如下:
:\\>PyInstaller <Python源程序文件名>
執行完畢后, 源文件所在目錄將生成dist和build兩個文件夾。 最終的打包程序在dist內部與源文件同名的目錄中。
-
通過-F參數對Python源文件生成一個獨立的可執行文件, 如下:
:\>PyInstaller -F <Python源程序文件名>
執行后在dist目錄中出現了*.exe文件,沒有任何依賴庫,可直接運行
- PyInstaller有一些常用參數
| 參數 | 功能 |
|---|---|
| -h, --help | 查看幫助 |
| --clean | 清理打包過程中的臨時文件 |
| -D, --onedir | 默認值, 生成dist目錄 |
| -F, --onefile | 在dist文件夾中只生成獨立的打包文件 |
| -i <圖標文件名.ico > | 指定打包程序使用的圖標(icon) 文件 |
jieba庫
- jieba(“結巴” ) 是Python中一個重要的第三方中文分詞函數庫
- jieba庫的分詞原理是利用一個中文詞庫, 將待分詞的內容與分詞詞庫進行比對, 通過圖結構和動態規划方法找到最大概率的詞組。 除了分詞,jieba還提供增加自定義中文單詞的功能
jieba庫支持三種分詞模式:
- 精確模式, 將句子最精確地切開, 適合文本分析;
- 全模式, 把句子中所有可以成詞的詞語都掃描出來, 速度非常快,但是不能解決歧義;
- 搜索引擎模式, 在精確模式基礎上, 對長詞再次切分, 提高召回率, 適合用於搜索引擎分詞
jieba 庫常用的分詞函數
| 函數 | 描述 |
|---|---|
| jieba.cut(s) | 精確模式,返回一個可迭代的數據類型 |
| jieba.cut(s,cut_all=True) | 全模式,輸出文本s中所有可能的單詞 |
| jieba.cut_for_search(s) | 搜索引擎模式,適合搜索引擎建立索引的分詞結構 |
| jieba.cut(s) | 精確模式,返回一個列表類型,推薦使用 |
| jieba.cut(s,cut_all=True) | 全模式,返回一個列表類型,推薦使用 |
| jieba.cut_for_search(s) | 搜索引擎模式。返回一個列表類型,推薦使用 |
| jieba.add_word(w) | 想分詞詞典中增加新詞 w |
- 搜索引擎模式更傾向於尋找短詞語, 這種方式具有一定冗余度, 但冗余度相比全模式較少。如果希望對文本准確分詞, 不產生冗余, 只能選擇jieba.lcut(s)函數, 即精確模式。 如果希望對文本分詞更准確, 不漏掉任何可能的分詞結果, 請選用全模式。 如果沒想好怎么用, 可以使用搜索引擎模式。
>>>import jieba
>>>ls = jieba.lcut("全國計算機等級考試Python科目")
>>>print(ls)
['全國', '計算機', '等級', '考試', 'Python', '科目']
>>>import jieba
>>>ls = jieba.lcut("全國計算機等級考試Python科目", cut_all=True)
>>>print(ls)
['全國', '國計', '計算', '計算機', '算機', '等級', '考試','Python', '科目']
>>>import jieba
>>>ls = jieba.lcut_for_search("全國計算機等級考試Python科目")
>>>print(ls)
['全國', '計算', '算機', '計算機', '等級', '考試', 'Python', '科目']
>>>import jieba
>>>jieba.add_word("Python科目")
>>>ls = jieba.lcut("全國計算機等級考試Python科目")
>>>print(ls)
['全國', '計算機', '等級', '考試', 'Python科目']
wordcloud 庫
- ordcloud庫是專門用於根據文本生成詞雲的Python第三方庫, 十分常用且有趣
- 在生成詞雲時, wordcloud默認會以空格或標點為分隔符對目標文本進行分詞處理。 對於中文文本, 分詞處理需要由用戶來完成。 一般步驟是先將文本分詞處理, 然后以空格拼接, 再調用wordcloud庫函數。
import jieba
from wordcloud import WordCloud
txt = '程序設計語言是計算機能夠理解和識別用戶操作意圖的一種交互體系, 它按
照特定規則組織計算機指令, 使計算機能夠自動進行各種運算處理。 '
words = jieba.lcut(txt) # 精確分詞
newtxt = ' '.join(words) # 空格拼接
wordcloud = WordCloud(font_path="msyh.ttc").generate(newtxt)
wordcloud.to_file('詞雲中文例子圖.png') # 保存圖片
- wordcloud庫的核心是WordColoud類, 所有的功能都封裝在WordCloud類中。 使用時需要實例化一個WordColoud類的對象, 並調用其generate(text)方法將text文本轉化為詞雲。
WordCloud對象創建的常用參數
| 參數 | 功能 |
|---|---|
| font_path | 指定字體文件的完整路徑, 默認None |
| width | 生成圖片寬度, 默認400像素 |
| height | 生成圖片高度, 默認200像素 |
| mask | 詞雲形狀, 默認None, 即, 方形圖 |
| min_font_size | 詞雲中最小的字體字號, 默認4號 |
| font_step | 字號步進間隔, 默認1 |
| min_font_size | 詞雲中最大的字體字號, 默認None, 根據高度自動調節 |
| max_words | 詞雲圖中最大詞數, 默認200 |
| stopwords | 被排除詞列表, 排除詞不在詞雲中顯示 |
| background_color | 圖片背景顏色, 默認黑色 |
| generate(text) | 由text文本生成詞雲 |
| to_file(filename) | 將詞雲圖保存為名為filename的文件 |
from wordcloud import WordCloud
from scipy.misc import imread
mask = imread('AliceMask.png')
with open('AliceInWonderland.txt', 'r', encoding='utf-8') as file:
text = file.read()
wordcloud = WordCloud(background_color="white", \
width=800, \
height=600, \
max_words=200, \
max_font_size=80, \
mask = mask, \
).generate(text)
# 保存圖片
wordcloud.to_file('AliceInWonderland.png')
其中, from scipy.misc import imread一行用於將AliceMask.png讀取為nd-array類型, 用於后面傳遞給mask參數使用。 (這個庫函數隸屬於scipy庫, pip在安裝wordcloud庫時會自動安裝依賴庫。 )
