
一、引言目前中文文本情感分析主要分为三个类型,第一个是由情感词典和句法结构来做的、第二个是根据机器学习来做的(Bayes、SVM等)、第三个是用深度学习的方法来做的(例如LSTM、CNN、LSTM CNN、BERT CNN等) 。
这三种方法中,第二种和第三种方法都需要人工标注大量的数据,然后做有监督的训练 。只有第一种不需要人工标注,也不需要训练 。
接下来,我们会介绍下第一种方法的算法逻辑,以及如何实践 。
二、情感字典除了分词词典和停用词词典外 , 一共还包含9个词典:
1、否定词:not.txt
2、正面情感词:positive.txt
3、负面情感词:negative.txt
4、程度副词:
- most.txt
- very.txt
- more.txt
- ish.txt
- insufficiently.txt
- over.txt
- inverse.txt
三、算法流程设计
- 算法逻辑
classSentimentAnalysis():"""SentimentAnalysis with some dictionarys"""defsentiment_score_list(self,dataset):seg_sentence=tool.sentence_split_regex(dataset)count1,count2=[],[]forsentence in seg_sentence:words=jieba.lcut(sentence, cut_all=False)i=0a=0forword in words:"""poscount积极词的第一次分值;poscount2积极反转后的分值;poscount3积极词的最后分值(包括叹号的分值)"""poscount,negcount,poscount2,negcount2,poscount3,negcount3=0,0,0,0,0,0ifword in hp.posdict :ifword in [好,真,实在] and words[min(i 1,len(words)-1)] in hp.pos_neg_dictand words[min(i 1,len(words)-1)] != word:continueelse:poscount =1c=0forw in words[a:i]:扫描情感词前的程度词ifw in hp.mostdict:poscount*= 4elifw in hp.verydict:poscount*= 3elifw in hp.moredict:poscount*= 2elifw in hp.ishdict:poscount*= 0.5elifw in hp.insufficientlydict:poscount*= -0.3elifw in hp.overdict:poscount*= -0.5elifw in hp.inversedict:c =1else:poscount*= 1iftool.is_odd(c) == odd:扫描情感词前的否定词数poscount*= -1.0poscount2 = poscountposcount=0poscount3=poscountposcount2poscount3poscount2=0else:poscount3=poscountposcount2poscount3poscount=0a=i 1elifword in hp.negdict:消极情感的分析,与上面一致ifword in [好,真,实在] and words[min(i 1,len(words)-1)] in hp.pos_neg_dict and words[min(i 1,len(words)-1)] != word:continueelse:negcount = 1d=0forw in words[a:i]:ifw in hp.mostdict:negcount*= 4elifw in hp.verydict:negcount*= 3elifw in hp.moredict:negcount*= 2elifw in hp.ishdict:negcount*= 0.5elifw in hp.insufficientlydict:negcount*= -0.3elifw in hp.overdict:negcount*= -0.5elifw in hp.inversedict:d = 1else:negcount*= 1iftool.is_odd(d) == odd:negcount*= -1.0negcount2 = negcountnegcount=0negcount3=negcountnegcount2negcount3negcount2=0else:negcount3=negcountnegcount2negcount3negcount=0a=i1i = 1pos_count=poscount3neg_count=negcount3count1.append([pos_count,neg_count])ifwords[-1] in [!,!]: 扫描感叹号前的情感词,发现后权值*2count1=[[j*2 for j in c] for c in count1]forw_im in [但是,但]:ifw_im in words :扫描但是后面的情感词,发现后权值*5ind=words.index(w_im)count1_head=count1[:ind]count1_tail=count1[ind:]count1_tail_new=[[j*5 for j in c] for c in count1_tail]count1=[]count1.extend(count1_head)count1.extend(count1_tail_new)breakifwords[-1] in [?,?]: 扫描是否有问好,发现后为负面count1=[[0,2]]count2.append(count1)count1=[]returncount2四、举例分析例子:我特别喜欢武汉这个城市!因为武汉有非常多好看的景点 。但是,我不喜欢武汉的天气 , 因为武汉的天气有点差,热的时候让人感觉不爽 。1、 情感词分为 2 种,一种是正面的,另外一种是负面的 。
要分析一句话是正面的还是负面的 , 首先需要找出句子里面的情感词,然后再找出程度副词和否定词等 。
正面的情感词比如:好 , 孝顺,高性能,一心一意等 。负面情感词比如:差,郁闷,小心眼,一毛不拔等 。出现一个积极词就 1 , 出现一个消极词就-1 。在这句话里面,有好看和喜欢两个正面情感词 , 差和不爽两个负面情感词 。
cc是什么车?cc是什么牌子cc是一汽大众品牌旗下旗舰轿车车型 。大众CC被誉为是最美大众车 , 将轿车的稳定性与跑车的灵敏度结合 。目前在国内同时提供轿车和猎装车 。
2、 情感词 喜欢、好看和‘差前面都有一个程度副词 。极好就比较好和好的情感更强烈,太差也比有点差的情感强一些 。所以需要在找到情感词后往前找一下有没有程度副词,**在这里不同的程度副词有不同的权重** 。程度词我们分为 6 种,分别为:most,very,more,ish,insufficient 和 over 通过测试计算,给上面 6 种情感词的打分分别为 4,3 , 2,0.5,-0.3 和-0.5 。
3、我特别喜欢武汉这个城市后面有感叹号,感叹号意味着情感强烈 。因此发现感叹号可以为情 感值 2.
4、 否定词 在找到情感词的时候,需要往前找否定词 。比如不 , 不能这些词 。而且还要数这些否 定词出现的次数,如果是单数,情感分值就*-1,但如果是偶数,那情感就没有反转,还 是1 。在这句话里面,可以看出喜欢前面只有一个不,所以喜欢的情感值应该反 转,-1 。
5、 正面和负面需要分别独立计算 , 很明显就可以看出,这句话里面有褒有贬,不能用一个分值来表示它的情感倾向 。而且这个权值的设置也会影响最终的情感分值,敏感度太高了 。因此对这句话的最终的正确的处理,是得出这句话的一个正面分值,一个负面分值(这样消极分值也是正数, 无需使用负数了) 。
6、 以分句的情感为基?。?加权求和,从而得到一条评论的情感分值 。
【基于情感词典的文本情感分析代码 基于情感词典】这条例子评论有五个分句,因此其结构如下([正面分值, 负面分值]): 下面是对每个分句的打分: [正面分值, 负面分值]
① 我 特别 喜欢 武汉这个城市 ! [正面分值, 负面分值] : [3*1 2,0]
② 因为武汉有 非常 多 好看 的景点 。[正面分值, 负面分值] : [4*1,0]
③ 但是 , [正面分值, 负面分值] : [0,0]
④ 我 不 喜欢 武汉的天气 , [正面分值, 负面分值] : [-1*1,0]
⑤ 因为武汉的天气 有点 差,[正面分值, 负面分值] : [0,0.5*1]
⑥ 热的时候让人感觉 不爽 。[正面分值, 负面分值] : [0,1]
最后,这句话的得分为: [3*1 2,0][4*1,0][0,0][-1*1,0][0,0.5*1][0,1] = [8,1.5],即为: [正面分值, 负面分值] = [8,1.5] 。
因为 8>1.5,所以整句话的情感判断为正面 。
扑救时要先救人后救物,先重点后一般,先断电后救火 , 并注意顺风救灾,特别是野外火场 。灭火时一般就地取材,如用水、砂、土等灭火器材,特别要设法控制火势蔓延 。
五、总结如果我们仅仅使用情感词典的方法,准确率就可以达到 73%左右 。这种方法比较通用,不需要训练,对于不同类型的数据都可以进行情感分析 。唯一的缺点就是准确率不是非常高 。
六、Github代码链接:https://github.com/hellonlp/sentiment_analysis_dict
一只投胎猪的心路历程:一只猪死后到阴间判官处报到,判官说道:去吧,下世还做猪 。说完就要在生死簿上落下判官笔 , 没想到这只猪却大声嚷道:不公平?。〔还桨 。∨泄俸苁蔷? ,说道:怎么不公平呢?你说说看 。猪道:判官大人,世界太不公平了,我们猪得不到人们 的喜欢,最可恨的...
猜你喜欢
- 中文情感分析词典 基于词典情感分析
- 综艺情感节目有哪些 情感综艺有哪些
- 女性情感话题有哪些 女性情感话题
- 夫妻情感综艺有哪些 情感综艺有哪些
- 宫怨诗表达的情感有哪些 表达的情感有哪些
- 古诗所表达的情感有哪些 表达的情感有哪些
- 基于情感词典的情感分析结果评估 基于情感词典
- 女性情感话题文案 女性情感话题
- 大学生情绪情感有哪些 情绪情感有哪些
- 边塞诗表达的情感有哪些 表达的情感有哪些
