jieba分词和好玩的词云
jieba分词和好玩的词云
一,jieba库的安装与使用
1,jieba库的安装
推荐用清华大学的镜像网站在cmd中输入:pip install -i https://pypi.tuna.tsinghua.edu.cn/simple jieba(超级快)
2,jieba库的使用,
1,jieba.cut 方法接受三个输入参数: 需要分词的字符串;cut_all 参数用来控制是否采用全模式;HMM 参数用来控制是否使用 HMM 模型
2,jieba.cut_for_search 方法接受两个参数:需要分词的字符串;是否使用 HMM 模型。该方法适合用于搜索引擎构建倒排索引的分词,粒度比较细待分词的字符串可以是 unicode 或 UTF-8 字符串、GBK 字符串。注意:不建议直接输入 GBK 字符串,可能无法预料地错误解码成 UTF-8
3,jieba.cut 以及 jieba.cut_for_search 返回的结构都是一个可迭代的 generator,可以使用 for 循环来获得分词后得到的每一个词语(unicode),或者用jieba.lcut 以及 jieba.lcut_for_search 直接返回 list
4,jieba.Tokenizer(dictionary=DEFAULT_DICT) 新建自定义分词器,可用于同时使用不同词典。jieba.dt 为默认分词器,所有全局分词相关函数都是该分词器的映射。
结巴分词分为三种模式:精确模式(默认)、全模式和搜索引擎模式,下面对这三种模式分别举例介绍:
1 import jieba 2 3 seg_list = jieba.cut("盛年不重来一日难再晨及时宜自勉岁月不待人", cut_all=True) 4 print("Full Mode: " + "/ ".join(seg_list)) # 全模式 5 6 seg_list = jieba.cut("盛年不重来一日难再晨及时宜自勉岁月不待人", cut_all=False) 7 print("Default Mode: " + "/ ".join(seg_list)) # 精确模式 8 9 seg_list = jieba.cut("盛年不重来一日难再晨及时宜自勉岁月不待人") # 默认是精确模式 10 print(", ".join(seg_list)) 11 12 seg_list = jieba.cut_for_search("盛年不重来一日难再晨及时宜自勉岁月不待人") # 搜索引擎模式 13 print(", ".join(seg_list))
效果:
二,wordcloud库的安装与使用
1,wordcloud库的安装
经过我一下午的斗争找到了一条稳又快的方法:
1 安装Microsoft Visual C++ Build Tools
链接:https://pan.baidu.com/s/1R74OkNwvpwkde93P1hchGA
提取码:42k4
2 在cmd中输入pip install -i https://pypi.tuna.tsinghua.edu.cn/simple wordcloud (是不是很眼熟?没错也是清华的镜像网站)
2,wordcloud库的使用
wordcloud 库把词云当作一个WordCloud对象
- wordcloud.WordCloud()代表一个文本对应的词云
- 可以根据文本中词语出现的频率等参数绘制词云
- 绘制词云的形状、尺寸和颜色均可设定
- 以WordCloud对象为基础,配置参数、加载文本、输出文件
w= wordcloud.WordCloud()
w.generate()
向WordCloud对象中加载文本txt
>>>w.generate("Python and WordCloud")
w.to_file(filename)
将词云输出为图像文件,.png或.jpg格式
>>>w.to_file("outfile.png")
1 import wordcloud 2 c=wordcloud.WordCloud() #1.配置对象参数 3 c.generate("wordcloud by python") #2.加载词云文本 4 c.to_file("pywordcloud.png") #3.输出词云文件
wordcloud如何将文本转化为词云
- 1.分隔:以空格分隔单词
- 2.统计:单词出现次数并过滤
- 3.字体:根据统计配置字号
- 4.布局:颜色环境尺寸
配置对象参数
w= wordcloud.WordCloud(<参数>)
三,实例--分析《祝福》
代码:
1 import numpy as np 2 from PIL import Image 3 import re 4 import jieba 5 from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS 6 import matplotlib.pyplot as plt 7 with open('祝福.txt','r',encoding='gbk') as f: 8 word= (f.read()) 9 f.close() 10 image=np.array(Image.open('aixin.jpeg')) 11 font='C:\\Users\\86156\\Desktop\\学习\\Python\\hyzt132_downcc\\hy132\\f001.ttf' 12 resultword=re.sub("[A-Za-z0-9\[\`\~\!\@\#\$\^\&\*\(\)\=\|\{\}\'\:\;\'\,\[\]\.\<\>\/\?\~\。\@\#\\\&\*\%]", "",word) 13 wordlist_after_jieba = jieba.cut(resultword) 14 wl_space_split = " ".join(wordlist_after_jieba) 15 my_wordcloud = WordCloud( 16 scale=4, 17 font_path=font, 18 mask=image, 19 background_color='white', 20 max_words = 100, 21 max_font_size = 60, 22 random_state=20).generate(wl_space_split) 23 plt.imshow(my_wordcloud) 24 plt.axis("off") 25 plt.show() 26 my_wordcloud.to_file('result.jpg')
效果: