2020年5月6日&7日 第八章 Python第三方库安装及常用库介绍

第八章 Python第三方库安装及常用库介绍

8.1 Python第三方库简介

8.2 Python第三方库安装

8.3 jieba库的使用

8.4 wordcloud库的使用

8.1 Python第三方库简介

  • 近20年的开源运动产生了深植于各信息技术领域的大量可重用资源,形成了“计算生态”。
  • 编程领域形成的庞大“计算生态”,需要一种编程语言或方式将不同语言、不同特点、不同使用方式的代码统一起来。
  • 在计算生态思想指导下,编写程序的起点不再是探究每个具体算法的逻辑功能和设计,而是尽可能利用第三方库进行代码复用,探究运用库的系统方法。这种像搭积木一样的编程方式,称 为“模块编程”
  • Python从诞生之初致力于开源开放,建立 了全球最大的编程计算生态,至今已建立了9万多第三方库
  • Python官方网站(https://pypi.python.org/pypi)提供了第三方库索引功能, 这些库覆盖信息领域所有技术方向

8.2 Python第三方库安装

Python第三方库安装:

  • Python语言有标准库和第三方库两种库,标准库随Python安装包一起
    发布,用户安装Python后即可使用,而第三方库需要安装后才可使用
  • Python第三方库按照安装方式灵活性和难易度主要有以下安装方法:
    (1)pip工具安装
    (2)自定义安装【略】
    (3)文件安装
    其中最常用和最高效的安装方式:采用pip工具安装

pip工具安装:

  • pip是Python官方提供并维护的在线第三方库安装工具
  • pip是Python内置命令,需要通过命令行执行,执行pip –h命令将列出pip常用的子命令,注意,需要在“命令提示符”窗口运行pip命令,而不要在IDLE环境下运行pip命令
  • pip支持安装(install)、下载(download)、卸载(uninstall)、列表(list)、查看(show)、查找(search)等一系列安装和维护子命令
  • 安装一个库的命令格式如下(在“命令提示符”窗口输入pip命令):
    pip install <拟安装库名>
    例如 :pip install wordcloud
    pip工具将默认从网络上下载wordcloud 库安装文件并自动安装到系统中

文件安装:

  • 如果在windows平台下有些第三方库用pip工具无法安装,可以尝试使用文件安装
  • 美国加州大学尔湾分校提供了一个页面,帮助Python用户获得Windows可直接安装的第三方库文件,链接地址如下:
    http://www.lfd.uci.edu/~gohlke/pythonlibs
    选择适用于Python(如Python 3.7)解释器和64(32)位操作系统的对应.whl文件,下载后用pip命令进行安装

安装补充:如 anaconda的集成开发环境安装

8.3 jieba库

1 jieba库简介

2 jieba库分词函数

1 jieba库简介

jieba库:

  • 在自然语言处理技术中,中文分词是其他中文信息处理的基础,比如搜索引擎、机器翻译(MT)、语音合成、自动分类、自动摘要、自动校对等等,都需要用到分词
  • jieba 是Python中一个重要的第三方中文分词库,具有分词、添加用户词典、提取关键词和词性标注等功能
  • jieba库的安装( 在“命令提示符”窗口输入命令):
    pip install jieba
  • jieba 库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组。它支持3 种分词模式:
    (1)精确模式:试图将句子最精确地切开,适合文本分析。
    (2)全模式:把句子中所有可以成词的词语都扫描出来,速度快,但是不能解决歧义问题。
    (3)搜索引擎模式:在精确模式的基础上,对长词再次切分,提高召回率,适用于搜索引擎分词

2 jieba库分词函数

jieba库:

  • jieba 库主要提供分词功能,可以辅助自定义分词词典。jieba 库中包含的主要函数如表格所示
函数 说明
jieba.cut(s) 精确模式,返回一个可迭代的数据类型,可以通过for循环来取里面的每一个词
jieba.cut(s,cut_all=True) 全模式,输出文本s中所有可能的单词
jieba.cut_for_search(s) 搜索引擎模式,适合搜索引擎建立索引的分词结果
jieba.lcut(s) 精确模式,返回一个列表类型
jieba.lcut(s,cut_all=True) 全模式,返回一个列表类型
jieba.lcut_for_search(s) 搜索引擎模式,返回一个列表类型

【 例8-1】 jieba库的分词基本应用

>>>import jieba
>>>str1="AlphaGo是第一个战胜围棋世界冠军的人工智能机器人"
>>>jieba.lcut(str1)
['AlphaGo','是','第一个','战胜','围棋','世界冠军','的','人工智能','机器人']
>>>jieba.lcut(str1,cut_all=True)
['AlphaGo','是','第一','第一个','一个','战胜','围棋','世界','世界冠军','冠军','的','人工','人工智能','智能','智能机','机器','机器人']
>>>jieba.lcut_for_search(str1)
['AlphaGo','是','第一','一个','第一个','战胜','围棋','世界','冠军','世界冠军','的','人工','智能','人工智能','机器','机器人']
>>>jieba.cut(str1)

>>>[word for word in jieba.cut(str1)]
['AlphaGo','是','第一个','战胜','围棋','世界冠军','的','人工智能','机器人']

3 向jieba调整词典和自定义词典

调整字典

函数 说明
jieba.add_word(word,freq=None,tag=None) 向词典添加新闻
jieba.del_word(word) 删除词典中的词
jieba.suggest_freq(segment,tune=True) 可调节单个词语的词频,使其能(或不能)被拆分

【例8-2】jieba库的添加分词与调节词频

>>>import jieba
>>>str="甄善美爱Python"
>>>jieba.lcut(str2)
['甄善','美爱','Python']
>>>jieba.add_word("甄善美")
>>>jieba.lcut(str2)
['甄善美','爱','Python']
>>>st3="在运动中将有补给"
>>>jieba.lcut(str3)
['在','运动','中将','有','补给']
>>>jieba.suggest_freq(('中','将'),True)
494
>>>jieba.lcut(str3)
['在','运动','中','将','有','补给']

自定义词典:

  • 用户自定义的词典文件格式是每个词占一行,每一行分 3 部分:词语、词频(可省略)、词性(可省略),各部分用空格隔开,顺序不可颠倒
  • 通常的字典文件编码格式为 UTF-8。例如创建字典文件 dict1.txt结构如图所示:

dict.txt - 记事本
杨树芳 10
三级 1500
跳高 1500
当壁镇 5
创业处 7

  • jieba中添加自定义字典的语法格式如下,其中 <文件名> 为文件类对象或自定义词典文件的路径。
    jieba.load_userdict(<文件名>)

【例8-3】用户自定义字典的应用

>>>str4="杨树芳是当壁镇马拉松冠军也是国家三级跳高运动员"
>>>jieba.lcut(str4)
['杨树','芳是','当壁','镇','马拉松','冠军','也','是','国家','三级跳','高','运动员']
>>>jieba.load_userdict('C:\\Python36\\Lib\\site-packages\\jieba\\dict1.txt')
>>>jieba.lcut(str4)
['杨树芳','是','当壁镇','马拉松','冠军','也','是','国家','三级','跳高','运动员']

8.4 wordcloud库

wordcloud库

  • wordcloud是专门用于根据文本生成词云的Python第三方库
  • 词云又叫文字云,以词语为基本单元,对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成“关键词云层”或“关键词渲染”类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思,以达到数据展示的多样性的目的

【例8-4】 每年的4月23日是世界读书日,其设立目的是为了推动更多的人去阅读和写作。中国古代有许多关于书的成语和鼓励人们多读书的诗句,请将“腹有诗书气自华”、“读书破万卷,下笔如有神”、“书到用时方恨少”这三句诗翻译成英文,编写程序将其生成词云图

from wordcloud import WordCloud
text="One who is filled with knowledge always behaves with elegance;\
Having pored over ten thousand volumes, one can write with godly power;\
It is when you are using what you have learned from books that you wish you had read more books than you have."
wcloud=WordCloud().generate(text)
wcloud.to_file("d:/python/a1.png")

wordcloud库

  • wordcloud库的核心是WordCloud类,所有的功能都封装在WordCloud类中
  • 使用时需要实例化一个WordCloud类的对象,并调用其generate(<文本>)方法将text文本转化为词云
  • wordcloud类在创建时有一系列可选参数,用于配置词云图片
  • wordcloud对象创建时的常用参数及常用方法如表格所示

WordCloud对象创建的常用参数

参数 功能
front_path 指定字体文件的完整路径,默认None
width 生成图片宽度,默认400像素
height 生成图片高度,默认200像素
mask 词云形状,默认None,即方形图
min_font_size 词云中最小的字体字号,默认4号
font_step 字号步进间隔,默认1
max_font_size 词云中最大的字体字号,默认None,根据高度自动调节
max_words 词云图中最大词数,默认200
stopwords 被排除词列表,排除词不在词云中显示
background_color 图片背景颜色,默认黑色

WordCloud类的常用方法

方法 功能
WordCloud.generate(<文本>) 由文本生成词云
WordCloud.to_file(<文件名>) 将词云图保存为文件名

【扩展 例8-4】

from wordcloud import WordCloud
text="One who is filled with knowledge always behaves with elegance;\
Having pored over ten thousand volumes, one can write with godly power;\
It is when you are using what you have learned from books that you wish you had read more books than you have."
wcloud=WordCloud(height=400,background_color="yellow").generate(text)
wcloud.to_file("d:/python/a2.png")

【例8-5】 修改【例8-4】,生成带有形状的词云
提示:
(1)需要提前准备好一张带形状的图片(*.png、*.jpg、*.jpeg等)
(2)需要用到scipy库将图像转换成ndarray类型,在安装wordcloud库时,scipy库会被作为依赖库自动安装。除此之外,也可以用numpy库和PIL处理图像,需要单独安装
(3)设置WordCloud( )对象中mask限制生成词云的形状

from wordcloud import WordCloud
from scipy.misc import imread  #或者from imgeio import imread
background_image=imread("d:/python/photo4.jpeg")
text="One who is filled with knowledge always behaves with elegance;\
Having pored over ten thousand volumes, one can write with godly power;\
It is when you are using what you have learned from books that you wish you had read more books than you have."
wcloud=WordCloud(mask=background_image,background_color='white').generate(text)
wcloud.to_file("d:/python/a3.png")

【例8-6】根据党的十九大报告全文,生成词云
提示:
(1) 准备文档“党的十九大报告全文.txt”
(2) 对于中文文本,分词外理需要由用户来完成,因此安装第三方库jieba库并使用。一般步骤是先将文本分词处理,然后以空格拼接,再调用wordcloud库函数
(3) 处理中文时还需要指定中文字体

from wordcloud import WordCloud
import jieba
f=open("d:/python/党的十九大报告全文.txt","r")
txt=f.read()
f.close( )
words=jieba.lcut(txt)
newtxt=''.join(words) #用空格连接列表元素为字符串font="c:/Windows/Fonts/simhei.ttf"
wcloud=WordCloud(font_path=font).generate(newtxt)
wcloud.to_file("d:/python/a4.png")

【扩展 例8-6】 根据党的十九大报告全文,生成带形状的词云

from wordcloud import WordCloud
import jieba
from scipy.misc import imread
f=open("d:/python/党的十九大报告全文.txt","r")
txt=f.read()
f.close()
words=jieba.lcut(txt)
newtxt=''.join(words)font="c:/Windows/Fonts/simhei.ttf"
background_image=imread("d:/python/photo13.jpg")
wcloud=WordCloud(font_path=font,mask=background_image,background_color\
="white").generate(newtxt)
wcloud.to_file("d:/python/a5.png")

【温馨提示】 程序运行若出现如下提示
ImportError: cannot import name ‘imread’ from ‘scipy.misc’……….
原因是在最新版本的scipy库中已移除imread函数
可参考:方法1或方法2尝试解决
方法1需要在命令提示符窗口安装第三方库 imageio
pip install imageio
方法2需要在命令提示符窗口安装第三方库 numpy和PIL(实际安装pillow)
pip install numpy
pip install pillow

方法一

from wordcloud import WordCloud
import jieba
from scipy.misc import imread #from imageio import imread
f=open("d:/python/党的十九大报告全文.txt","r")
txt=f.read()
f.close()
words=jieba.lcut(txt)
newtxt=''.join(words)
font="c:/Windows/Fonts/simhei.ttf"
background_image=imread("d:/python/photo13.jpg")
wcloud=WordCloud(font_path=font,mask=background_image,background_color\
="white").generate(newtxt)
wcloud.to_file("d:/python/a5.png")

方法二

from wordcloud import WordCloud
import jieba
from scipy.misc import imread '''import PIL.Image as image 
                                 import numpy as np'''

f=open("d:/python/党的十九大报告全文.txt","r")
txt=f.read()
f.close()
words=jieba.lcut(txt)
newtxt=''.join(words)
font="c:/Windows/Fonts/simhei.ttf"
background_image=imread("d:/python/photo13.jpg") #np.array(image.open("d:/python/photo13.jpg"))
wcloud=WordCloud(font_path=font,mask=background_image,background_color\
="white").generate(newtxt)
wcloud.to_file("d:/python/a5.png")

【课后思考】 根据“红楼梦.txt”,生成带有形状的词云

from wordcloud import WordCloud
import jieba
from scipy.misc import imread
f=open("d:/python/红楼梦.txt","r",encoding="utf-8")  #"utf-8"表示文件编码
font="c:/Windows/Fonts/simhei.ttf"
background_image=imread("d:/python/photo11.jpg")
txt=f.read()
f.close()
words=jieba.lcut(txt)
newtxt=''.join(words)
wcloud=WordCloud(font_path=font,mask=background_image,background_color="white").generate(newtxt)
wcloud.to_file("d:/python/a6.png")

综合大作业

【综合大作业】每名学生上交 1 份电子版作业,要求自行设计一个主题,并利用 wordcloud 生成基于中文文本的带有形状的词云。将本次作业创建一个名为“学号班级姓名”的压缩包,通过雨课堂试卷进行提交。压缩包内具体包括如下内容:

  • 编写的程序文件,文件名为“学号班级姓名.py”
  • 生成的词云图片,文件名为“学号班级姓名.png”
  • 原始文本,文件名为“学号班级姓名 yswb.txt”
  • 原始图像,文件名为“学号班级姓名 ystx.jpg” 实验报告,文件名为“学号班级姓名实验报告.docx”

提示:
(1)文件名“学号班级姓名”(如190101123中文1张小小),在其中间不要加空格或其他符号
(2) 实验报告模版请从QQ群文件中下载

你可能感兴趣的:(2020年5月6日&7日 第八章 Python第三方库安装及常用库介绍)