基于社交网络的情绪化分析I
- - CSDN博客编程语言推荐文章基于社交网络的情绪化分析I. By 白熊花田( http://blog.csdn.net/whiterbear) 转载需注明出处,谢谢. 之前说要进行微博的数据抓取并进行相关的分析,这里就是了. 这是我的毕设题目,题目来源: 汪顺平博客. 在开始毕设时,我联系过这位博主,当时他是已经下载完数据准备分析了,后面一直没有联系了,参考了他数据下载的代码.
上一篇进行了微博数据的抓取,这一篇进行数据的处理介绍。
观察发现微博中有很多的微博是用户参与某些活动而转发的微博,比如:“SmashHit,作者:MediocreAB。推荐!“ http://t.cn/8Fkgg9k”;“刚刚下载了豆丁文档:项目公司运营简报模板“ http://t.cn/RPjFZKf”;“#张亮的红包#红包最暖心~[心]我在张亮Sean的红包中抽到了@快的打车提供的“快的打车6元红包”,快来试试手气,你与幸福之间只有一个红包的距离!“ http://t.cn/RZg7iXL”。
将这些微博定义为无意义微博。并通过一个简单的处理,判断其是否为无意义微博,并计算该类微博在整个微博里的比重。
通过上面给的例子,我们可以看出这类微博多半具有两个特征:
借助这些特征,我设计了一个简单的判断。思路大致为:首先对微博进行分词,获取该微博中TF-IDF权重最大的几个关键词,如果这几个关键词中含有上述的几个特征,那么就将这个微博定义为无意义微博。(当然也判断分词后的所有词中是否包含这些特征)
注:这里分词使用的是 结巴分词。
伪码如下:
# 定义了一组无意义的关键词组
malWords =[u'红包', u'领取', u'点击', u'专享', u'加号', u'交友', u’http']
# 分词得到8个权值最大的词组
tags = jieba.analyse.extract_tags(content, 8, False)
# 集合判断两个集合是否重复,若有即包含无意义词组,该微博定义为无意义微博
myset = set(malWords) & set(tags)
is_meaningful = 1 if myset.__len__() == 0 else 0
这里使用了matplotlib模块进行了饼状图显示,如图:
上图表示的是大工的微博情况。
然后所有学校的数据处理结果如下表格所示:
学校名称 | 有意义的微博 | 无意义的微博 |
---|---|---|
大连理工大学 | 80.0% | 20.0% |
清华大学 | 79.0% | 21.0% |
北京大学 | 78.0% | 22.0% |
南京大学 | 79.0% | 21.0% |
华东政法大学 | 83.0% | 17.0% |
从上表可以看出,这五个学校所发微博中,有意义的微博所占的比例大致相当,约占80.0%左右,其中华东政法大学的比例最高,达到了83.0%,北京大学所占据的比例最低,占了78.0%。
这里使用的判定方式过于简单,存在漏判和错误的情况,但是能够判断出大多数的无意义微博。