文章首发于公众号「brucepk」,欢迎直接去公众号看。
“ 阅读文本大概需要 3.2 分钟
如今,我们的生活最离不开的是什么?答案是手机。据数据统计,中国人均每天使用手机的时长为 3 小时零 3 分钟。手机上每天打开最频繁的APP是哪个呢?今天是月底,我看了下我 7 月份 4G 流量排行榜,排在第一位的就是微信。
如今,新认识的朋友,加个微信吧,看朋友动态,刷刷朋友圈吧,购物付款,微信扫一扫吧。想学习,加入一个技术交流群吧。微信,已成为我们社交的一部分。
如果你想成为什么样的人,那就向这类人去靠近。
一个好的圈子往往能让你进步很快。当你认知提升了,你发朋友圈的言论更具思考性了。这时可能你的所谓「朋友」在下面留言说你再这样我就要屏蔽你朋友圈了!何出此言?因为他们的世界只有吃鸡,只有王者,只有吃吃喝喝,其他的他们会选择性忽视甚至厌恶。这时你就该换换你的微信圈子了。往往阻止你进步的可能就是这些朋友,你的目标在积极朋友的鼓励下我相信能更快的实现。
今天就用 Python 把你微信朋友的签名收集起来做成词云。从签名大致能看出一个人的人生态度,今天就来看看你的微信朋友态度。
项目环境
语言环境:Python 3.6
工具:Pycharm
导包
itchat:用来收集微信相关信息。
jieba:是一个强大的分词库,完美支持中文分词。
matplotlib:Python 的 2D 绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形。
wordcloud:Python 中的一个小词云生成器,支持 Python 2.7、3.4、3.5、3.6、3.7版本。
import itchat
import re
import jieba
import matplotlib.pyplot as plt
from wordcloud import WordCloud
from wordcloud import ImageColorGenerator
import numpy as np
import PIL.Image as Image
获取签名信息
用 itchat 库登录微信后用 get_friends 方法获取微信朋友全部信息,信息包括:昵称、备注名、性别、地区、个性签名等等。
之前分享的一篇文章讲的是把微信朋友进行性别统计做成柱形图,只需把需要的信息从全部信息中剥离出来。个性签名用的是 Signature 字段,剥离出来后,有很多我们不需要的字符,比如表情标签、空格、无用字符等。处理掉无用的字符生成我们需要的签名信息。
signlist = []
itchat.auto_login() #登录微信
friends = itchat.get_friends(update=True)[0:]
for i in friends:
signature = i['Signature'].strip().replace('span','').replace('class','').replace('emoji','').replace('\n','').replace('\"','') #去除无用字符
rep = re.compile("1f\d+\w*|[<>/=]")
signature = rep.sub('',signature)
signlist.append(signature)
text = "".join(signlist)
分词
我们对上面处理后的签名信息用 jieba 库进行分词,把一句话尽可能多的拆分成若干中文词或者词语。
#分词
cut = jieba.cut(text,cut_all=True)
word = ",".join(cut)
print(word)
比如我的签名是「努力成为最好的自己」,拆分后:「努力,成为,最好,的,自己」。
绘制词云
把上面所有的中文分词进行处理,做成词云,自选一张词云图片,可以选一张背景为纯色的图片,这样的词云就会显示为图片中的轮廓。定义词云的各种属性,包括背景颜色、最大单词数、画布图片、最大字体数、字体路径、画布比例等属性。其中字体路径是电脑自带的,我的是在 C:\Windows\Font 目录下,里面有常见的字体,你的词云是中文的话就选择任意一类中文字体就好。
然后用 smatplotlib 库把图的颜色、分词内容写人并显示出来。
coloring = np.array(Image.open("F:\\photo.jpg")) # 电脑中自定义词云的图片
my_wordcloud = WordCloud(background_color="white", max_words=2000,mask=coloring, max_font_size=70, random_state=48,font_path='./font/msyh.ttf',scale=2).generate(word) # 定义词云背景图颜色、尺寸、字体大小、电脑中字体选择,random_state 为每个单词返回一个PIL颜色,字体路径,画布比例
image_colors = ImageColorGenerator(coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors)) # 绘图颜色
plt.imshow(my_wordcloud) # 绘图内容
plt.axis("off")
plt.show() # 显示图片
最后,需要的话你也可以把词云图保存下来。保存到你的 project 的当前目录。
d = path.dirname(__file__) # project 当前目录
my_wordcloud.to_file(path.join(d, 'cloud.png'))
运行结果
这样就完成了微信朋友的签名的词云,看来我的朋友还都蛮正能量的。赶紧自己动手试试,发到朋友圈装装 B,公众号回复「微信词云」获取源码。
推荐阅读:
用 Python 玩微信,机器人陪你唠嗑
30 行代码绘出你的微信朋友统计图
扫码二维码关注我们
「brucepk」公众号专注:
1.python 技术分享
2.python 爬虫分享
3.资料、工具共享
欢迎关注我们,一起成长!
网友评论