最近一个项目用到一个上百万行的微博数据,包括微博文本数据和地理坐标数据,从数据库中把这些数据取出来后做了一些分析,这里选了其中比较有趣的部分记录一下,当做积淀。
因为数据是2013年的(现在2018年去挖2013的数据确实有些“落后”了,但它比较全而且现在微博爬数据越来越困难了),首先要确定2013年有哪些微博热点,这里选了微博小秘书发布的十大头条盘点:
![](https://img.haomeiwen.com/i2473543/4b40dbadf1f4cfb4.png)
用echarts标注一下这10个头条的发生时间,得到上面的可视化效果(青色有涟漪效果的为10大头条发生时间)。
![](https://img.haomeiwen.com/i2473543/68d64af4dcc22070.png)
这里选了其中4个进行分析,首先关注度方面,选了五个维度:微博量、微博文本平均长度、衰减时间、衰减速率、坐标广度;
这些指标部分通过SQL语句直接算,坐标广度是把坐标取出来后用Python算了最小外包矩形(MBR)。最后得到一个雷达图(经过归一化处理):
![](https://img.haomeiwen.com/i2473543/6f411c45258004f7.png)
可以看到地震是关注度很高的,毕竟四川的地震牵动全国人民的心。
自然语言处理方面,先是用jieba库进行了分词,统计了词频,并且用wordcloud进行词云可视化。
部分Python代码如下:
wlst = jieba.lcut(text) #分词
dictToCsv(wcDict,dictOut) #保存词频表到dictOut文件里
bdimg = np.array(Image.open(markPic))
wordcloudc = WordCloud(
mask=bdimg,
background_color='white',
font_path='C:\Windows\Fonts\simsun.ttc'). \
generate_from_frequencies(wcDict)
wordcloudc.to_file(picOut) # 保存图片为png
![](https://img.haomeiwen.com/i2473543/57492bb500223fe0.png)
![](https://img.haomeiwen.com/i2473543/e823d9818ec26afe.png)
从词云图中可以看到一些事件的联系,例如雅安地震讲到了较多的汶川。复旦事件很多文本里谈到了清华朱令案。
情感分析用了百度AI的API算了文本的情绪,精度不是很高,之后会尝试其他主要用微博文本进行训练的模型来算情绪。
百度AI算出来的结果统计如下,估计是地震的微博里面有比较多的祈福、坚强等字眼,判为正向情绪的文本比例大。
![](https://img.haomeiwen.com/i2473543/60c015922bfe2e8a.png)
因为这四个事件是灾难或危机事件,负面情绪的比例还是可观的。
网友评论