首页 > 技术文章 > 计算机二级python 知识点篇(第三方库)

BlogOfEr 2019-08-30 11:18 原文

计算机二级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库时会自动安装依赖库。 )

推荐阅读