如何用python做舆情时间序列可视化

Python021

如何用python做舆情时间序列可视化,第1张

如何批量处理评论信息情感分析,并且在时间轴上可视化呈现?舆情分析并不难,让我们用Python来实现它吧。

痛点

你是一家连锁火锅店的区域经理,很注重顾客对餐厅的评价。从前,你苦恼的是顾客不爱写评价。最近因为餐厅火了,分店越来越多,写评论的顾客也多了起来,于是你新的痛苦来了——评论太多了,读不过来。

从我这儿,你了解到了情感分析这个好用的自动化工具,一下子觉得见到了曙光。

你从某知名点评网站上,找到了自己一家分店的页面,让助手把上面的评论和发布时间数据弄下来。因为助手不会用爬虫,所以只能把评论从网页上一条条复制粘贴到Excel里。下班的时候,才弄下来27条。(注意这里我们使用的是真实评论数据。为了避免对被评论商家造成困扰,统一将该餐厅的名称替换为“A餐厅”。特此说明。)

好在你只是想做个试验而已,将就了吧。你用我之前介绍的中文信息情感分析工具,依次得出了每一条评论的情感数值。刚开始做出结果的时候,你很兴奋,觉得自己找到了舆情分析的终极利器。

可是美好的时光总是短暂的。很快你就发现,如果每一条评论都分别运行一次程序,用机器来做分析,还真是不如自己挨条去读省事儿。

怎么办呢?

序列

办法自然是有的。我们可以利用《贷还是不贷:如何用Python和机器学习帮你决策?》一文介绍过的数据框,一次性处理多个数据,提升效率。

但是这还不够,我们还可以把情感分析的结果在时间序列上可视化出来。这样你一眼就可以看见趋势——近一段时间里,大家是对餐厅究竟是更满意了,还是越来越不满意呢?

我们人类最擅长处理的,就是图像。因为漫长的进化史逼迫我们不断提升对图像快速准确的处理能力,否则就会被环境淘汰掉。因此才会有“一幅图胜过千言万语”的说法。

准备

首先,你需要安装Anaconda套装。详细的流程步骤请参考《 如何用Python做词云 》一文。

助手好不容易做好的Excel文件restaurant-comments.xlsx,请从这里下载。

用Excel打开,如果一切正常,请将该文件移动到咱们的工作目录demo下。

因为本例中我们需要对中文评论作分析,因此使用的软件包为SnowNLP。情感分析的基本应用方法,请参考《如何用Python做情感分析?》。

到你的系统“终端”(macOS, Linux)或者“命令提示符”(Windows)下,进入我们的工作目录demo,执行以下命令。

pip install snownlp

pip install ggplot

运行环境配置完毕。

在终端或者命令提示符下键入:

jupyter notebook

如果Jupyter Notebook正确运行,下面我们就可以开始编写代码了。

代码

我们在Jupyter Notebook中新建一个Python 2笔记本,起名为time-series。

首先我们引入数据框分析工具Pandas,简写成pd以方便调用。

import pandas as pd

接着,读入Excel数据文件:

df = pd.read_excel("restaurant-comments.xlsx")

我们看看读入内容是否完整:

df.head()

结果如下:

注意这里的时间列。如果你的Excel文件里的时间格式跟此处一样,包含了日期和时间,那么Pandas会非常智能地帮你把它识别为时间格式,接着往下做就可以了。

反之,如果你获取到的时间只精确到日期,例如"2017-04-20"这样,那么Pandas只会把它当做字符串,后面的时间序列分析无法使用字符串数据。解决办法是在这里加入以下两行代码:

from dateutil import parser

df["date"] = df.date.apply(parser.parse)

这样,你就获得了正确的时间数据了。

确认数据完整无误后,我们要进行情感分析了。先用第一行的评论内容做个小实验。

text = df.comments.iloc[0]

然后我们调用SnowNLP情感分析工具。

from snownlp import SnowNLP

s = SnowNLP(text)

显示一下SnowNLP的分析结果:

s.sentiments

结果为:

0.6331975099099649

情感分析数值可以正确计算。在此基础上,我们需要定义函数,以便批量处理所有的评论信息。

def get_sentiment_cn(text):

s = SnowNLP(text)return s.sentiments

然后,我们利用Python里面强大的apply语句,来一次性处理所有评论,并且将生成的情感数值在数据框里面单独存为一列,称为sentiment。

df["sentiment"] = df.comments.apply(get_sentiment_cn)

我们看看情感分析结果:

df.head()

新的列sentiment已经生成。我们之前介绍过,SnowNLP的结果取值范围在0到1之间,代表了情感分析结果为正面的可能性。通过观察前几条数据,我们发现点评网站上,顾客对这家分店评价总体上还是正面的,而且有的评论是非常积极的。

但是少量数据的观察,可能造成我们结论的偏颇。我们来把所有的情感分析结果数值做一下平均。使用mean()函数即可。

df.sentiment.mean()

结果为:

0.7114015318571119

结果数值超过0.7,整体上顾客对这家店的态度是正面的。

我们再来看看中位数值,使用的函数为median()。

df.sentiment.median()

结果为:

0.9563139038622388

我们发现了有趣的现象——中位数值不仅比平均值高,而且几乎接近1(完全正面)。

这就意味着,大部分的评价一边倒表示非常满意。但是存在着少部分异常点,显著拉低了平均值。

下面我们用情感的时间序列可视化功能,直观查看这些异常点出现在什么时间,以及它们的数值究竟有多低。

我们需要使用ggplot绘图工具包。这个工具包原本只在R语言中提供,让其他数据分析工具的用户羡慕得流口水。幸好,后来它很快被移植到了Python平台。

我们从ggplot中引入绘图函数,并且让Jupyter Notebook可以直接显示图像。

%pylab inlinefrom ggplot import *

这里可能会报一些警告信息。没有关系,不理会就是了。

下面我们绘制图形。这里你可以输入下面这一行语句。

ggplot(aes(x="date", y="sentiment"), data=df) + geom_point() + geom_line(color = 'blue') + scale_x_date(labels = date_format("%Y-%m-%d"))

你可以看到ggplot的绘图语法是多么简洁和人性化。只需要告诉Python自己打算用哪个数据框,从中选择哪列作为横轴,哪列作为纵轴,先画点,后连线,并且可以指定连线的颜色。然后,你需要让X轴上的日期以何种格式显示出来。所有的参数设定跟自然语言很相似,直观而且易于理解。

执行后,就可以看到结果图形了。

在图中,我们发现许多正面评价情感分析数值极端的高。同时,我们也清晰地发现了那几个数值极低的点。对应评论的情感分析数值接近于0。这几条评论,被Python判定为基本上没有正面情感了。

从时间上看,最近一段时间,几乎每隔几天就会出现一次比较严重的负面评价。

作为经理,你可能如坐针毡。希望尽快了解发生了什么事儿。你不用在数据框或者Excel文件里面一条条翻找情感数值最低的评论。Python数据框Pandas为你提供了非常好的排序功能。假设你希望找到所有评论里情感分析数值最低的那条,可以这样执行:

df.sort(['sentiment'])[:1]

结果为:

情感分析结果数值几乎就是0啊!不过这里数据框显示评论信息不完全。我们需要将评论整体打印出来。

print(df.sort(['sentiment']).iloc[0].comments)

评论完整信息如下:

这次是在情人节当天过去的,以前从来没在情人节正日子出来过,不是因为没有男朋友,而是感觉哪哪人都多,所以特意错开,这次实在是馋A餐厅了,所以赶在正日子也出来了,从下午四点多的时候我看排号就排到一百多了,我从家开车过去得堵的话一个小时,我一看提前两个小时就在网上先排着号了,差不多我们是六点半到的,到那的时候我看号码前面还有才三十多号,我想着肯定没问题了,等一会就能吃上的,没想到悲剧了,就从我们到那坐到等位区开始,大约是十分二十分一叫号,中途多次我都想走了,哈哈,哎,等到最后早上九点才吃上的,服务员感觉也没以前清闲时周到了,不过这肯定的,一人负责好几桌,今天节日这么多人,肯定是很累的,所以大多也都是我自己跑腿,没让服务员给弄太多,就虾滑让服务员下的,然后环境来说感觉卫生方面是不错,就是有些太吵了,味道还是一如既往的那个味道,不过A餐厅最人性化的就是看我们等了两个多小时,上来送了我们一张打折卡,而且当次就可以使用,这点感觉还是挺好的,不愧是A餐厅,就是比一般的要人性化,不过这次就是选错日子了,以后还是得提前预约,要不就别赶节日去,太火爆了!

通过阅读,你可以发现这位顾客确实有了一次比较糟糕的体验——等候的时间太长了,以至于使用了“悲剧”一词;另外还提及服务不够周到,以及环境吵闹等因素。正是这些词汇的出现,使得分析结果数值非常低。

好在顾客很通情达理,而且对该分店的人性化做法给予了正面的评价。

从这个例子,你可以看出,虽然情感分析可以帮你自动化处理很多内容,然而你不能完全依赖它。

自然语言的分析,不仅要看表达强烈情感的关键词,也需要考虑到表述方式和上下文等诸多因素。这些内容,是现在自然语言处理领域的研究前沿。我们期待着早日应用到科学家们的研究成果,提升情感分析的准确度。

不过,即便目前的情感分析自动化处理不能达到非常准确,却依然可以帮助你快速定位到那些可能有问题的异常点(anomalies)。从效率上,比人工处理要高出许多。

你读完这条评论,长出了一口气。总结了经验教训后,你决定将人性化的服务贯彻到底。你又想到,可以收集用户等候时长数据,用数据分析为等待就餐的顾客提供更为合理的等待时长预期。这样就可以避免顾客一直等到很晚了。

祝贺你,经理!在数据智能时代,你已经走在了正确的方向上。

下面,你该认真阅读下一条负面评论了……

讨论

除了情感分析和时间序列可视化,你觉得还可以如何挖掘中文评论信息?除了点评网站之外,你还知道哪些舆情分析的数据来源?欢迎留言分享给大家,我们一起交流讨论。

如果你对我的文章感兴趣,欢迎点赞,并且微信关注和置顶我的公众号“玉树芝兰”(nkwangshuyi)。

如果你身边有好友正在做舆情分析的研究工作,也欢迎你把这篇文章转发给他们,共同学习和提高。

认清现实吧 中国大数据产业的痛点和困难

大数据作为一个新兴的产业,一直在处于舆论的风口浪尖。就像互联网+的概念一样,大数据被神话了,被送上了“宗教”的神坛。大数据企业总是有一个担心,生怕大数据被捧得的太高,将来可能会被摔的很惨。

2015年中国大数据产业的热度从贵阳大数据交易所开始,到9月国务院的2015第50号文《促进大数据发展行动纲要》进入高峰,相信10月份的乌镇互联网大会上,大数据还会是一个大的热点。

大数据论坛上,数据产品和解决方案被介绍的很多。数据给企业带来的具体价值、数据应用场景、大数据产业的痛点介绍的很少。中国大数据产业经历着很多痛苦,大数据产业前景很好,但是大数据企业却很难做大,很难实现质的飞跃。中国大数据产业的痛点和困难如下。

1 大数据企业众多而弱小,很难实现产业优势

中国大数据企业大概有200多家,将近60%集中在北京,以小微企业为主,年销售额达到十亿人民币的企业几乎没有。大数据产业处于春秋时代早期,各家诸侯割地而立,每家占领了一块小的细分领域,很难做大,都面临着同行的激烈竞争,有的领域例如舆情监控已成为红海。

大数据企业人数大多在几十人到几百人,少有千人以上的企业。没有一家大数据企业可以统领一个行业,没有一家企业占有细分市场10%的份额,没有一家大数据企业建立了行业标准,领导行业发展。

中国大数据产业处于极度分散状态,优秀的人才分布在不同企业,很难形成人才合力。各家企业规模小,很难在企业做深做大,很难利用大数据帮助企业实现业务提升。大多数企业的工具和数据很难满足企业整体的数据要求,中国的数据挖掘和分析产品也很难和国外的产品进行竞争。

大数据产业如果要形成产业优势,必须需要一批领军企业。参考国外大数据产业,中国在大数据基础架构,数据产品,数据工具、数据清洗和数据挖掘、数据分析、数据人才都需要产生一批标杆企业。每个领军企业都规模应该在千人以上,销售额应该在百亿以上,否则很难形成技术和人才优势,也很难利用大数据帮助客户实现业务提升。

贵阳大数据交易所《2015年中国大数据交易白皮书》提到2014年中国大数据市场规模为767亿元。这个数字看上去不错,估计其实真正和大数据工具和大数据产品相关的不足20%(业务价值提升)。大多数的经费都用于大数据基础平台(存储和计算)、咨询、报告等和业务价值提升相关度不大的领域。中国大数据市场销售额大多数集中在传统的IT企业例如IBM,Oracle,EMC,Intel,华为,联想等。真正大数据企业所有市场份额加起来可能就在百亿元左右。

中国大数据企业规模过小,领军企业缺少,行业过于分散,这些都是制约中国大数据产业发展的因素,也是产业做大的一个痛点。

2 外部数据是一个个孤岛,数据价值低

数据是大数据产业发展的基础,具有商业价值的数据可以帮助企业洞察客户、数字化运营、风险管控、精准营销、预测和决策等。具有商业价值的数据和商业分析真正能够帮助企业提升业务,创造出新的价值。

中国的大数据市场还不成熟,很多大数据企业拥的数据都是片段的数据,很难形成完整的,具有商业价值的数据。大数据市场的数据质量和企业的数据需求有较大的差距。外部数据大多处于孤岛状态,数据之间很少流动和整合;孤立、不流动、没有整合的数据很难帮到企业,很多需要数据的企业不得不从多个大数据企业采购数据,效率很低,采购来的数据价值不高,数据整合的难度较大,数据采购的整体费用过高。

大家都看到了数据分散的弊端,于是很多地方都建立了大数据交易市场,帮助大家进行数据交易和数据采购。由于缺少法律保护,很多企业不太想在交易市场进行数据交易,往往还是采用一对一的数据交易,这种交易方式可以保护交易双方的利益。具有商业价值的数据还在开发中,大数据交易市场,缺少大量可以进行交易的数据。大数据交易市场这种商业模式,还需要用很长的时间去证明。

中国质量最好的数据在金融行业、BAT、电信运营商,这些企业比较谨慎,很难向外部输出数据。这三大行业自身的主营业务也不在数据,其数据产品生产和输出的愿望也不强烈。政府的数据正在逐步开放,但是其数据质量、集中度、输出方式等多存在很大多挑战。在中国大规模的数据开放,至少需要3年时间才能达到商业应用要求。

3 大多数企业客户,对数据商业应用敏感度低

大多数企业对数据有需求,但是其对数据商业敏感度很低。对数据商业应用的场景以及数据技术了解很少。即使是数据商业敏感度较高的银行,至少要沟通三次以上,其才能够建立起数据价值理念。其他行业例如制造业,房地产业,零售业,他们的数据商业敏感度更低。甚至万科的王石也大声疾呼,不要和房地产业谈大数据应用,房产行业数据还不全,很多还是手工数据。于是某个领先的电商开始帮助万科进行数据规划建设,研究大数据在房地产行业的应用。

已有的大数据企业商业案例中,大部分都是大数据企业主动去找客户谈合作,为企业提供数据产品、数据工具或数据技术,目的是帮助企业提升业务。但是这种商业模式很累,市场很难被引爆,被动的数据商业应用,往往和业务结合较弱,无法迅速帮助企业利用数据提升业务,同时也无法解决业务发展瓶颈。

企业内部人士深度了解业务需求,他们缺少的是市场数据和消费者反馈,缺少的数据分析方法和工具。企业内部人士更应该成为大数据商业应用的主力,参加一些行业活动,从需求出发,主动寻找数据和解决方案。移动互联网时代,商业竞争策略很清晰,一个是快,一个是要利用数据进行决策。

大数据产业的发展,不仅仅是大数据企业自身的事情,也是各家企业自身的事情。企业客户也应该依据业务需要,主动到市场寻找数据和解决方案,提升数据商业敏感度,从业务场景出发,寻找具有价值的数据。

4大数据技术和产品同业务结合深度不够

市场上所有大数据企业和客户都面临一个难题,就是数据解决方案同客户业务结合的深度不够,数据对业务整体推动效果不如期望,这也是大数据产业爆发的一个痛点。由于外部数据质量、企业用户数据敏感度、企业管理方式、商业数据人才等问题,大数据解决方案很难和业务深度结合。

大数据核心价值就是揭示事务发展规律,帮助企业利用数据进行科学决策。目前大数据的商业应用领域主要集中在数据采集、数据存储、数据计算、用户画像、精准营销等领域。大数据最具商业价值的预测和辅助决策功能并没有被充分利用。特别是在重大战略决策方面,大数据的作用并不明显。企业的产品开发,市场策略,战略决策还是依靠过去的精英决策和经验主义。未来社会只有两类企业,一种是利用数据发展的企业,另外一种是不重视数据被淘汰的企业。

大数据企业如果想发展壮大,如果想成为行业领先的企业,其必须放弃短期利益,深入到客户的运营中去,了解客户的数据,了解客户的业务,了解客户的商业需求。同时利用数据了解客户,了解市场,了解业务场景。数据和业务深度结合的核心是掌握正确的数据、正确的方法、正确的工具。业务人员要懂数据,技术人员要懂业务。复合型数据人才是数据生意的关键,业务人员掌握数据技术的门槛较高,但是技术人员了解业务的门槛很低,复合性人才倾向于从技术人才培养开始。

企业内部的数据人才和大数据企业的数据人才需要互相学习,了解对方环境和需求,在同一个平台上进行对话和沟通。数据团队需要深入了解业务场景和背后的规律,从业务出发,从场景出发,从数据出发,将大数据解决方案同业务深度结合,利用数据推动业务发展,发挥大数据预测规律的核心价值。

5 专业数据挖掘工具和人才缺失

传统的数据挖掘工具和BI系统存在很久了,通过各类报表展示,让管理层了解企业运营信息,过去的确帮助企业提高管理水平,达到了预期目的。

在大数据时代,企业需要的是实时数据,需要的是高效工具,需要的是决策支持和预测。传统的数据挖掘工具的性能和灵活性已经不能满足企业的需要,另外非机构化数据的应用也对传统数据工具提出了挑战。BI领域中的SAS,SPSS,TD等数据工具越来越被边缘化,R语言正在成为数据统计和可视化的新宠。

数据的时间价值正在得到重视,特别是金融企业,所有的业务部门都期望在最短的时间里,看到资金使用情况,客户交易情况,风险管控情况。企业越早了解信息,就会越早进行决策,时间就是Money。过去数据需求可能是T+5或者T+30,现在的数据需求往往是T+1或者T+0,数据实时性、准确性、相关度被提到了一个非常重要的地位。业务的需求已经很明显了,但是数据工具和人才却是一个很大的挑战。

中国200多家大数据企业,看到了大数据产业的曙光,看到了大数据产业的价值,同时也在经历着大数据企业的痛苦。大数据产业发展很快,市场正在逐步变大,但是其产业优势不明显,优势企业很少,数据商业化较慢,市场还不成熟,客户数据商业敏感度较低,缺乏高质量数据工具和人才。所有大数据企业内心的感受就是,站在了时代的风口,选对了方向和行业,但是发展壮大还是很难。200多家大数据企业正在努力耕耘着大数据产业,痛并快乐着。

以上是小编为大家分享的关于认清现实吧 中国大数据产业的痛点和困难的相关内容,更多信息可以关注环球青藤分享更多干货