python情感词典计算得分_基于情感词典的情感打分

本文介绍了一种使用Python进行情感分析的方法,主要包括文本预处理、情感词典匹配和得分计算。通过处理微博文本,寻找情感词并考虑程度副词、否定词的影响,最终得出每条微博的得分,实现情感倾向性判断。
摘要由CSDN通过智能技术生成

原理我就不讲了,请移步下面这篇论文,包括情感词典的构建(各位读者可以根据自己的需求稍作简化),以及打分策略(程序对原论文稍有改动)。

论文在这里下载:基于情感词典的中文微博情感倾向性研究

(大家可以上知网自行下载)

本文采用的方法如下:

 

首先对单条微博进行文本预处理,并以标点符号为分割标志,将单条微博分割为n个句子,提取每个句子中的情感词 。以下两步的处理均以分句为处理单位。

第二步在情感词表中寻找情感词,以每个情感词为基准,向前依次寻找程度副词、否定词,并作相应分值计算。随后对分句中每个情感词的得分作求和运算。

第三步判断该句是否为感叹句,是否为反问句,以及是否存在表情符号。如果是,则分句在原有分值的基础上加上或减去对应的权值。

最后对该条微博的所有分句的分值进行累加,获得该条微博的最终得分。

代码如下:

首先文件结构图如下:

其中,degree_dict为程度词典,其中每个文件为不同的权值。

emotion_dict为情感词典,包括了积极情感词和消极情感词以及停用词。

文件一:文本预处理 textprocess.py

在里面封装了一些文本预处理的函数,方便调用。

# -*- coding: utf-8 -*-

__author__ = 'Bai Chenjia'

import jieba

import jieba.posseg as pseg

print "加载用户词典..."

import sys

reload(sys)

sys.setdefaultencoding("utf-8")

jieba.load_userdict('C://Python27/Lib/site-packages/jieba/user_dict/pos_dict.txt')

jieba.load_userdict('C://Python27/Lib/site-packages/jieba/user_dict/neg_dict.txt')

# 分词,返回List

def segmentation(sentence):

seg_list = jieba.cut(sentence)

seg_result = []

for w in seg_list:

seg_result.append(w)

#print seg_result[:]

return seg_result

# 分词,词性标注,词和词性构成一个元组

def postagger(sentence):

pos_data = pseg.cut(sentence)

pos_list = []

for w in pos_data:

pos_list.append((w.word, w.flag))

#print pos_list[:]

return pos_list

# 句子切分

def cut_sentence(words):

words = words.decode('utf8')

start = 0

i = 0

token = 'meaningless'

sents = []

punt_list = ',.!?;~,。!?;~… '.decode('utf8')

#print "punc_list", punt_list

for word in words:

#print "word", word

if word not in punt_list: # 如果不是标点符号

#print "word1", word

i += 1

token = list(words[start:i+2]).pop()

#print "token:", token

elif word in punt_list and token in punt_list: # 处理省略号

#print "word2", word

i += 1

token = list(words[start:i+2]).pop()

#print "token:", token

else:

#print "word3", word

sents.append(words[start:i+1]) # 断句

start = i + 1

i += 1

if start < len(words): # 处理最后的部分

sents.append(words[start:])

return sents

def read_lines(filename):

fp = open(filename, 'r

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值