*
*python 结巴分词,清洗,计数以及绘制词云图
*
1. 安装所需要的包,相信大家都知道 pip install 加要安装的包,记得要重复一次才算是安装好的,导入如图所有包:
"""
import matplotlib.pyplot as plt #数学绘图库
import jieba #分词库
from wordcloud import WordCloud #词云库
import numpy
import PIL.Image as Image ##图像转换
import jieba.analyse
2.结巴分词是很好用的文本分析工具,因为后面有文本清洗,故这里用list,也是本人懒,名字一般都是abcd什么的,希望其他不习惯的人见谅
#结巴分词为list
text = open(r'..\bieyin.txt',"rb").read()
cut_text= jieba.cut(text)
result= "/".join(cut_text)
u = []
for x in cut_text:
u.append(''.join(x))
3.文本清洗,这是清洗掉无用词,也叫停用词,在百度搜索一般都可以搜到,清洗得到比较干净的数据,一般停用词库还是要自己不断更新添加
#加载停用词
b = []
a = open(r"..\1.txt",'rb').read()
text= jieba.cut(a)
for i in text:
b.append(''.join(i))
``
#词频清洗
f = []
for k in u:
if k not in b:
f.append(k)
4.文本计数,有两种方法
#第一种:计数到字典,运用内置函数
from collections import Counter
a = Counter(f)
print (a) # Counter({'Dog': 3, 42: 2, 'Cat': 2, 'Mouse': 1})
#第二种:自己循环计数存储到字典
#lists = [tuple(['a']),'a','b',5,6,7,5]
count_dict = dict()
for item in f:
if item in count_dict:
count_dict[item] += 1
else:
count_dict[item] = 1 # Counter({'Dog': 3, 42: 2, 'Cat': 2, 'Mouse': 1}
q = open(r'..\2.txt','w')#储存地址
q.write(str(count_dict))
q.close()
5.最后绘制词云图
#绘制词云图
trump_coloring=numpy.array(Image.open(r"..\11.jpg"))#词云图样
wc = WordCloud(font_path=r'..\simfang.ttf',background_color='white',width=20000,height=20000,margin=2,mask=trump_coloring)#,min_font_size=10)#,mode='RGBA',colormap='pink')
wc.generate(str(f))
plt.imshow(wc) # 以图片的形式显示词云
plt.axis("off") #关闭图像坐标系
plt.show()
6.这个程序我是以背影为例,得到最后结果如下图
小白的程序之路
写任何程序都会遇到各种问题,正是这些问题才让我们成长。
前面对文本的操作没有太大问题,就是词云图字体和显示图片形状的会遇到问题,字体也是在百度上搜索,也可以在文章下面下载,是.tff结尾,图片形状就是图形地址控制,该程序可以直接用,有什么问题即使提出,大家一起进步。
还有最后一点,我自己认为这个词云图可以用来制作微博,QQ空间,微信朋友圈等消息的关键词词云图,看看朋友们的关注点在那些上面,快去动手吧!
希望下次我可以做一次需要登陆网站信息的爬取的博客,前提是有人看哦!最好评论交流,增加我的积极性。