基于词典的细粒度情感分析

           

1 细粒度情感分析

        传统的情感分析大多是针对句子级的,即某条评论或某句话为积极或消极的概率。而往往一句话中包含着多个描述点,即方面级的述评,这时用一个模糊的概率或数字去评价整段文字或整句话势必是不准确和不公允的。如“我的男朋友性格很好,很专一,但有一些社恐”、“酒店很不错,视野一绝,早餐很棒,但就有一些贵”等。基于此,需要对文本内容进行细粒度的情感分析,以达到更好的分析效果。

        目前,能够实现细粒度情感分析的途径大致有以下几种:

        (1)SenticNet库

        (2)情感词典

        (3)实体命名识别+深度学习

        第一种方式比较方便简单,但毕竟是现成的库,无法普适于每一个研究场景,所以推荐。第二种方式因为是基于词语来进行数学运算,因此能够精确地识别到自己想要的方面级情感(需要自己设好情感分类,可以通过既有的经典模型,或分类聚类算法实现),但缺点是词典的设置耗费人工较大,程度词的权重以及计算公式的设置有一定的主观性(当然可以在同一计算标准下通过标准化来缓解)。第三种方式即通过灌入大量数据进行识别和训练,不用多说,第三种方式是目前最火也是学术界很提倡的一种,但对计算机编程以及算法的要求更高。

        notes:这里需要注意的是:各种方式都存在优缺点,尽管是基于深度学习的情感分析也不能说是最好,而只能说是最火。情感分析是目的,至于我们用何种途径去实现并没有优劣之分,在学术界和企业实践中对这些方法并没有一锤定音的结论,比如在很多大型企业做顾客需求分析以及课题组的某个项目中都是具有自己的情感词典的,和我们不同的是,他们是一个团队,精细化效果背后的繁琐被分摊到了团队中的每一个人,而论文和平时课程作业只有自己...

2 基于词典的细粒度情感分析

2.1 前期准备

        在进行情感分析前需要做一些准备,具体包括数据的采集、清洗;情感词的分类、程度词和否定词的寻找以及权重的设置,进而构建词典;计算公式的设置。

2.2 数据展示与词典设置

        为了方便,我这里采用就用一句话来作为样本吧:

        “我的男朋友非常好很专一,我喜欢极了没有不良嗜好,但有一些社恐

        黑色加粗的部分就是情感词,红色部分是前向程度词,蓝色部分是后向程度词,绿色部分是否定词。

sen_word_dict={'好':1,'专一':1,'喜欢':1,'不良嗜好':-1,'社恐':-1}
before_degree_word_dict={'非常':2,'很':1.5,'一些':0.8}
after_degree_word_dict={'极了':2}
not_word_dict={'没有':2}

2.3 计算规则与代码思路

        计算规则即总得分=正向情感词*程度词*普遍情感词+负向情感词*程度词*普遍情感词

        代码比较繁琐但比较简单,基本上就是for 循环+if语句可以实现,需要完整代码的可以在置顶评论中找到闲鱼链接,有Python基础的就可以自己参考逻辑写啦,重要的是厘清计算和遍历逻辑。

        这里需要说明的是,一般情况,前向程度词可能会和否定词组合,如“非常不好”、“没那么好”等,即需要对情感词前方两个词进行检验。而对于后向情感词来说不太可能两者进行组合,一般只有程度词,如“好极了、棒极了”,即在后向程度词检验时只需要延申一个索引;此外,普遍情感词是指可以形容各个属性的词,如“很好”、“一般”等。像“物流很好,服务也很好”。即将特殊情感词用于分类和筛选,普遍情感词可以视作一种程度词(正负1),即特殊情感词作为用于筛选的核心词,而general的。形容词作为程度词和否定词。

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAI-a4qeWupOmHjOeahOWcn-ixhg==,size_20,color_FFFFFF,t_70,g_se,x_16

         此外,因为是基于词语的计算,因此分词结果特别重要,比如“不好”、“非常不好”没有被切分开,则在情感词中基本词是不带程度词的,这样就会导致得分为0。因此需要进行处理:

        针对单字的程度词:jieba.suggest_freq(('很','好'), True)

        针对非单字的程度词:利用自定义词典:jieba.load_userdict("外部词典.txt")将词频设置的高一些,让其被作为独立单元被分割出来。

2.4 计算得分

最后男友得分=2*1+1.5*1+1*2+(-1)*(-1)+(0.8)*(-1)=5.7分

  • 3
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

#温室里的土豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值