在上一篇中,将导出的csv文件中的talkid为微信id的文字内容提取出来,形成txt文件。
一、对文本内容进行清洗
-
在notepad中打开txt文件,发现聊天记录中,每隔一段会有诸如“wxid_atzmad”的无效字段,影响整体数据的有效性。
考虑到每个“wxid_atzmad”字段后内容均不一样,若用复制粘贴去替换,几万行聊天记录,光查找就要耗费一定精力。想到学习python时,学过正则表达式,为何不用正则表达式匹配“wxid_atzmad”字段,然后将其替换为空值?如果用正则表达式,速度快,效果应该可以达到。
数据清洗部分根据个人对数据的需求,进行不断清洗。
二、生成词云图
在jupyter中,导入wordcloud模块(当然,如果anaconda中没有装wordcloud模块的话,可采用conda install wordcloud或者导入相关我回来文件的方式安装),然后编写词云图代码,生成词云。其中,词云背景图需要的照片轮廓可用美图软件进行修饰,以获得更好的效果图。
直接上代码。
#使用空格链接,进行中文分词
wl_space_split=''.join(wordlist)
print wl_space_split
#读取mask/color图片
d=path.dirname(__file__)
nana_coloring=imread(path.join(d,'pic.png')
#对分词后的文本生成词云
my_wordcloud=WordCloud(background_color='white', #设置背景颜色
mask=nana_coloring, #设置背景图片
max_words=2000, #设置最大显示的字数
stopwords=STOPWORDS, #设置停用词
max_font_size=50, #设置字体最大值
random_state=30, #设置有多少种随机生成状态,即有多少种配色方案
)
my_wordcloud.generate(wl_space_split)
#create coloring from image
image_colors=ImageColorGenerator(nana_coloring)
#recolor wordcloud and show
my_wordcloud.recolor(color_func=image_colors)
#显示词云图
plt.imshow(my_wordcloud)
#是否显示x轴、y轴下标
plt.axis('off')
plt.show()
#save img
my_wordcloud.to_file(path.join(d,'wechat.png')
根据WordCloud的参数,可以自己不断调整参数,获得不同效果的词云图。
最后,附上自己调试出的几个词云图照片。