通过情感词典分析微博用户心理状态

这里我们先介绍一个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.情感分析20102011年2012年
痛苦0161571230
仇恨022925786
悲伤03265165094
忧愁074239519
烦闷03116136869
愤怒08686374781
惆怅092763350
失望0291722
不满02028930
不安020710774
惭愧073036839
心虚019710596
慌张0101951725
着急056728638
厌烦0734243
怨恨041319096
责怪049926155
委屈02130
漠视038218858
鄙视0101853472
责骂046127027
哭泣045002113558
镇定074041542
无愧01436843
满意052221314
舒畅0105559591
得意06109225859
高兴0372061401924
心静000
喜爱0372040
喜欢0421944
喜爱0345491579667
倾心02717719
赞成051030427984
愿意0146757350
称赞02547101148
振奋06081281966
祝愿02464108254
道谢09900478722
留恋0563607
感激022112318
感动035117283
激动031114739
佩服038620570
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值