基于Python实现词云制作
1 第三方库的安装与简介
1.1 Python第三方库 jieba(中文分词)
1. 特点
(1)支持三种分词模式:
- 精确模式,试图将句子最精确地切开,适合文本分析;
- 全模式,把句子中所有的可以成词的词语都扫描出来, 速度非常快,但是不能解决歧义;
- 搜索引擎模式,在精确模式的基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。
(2)支持繁体分词
(2)支持自定义词典
(3)MIT 授权协议
2. 安装和使用说明
pip install jieba / pip3 install jieba
通过 import jieba 进行引用
3. 主要功能
这里主要涉及到的是分词功能,详述如下:
(1)jieba.cut 方法接受三个输入参数:
- 需要分词的字符串;
- cut_all 参数用来控制是否采用全模式;
- HMM 参数用来控制是否使用 HMM 模型。
(2)jieba.cut_for_search 方法接受两个参数:
- 需要分词的字符串;
- 是否使用 HMM 模型。
该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细。
1. 待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。
2. 不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8。
3. jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用jieba.lcut 以及jieba.lcut_for_search 直接返回 list。
(3)jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。
4. 示例代码
(1)实现代码:
1 # coding=utf-8 2 import jieba 3 4 text = "轻轻地我走了正如我轻轻地来" 5 6 seg_list = jieba.cut(text, cut_all=False) 7 print("Default Mode: " + "/ ".join(seg_list)) # 精确模式 8 9 seg_list = jieba.cut(text, cut_all=True) 10 print("Full Mode: " + "/ ".join(seg_list)) # 全模式 11 12 seg_list = jieba.cut_for_search(text) 13 print("Search Mode: " + "/ ".join(seg_list)) # 搜索引擎模式
(2)运行结果:
1.2 Python第三方库wordcloud(词云)
1. 安装和使用说明
pip install wordcloud / pip3 install wordcloud
通过 import wordcloud 进行引用
2. 主要功能
wordcloud把词云当作一个对象,它可以将文本中词语出现的频率作为一个参数绘制词云,而词云的大小、颜色、形状等都是可以设定的。
生成词云的步骤如下:
(1)配置对象参数
(2)加载词云文本
(3)输出词云文件 (如果不加说明默认的图片大小为400 * 200)
3. 常见的参数列表
2 制作生成词云
2.1 生成《新冠病毒无症状感染者管理规范》的词云
(1)实现代码:
1 # coding=utf-8 2 import matplotlib.pyplot as plt 3 import jieba 4 from wordcloud import WordCloud 5 6 # 1.读入txt文本数据 7 with open("test.txt", 'r') as f: 8 text=f.read() 9 10 # 2.分词 11 cut_text = " ".join(jieba.cut(text)) 12 13 # 3.生成词云 14 wc = WordCloud( 15 font_path=r'.\simhei.ttf', 16 background_color = 'white', 17 width = 1000, 18 height = 880, 19 ).generate(cut_text) 20 21 # 4.显示词云图片 22 plt.imshow(wc, interpolation="bilinear") 23 plt.axis('off') 24 plt.show()
(2)运行结果:
2.2 生成《关于做好高校毕业生就业创业工作的通知》的词云
(1)实现代码:
1 # coding=utf-8 2 import PIL.Image as image 3 import numpy as np 4 import matplotlib.pyplot as plt 5 import jieba 6 from wordcloud import WordCloud, ImageColorGenerator 7 8 def GetWordCloud(): 9 path_txt = "test.txt" 10 path_img = "test.jpg" 11 # 1.读入txt文本数据 12 with open(path_txt, 'r') as f: 13 text=f.read() 14 background_image = np.array(image.open(path_img)) 15 16 # 2.分词 17 cut_text = " ".join(jieba.cut(text)) 18 19 # 3.生成词云 20 wc = WordCloud( 21 font_path=r'.\simhei.ttf', 22 background_color = 'white', 23 mask=background_image 24 ).generate(cut_text) 25 26 # 生成颜色值 27 image_colors = ImageColorGenerator(background_image) 28 29 # 4.显示词云图片 30 plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear") 31 plt.axis('off') 32 plt.show() 33 34 35 if __name__ == "__main__": 36 GetWordCloud()
(2)运行结果:
Python第三方库jieba(中文分词)