内容正文:
任务9.3 词云库wordcloud的使用
用词云可视化政府工作报告
9.3 词云库wordcloud的使用——用词云可视化政府工作报告
【任务描述】
小T导师布置了大量的文件、文章作业,需要IT快速、准确地把握文章的主要内容。在精读前,为快速确定文章要义,可以运用词云工具来可视化大篇幅的文本内容。近期导师要求学习2021年3月份两会上的国务院政府报告,小T想用词云分析报告主旨。让我们跟随小T一起学习用词云工具可视化中文文本吧!
9.3 词云库wordcloud的使用——用词云可视化政府工作报告
素养小课堂:
国务院政府工作报告是中华人民共和国政府的一种公文形式,各级政府都必须在每年召开的当地人民代表大会会议和政治协商会议(俗称“两会”)上向大会主席团、与会人大代表和政协委员发布这一报告。主要内容包括:上一年内工作回顾、当年工作任务及其他内容。
了解我国的政治制度,树立制度自信;关心国家的大政方针,将自我实现融入社会主义建设中。
9.3 词云库wordcloud的使用——用词云可视化政府工作报告
【任务分析】
中文文本不同于英文文本,字词间没有明确的分隔符号,因此需要先进行中文文本的分词,再进行词云的制作,程序设计思路如下:
(1)读入文章内容。
(2)对中文文章进行分词。
(3)制作词云,并显示词云。
任务解决:
词云库wordcloud
中文分词
词云的制作
9.3 词云库wordcloud的使用——用词云可视化政府工作报告
9.3.1 中文文本分词jieba库的使用
9.3.2 词云库cloudword的使用
9.3.3 词云任务实现——用词云可视化政府工作报告
9.3 词云库wordcloud的使用——用词云可视化政府工作报告
9.3.1 中文文本分词jieba库的使用
文本内容则可以通过“词云”来完成可视化。词云通过形成“关键词云层”或“关键词渲染”,对文本中出现频率较高的“关键词”组成类似云的彩色图形,从而形成视觉上的突出,使得人们只要扫一眼就能够明白文章主旨,可以用wordcloud库来制作词云。
因为中文文本的字词间不存在明确的间隔符,所以在制作词云之前需要进行分词,可以用jieba库来实现。jieba库和wordcloud库都不是Python的标准库,因此都需要在使用之前进行安装,可以使用cmd命令窗口下输入如下命令进行安装,也可以把安装文件下载到本地。在使用时都需要用import语句进行导入。
pip install jieba
pip install wordcloud
9.3.1 中文文本分词jieba库的使用
9.3.1 中文文本分词jieba库的使用
jieba库哪些常用方法?
分词的方法
新词的添加
9.3.1 中文文本分词jieba库的使用
jieba库是优秀的中文分词第三方库,中文文本需要通过分词来获得词语间的分隔。其分词原理是利用一个中文词库来确定汉字之间的关联概率,汉字间概率大的组成词组,并形成分词结果。除了分词,用户还可以添加自定义的词组。jieba库分词有3种模式:
精确模式:把一段文本精确地切分成若干个中文单词,再将若干个中文单词组合起来,就能精确地还原之前的文本。这种分词方式不存在冗余单词。
全模式:将一段文本中所有可能的词语都切分出来,一段文本可以被切分成不同的模式,或者从不同的角度切分成不同的词语。在全模式下,jieba库会将各种不同的词语组合都挖掘出来。分词后的信息再组合起来会有冗余。
搜索引擎模式:在精确模式的基础上,对那些较长的词语进行再次切分,进而符合搜索引擎对短词语的索引和搜索,这种分词方式也有冗余。
9.3.1 中文文本分词jieba库的使用
表9-16 jieba库常用函数
函数 功能
jieba.cut(s) 对文本s进行精确模式分词,返回一个可迭代的数据类型
jieba.cut(s, cut_all=True) 对文本s进行全模式分词,返回一个可迭代的数据类型
jieba.cut_for_search(s) 对文本s进行搜索引擎模式分词,返回一个可迭代的数据类型
jieba.lcut(s) 对文本s进行精确模式分词,返回列表类型,建议使用
jieba.lcut(s, cut_all=True) 对文本s进行全模式分词,返回列表类型,建议使用
jieba.lcut_for_search(s) 对文本s进行搜索引擎模式分词,返回列表类型,建议使用
jieba.add_word(w) 向分词字典中增加新词
import jieba
s='中国是一个有着数千年悠久的历史的国家。'
print(jieba.lcut(s))
print(jieba.lcut(s,cut_all=True))
print(jieba.lcut_for_search(s))
分词就是将连续的字序列按照一定的规范重新组合成语义独立词序列的过程。
思考:“中国是一个有着数千年悠久的历史的国家。”分词结果?
9.3.1 中文文本分词jieba库的使用
【例9-19】jieba库的3种分词模式。
(1)精确模式:jieba.lcut(s)
把一段文本精确地切分成若干个中文单词,若干个中文单词之间经过组合,就精确地还原为之前的文本。这种分词方式不存在冗余单词。
['中国', '是', '一个', '有着', '数千年', '悠久', '的', '历史', '的', '国家', '。']
9.3.1 中文文本分词jieba库的使用
(2)全模式:jieba.lcut(s,cut_all=True)
全模式可以将一段文本中所有可能的词语都切分出来,一段文本它可以切分成不同的模式,或者从不同的角度来切分成不同的词语。
在全模式下,jieba库会将各种不同的词语组合都挖掘出来。分词后的信息再组合起来会有冗余。
['中国', '国是', '一个', '有着', '着数', '数千', '数千年', '千年', '悠久', '的', '历 史', '的', '国家', '。']
9.3.1 中文文本分词jieba库的使用
(3)搜索引擎模式:jieba.lcut_for_search(s)
搜索引擎模式是在精确模式基础上,对那些较长的词语进行再次切分,进而适合搜索引擎对短词语的索引和搜索,这种分词方式也有冗余。
['中国', '是', '一个', '有着', '数千', '千年', '数千年', '悠久', '的', '历史', '的', '国家', '。']
9.3.1 中文文本分词jieba库的使用
用jieba库进行文本分词,可以帮助我们更好地掌握各类著作、文章的主旨。现在以我国古代四大名著之一的《红楼梦》为例,运用jieba库,统计出现次数最多的前50位的词语。
[3, 2, 4, 5, 1]
9.3.1 中文文本分词jieba库的使用
import jiebastrText=open('9-20红楼梦.txt','r',encoding='utf-8').read()lstWord=jieba.lcut(strText)dicItem={} # 以字典形式输出,字典键为词云,值为频次
用jieba库进行文本分词,可以帮助我们更好地掌握各类著作、文章的主旨。现在以我国古代四大名著之一的《红楼梦》为例,运用jieba库,统计出现次数最多的前50位的词语。
9.3.1 中文文本分词jieba库的使用
import jiebastrText=open('9-20红楼梦.txt','r',encoding='utf-8').read()lstWord=jieba.lcut(strText)dicItem={} # 以字典形式输出,字典键为词云,值为频次
【例9-20】运用jieba库对《红楼梦》进行分词。
9.3.1 中文文本分词jieba库的使用
for word in lstWord:
if len(word)==1: # 去除单个字,如在、等、我
continue
else:
if word in dicItem.keys(): # 非第一次出现,值加1
dicItem[word]=dicItem[word]+1
else:
dicItem[word]=1 # 第一次出现,加入字典并设定值为1
lstResult=sorted(dicItem.items(),key=lambda x:x[1],reverse=True) # 按字典的值排序
print(lstResult[0:50])
[('宝玉', 3772), ('什么', 1619), ('一个', 1456), ('贾母', 1230), ('我们', 1226), ('那里', 1179), ('凤姐', 1101), ('如今', 1010), ('你们', 1005), ('王夫人', 1005), ('说道', 976), ('知道', 976), ('老太太', 976), ('起来', 956), ('姑娘', 956), ('这里', 944), ('出来', 933), ('他们', 898), ('众人', 870), ('奶奶', 851), ('自己', 838), ('一面', 828), ('太太', 824), ('只见', 794), ('两个', 776), ('怎么', 774), ('没有', 768), ('不是', 744), ('不知', 712), ('这个', 697), ('听见', 693), ('贾琏', 669), ('这样', 655), ('进来', 631), ('咱们', 609), ('东西', 601), ('告诉', 601), ('平儿', 601), ('就是', 600), ('袭人', 579), ('回来', 567), ('宝钗', 565), ('黛玉', 559), ('大家', 547), ('只是', 546), ('老爷', 534), ('只得', 531), ('丫头', 508), ('这些', 506), ('不敢', 492)]
9.3.1 中文文本分词jieba库的使用
从运行结果来看,红楼梦中的人物,“宝玉”在全书中出现频次最高,以绝对的优势占据主角之位,贾母、凤姐、王夫人依次位列其后。当然,精确的频次分析还需要结合同一人物不同的称谓、同一称谓指向不同人物等上下文关系做进一步分析。
即学即答:
字符串s=“问君能有几多愁?恰似一江春水向东流”分词结果如下
['问君', '能', '有', '几多', '愁', '?', '恰似', '一江春水向东流', '。'],是下面哪种分词的结果?
A.jieba.lcut(s) B.jieba.lcut(s,cut_all=True)
c.jieba.lcut_for_search(s) D.jieba.lcut(s,cut_all=False)
9.3.1 中文文本分词jieba库的使用
9.3.1 中文文本分词jieba库的使用
(2)添加新词:
jieba.add_word()方法:添加新词。
jieba.add_word(w)
9.3.1 中文文本分词jieba库的使用
[ '学神', ',', '放过', '孩子', '吧', '!', '雨女无瓜']
import jieba
s='夺笋哪!学神,放过孩子吧!雨女无瓜'
print(jieba.lcut(s))
[,'学神', ',', '放过', '孩子', '吧', '!', '雨女', '无瓜']
jieba.add_word('雨女无瓜')
print(jieba.lcut(s))
9.3.1 中文文本分词jieba库的使用
边学边练:
对《红楼梦》进行分词,统计词语(两个及以上汉字组成的词语)并按词频进行降序排列,打印词频前100的词语及其频次。
$$