文本挖掘:避孕药主题情感分析
关于舆情分析的实例分析,希望给你带来一些帮助。
前言
距离上次文本挖掘小文章时间已经过了3个月了,北京已经入冬,有人说北京的冬天很冷,但是吃上火锅很暖;也有人说北京的冬天雾霾严重,太干。这两句表达的是对北京冬天的情感,即有正面也有负面。
如果在舆情分析而言,我们在做营销分析,分析产品、活动优劣,或者希望维护品牌PR,我们就需要针对消费者网络发声去分析情感,来帮助我们维护品牌,改善活动产品,来达到监测舆情分析效果。换句话说也就是我们今天分享的主题—sentiment
舆情分析思路
笔者5年前做舆情分析时候一般来说就是人工舆情,并没有加入高级点的分析工具减少人工投入。随着R,python等的流行,同时,随着各种开源包tm,LDA,Rwordseg开发,以及高等概率数学的应用,例如分词算法根据隐性马尔科夫链算法编写而成(有兴趣的同学自己研究),让我们之前的工作量大大减少。因此人工舆情转换成人工纠正舆情大势所趋,即我们使用工具减少读帖子的时间,并且让机器学习,人工后期纠错。
一般而言,舆情分析报告分为以下几个步骤:
前两个可以作为统计分析-统计时间趋势音量,音量份额,后两个可以作为建模分析-主题分析,情感判别。
这里有个小插曲:上次分享的是主题分析,笔者最近又重新梳理了下LDA,发现tm包中文分词形成词频矩阵很不理想,这会导致LDA无法应用,因此,后续笔者会自己写个脚本将词频矩阵实现,这样会方便LDA,会方便聚类分析,以及预测分析。
言回正传,情感分析就是表达发言人对一个主题的看法,有好有坏,或者中立。情感分析应用分类两类,第一是给定正负面词,算分值,高于或者低于baseline则表示正面、负面情绪。第二,根据深度学习,利用神经网络来区分正负情感。本文先实现第一类情感分析。
第一类情感分析:正负面词典(简版)
读入文本,数据清理
本次还是以上次文本为输入项,将content_Full 内容做文本处理
清理原则:
- 去除特殊字符,空值等,例如☆移动平台☆iOS☆
- 去除转发的内容,留原作者观点。例如 保留红框内的文本,去除后面转发文本
- 删除文本过长的内容,内容偏向日记和广告,减少文本噪声
- 去除stopwords
比如中文常规字符,‘的’‘地’‘得’‘我’等
添加词汇
由于本文是医用词汇,需要添加的词汇偏重医用或者品牌,不让分词拆成单个字符
例如:妈富隆,调经
分词&词云图
文本处理后,根据词频出现频次,且过滤掉分词为单个词的中文,绘制词云图,鼠标所过的词可以显示文本出现次数,例如避孕药:767次
载入正负词典
正面词记1;负面词为-1,便于之后算分值划定情感
计算情感得分
将文本中的分词按照中英文词典的正负面词打分,计算分值,若中性词(不出现字典)则记为0。
分值计算原理
- 公式 (自己编的,有疑问请留言一起讨论)
情感分值=∑i=1(正面+中性)*(-1)t
i 表示第i句话;t表示出现负面词的次数
- 公式表示一句话中若出现偶数负面词,表示肯定,例如:我其实觉得他没有那么不通情达理。 两次否定:不,没有,t=2
结果
正面发声分类结果:
负面发声结果
后续改进:
- 将词频矩阵脚本改写,重现LDA 或者 聚类
- 对文本先人工预判,将此打分进行 confusion matrix,评估分类器
- 目测而言负面分类基本正确,正面分类中包含很多中性发声,需要进一步剔除研究
- 深度学习重现下情感分析
相关阅读
作者:冯大福,微信公众号:说说数据分析那些事儿
本文由 @shangyuan 原创发布于人人都是产品经理。未经许可,禁止转载。
题图来自unsplash,基于CC0协议
- 目前还没评论,等你发挥!