【Python3.6】生成微信好友個性簽名詞雲
阿新 • • 發佈:2018-12-25
程式碼連結:https://gitee.com/AI-Echo/codes/4bk0tsqczpe6dfyhu7mlo12
思路:
1.通過itchat爬取微信好友資訊,獲取好友簽名Signature
2.將Signature拼接成Str,並去掉預先設定的一些停用詞(如的、是、有等,主要是為了留下名詞和形容詞)
3.匯入jieba模組分詞
4.匯入wordcloud 模組生成詞雲,用matplotlib.pyplot畫出影象並儲存
# -*- coding: utf-8 -*-
"""
Created on Thu Sep 14 09:26:32 2017
@author: admin
"""
import itchat
import re
itchat.login()
friends = itchat.get_friends(update=True)[0:]
tList = []
for i in friends:
#除去空格、表情(表情在爬取的時候會包含在span標籤內)
signature = i["Signature"].replace(" ", "").replace("span", "").replace("class", "").replace("emoji", "")
rep = re.compile("1f\d.+")
signature = rep.sub("" , signature)
tList.append(signature)
# 拼接字串
text = "".join(tList)
# jieba分詞
import jieba
#去除停用詞
stopwords = {}.fromkeys(['的', '包括', '等', '是','不是','有人','人','有'])
#去掉停用詞時用精確模式
segs = jieba.cut(text, cut_all=False)
final = ''
for seg in segs:
#==============================================================================
# seg = seg.encode('utf-8')
#==============================================================================
if seg not in stopwords:
final += seg
#處理完後分詞,採用全模式
wordlist_jieba = jieba.cut(final, cut_all=True)
wl_space_split = " ".join(wordlist_jieba)
# wordcloud詞雲
import matplotlib.pyplot as plt
from wordcloud import WordCloud, ImageColorGenerator
import os
import numpy as np
import PIL.Image as Image
# 獲取當前檔案路徑
d= os.path.dirname(os.path.abspath( __file__ ))
#需要在py檔案所在目錄下已經有模版圖片 timg2.jpg
alice_coloring = np.array(Image.open(os.path.join(d, "timg2.jpg")))
my_wordcloud = WordCloud(background_color="white", max_words=2000,mask=alice_coloring,max_font_size=400, random_state=420,font_path='C:\Windows\Fonts\SIMYOU.TTF').generate(wl_space_split)
image_colors = ImageColorGenerator(alice_coloring)
plt.imshow(my_wordcloud.recolor(color_func=image_colors))
plt.imshow(my_wordcloud)
#不顯示座標軸
plt.axis("off")
#儲存圖片,需在plt.show()前呼叫
#在plt.show() 後實際上已經建立了一個新的空白的圖片(座標軸),
#這時候你再plt.savefig() 就會儲存這個新生成的空白圖片。
plt.savefig("examples.jpg")
plt.show()