这里我们先介绍一个python的excel的处理模块——pyexcel_xls
微博数据源文件样式:(实际为txt文件)
文件样式:(情感词典)
1.首先是模块文件引入和导入文件
from pyexcel_xls import get_data
from pyexcel_xls import save_data
xls_data = get_data('情感词典及其分类.xls',encoding='UTF-8')
2.1363种词汇代表着不同的情感,打开需分析的txt文本,中文防止乱码,都用UTF-8打开
f = open('mongo_microblogs_main.txt','r',encoding='UTF-8')
a=[0 for i in range(1363)]
b=[0 for i in range(1363)]
negword =[]
3.将excel表的Sheet1的第1列,都导入词汇list中(第一列用0表示,所以理论上是第二列)
for i in range(1,len(xls_data['Sheet1'])):
negword.append(xls_data['Sheet1'][i][1]) ##导入情感词汇
4.两个循环依次判断每一句所包含的情感词汇,有则+1即可
for line in f.readlines(): #依次读取每行
line = line.strip() #去掉每行头尾空白
line = line.split('\t')
if(line[5][-1]=='1'):
for nw in negword:
if (line[1].find(nw)!=-1):
a[negword.index(nw)]+=1
else:
for nw in negword:
if (line[1].find(nw)!=-1):
b[negword.index(nw)]+=1
z+=1
print(z)
5.统计总情感。
导入sheet1的第二行。然后进行统计总情感。
分别统计2011年和2012年的微博数据,故都进行两次操作。
for i in range(1,len(xls_data['Sheet1'])-1):
if(xls_data['Sheet1'][i][2]==xls_data['Sheet1'][i+1][2]):
suma+=a[i]
sumb+=b[i]
else:
suma+=a[i]
sumb+=b[i]
print(xls_data['Sheet1'][i][2]+'\t'+str(suma)+'\t'+str(sumb))
suma=0
sumb=0
分析结果如下。只是进行初步分类,未来将会进行进一步分析。
3.情感分析 | 2010 | 2011年 | 2012年 |
痛苦 | 0 | 1615 | 71230 |
仇恨 | 0 | 229 | 25786 |
悲伤 | 0 | 3265 | 165094 |
忧愁 | 0 | 742 | 39519 |
烦闷 | 0 | 3116 | 136869 |
愤怒 | 0 | 8686 | 374781 |
惆怅 | 0 | 927 | 63350 |
失望 | 0 | 29 | 1722 |
不满 | 0 | 202 | 8930 |
不安 | 0 | 207 | 10774 |
惭愧 | 0 | 730 | 36839 |
心虚 | 0 | 197 | 10596 |
慌张 | 0 | 1019 | 51725 |
着急 | 0 | 567 | 28638 |
厌烦 | 0 | 73 | 4243 |
怨恨 | 0 | 413 | 19096 |
责怪 | 0 | 499 | 26155 |
委屈 | 0 | 2 | 130 |
漠视 | 0 | 382 | 18858 |
鄙视 | 0 | 1018 | 53472 |
责骂 | 0 | 461 | 27027 |
哭泣 | 0 | 45002 | 113558 |
镇定 | 0 | 740 | 41542 |
无愧 | 0 | 143 | 6843 |
满意 | 0 | 522 | 21314 |
舒畅 | 0 | 1055 | 59591 |
得意 | 0 | 6109 | 225859 |
高兴 | 0 | 37206 | 1401924 |
心静 | 0 | 0 | 0 |
喜爱 | 0 | 37 | 2040 |
喜欢 | 0 | 42 | 1944 |
喜爱 | 0 | 34549 | 1579667 |
倾心 | 0 | 271 | 7719 |
赞成 | 0 | 51030 | 427984 |
愿意 | 0 | 1467 | 57350 |
称赞 | 0 | 2547 | 101148 |
振奋 | 0 | 6081 | 281966 |
祝愿 | 0 | 2464 | 108254 |
道谢 | 0 | 9900 | 478722 |
留恋 | 0 | 56 | 3607 |
感激 | 0 | 221 | 12318 |
感动 | 0 | 351 | 17283 |
激动 | 0 | 311 | 14739 |
佩服 | 0 | 386 | 20570 |