在日常生活中,有各种各样的资讯、社交平台。这些平台充斥着大量信息,这些信息中隐含了许多有用数据,但是这些数据无法之间获取,且难以展示,于是就有了舆情分析系统。
舆情分析系统是一个综合的系统,专注于这些数据的某些方面进行分析、显示。比如挖掘当今流行的话题、话题的舆论、公众情感等。舆情分析有助于对社交资讯等平台的信息进行管理挖掘,并展示给用户。
本文要做的就是实现一个舆情分析系统,本文会专注舆情分析系统的某几个部分。舆情分析系统的实现是多样的,为了方便本文使用无代码平台smardaten,使用smardaten可以减少大量开发工作,快速开发。
舆情分析系统是一个综合性很强的系统,里面涉及爬虫、情感分析、主题词提取、数据可视化等技术。舆情分析系统整体可以分成三个部分,分别是数据采集、数据分析、数据展示。整体如下,其中上层是用户直接接触的:
首先需要数据,数据的来源是多样的。可以使用爬虫爬取,也可以使用开放平台的数据或者内部数据。把数据整理成固定的格式,便于后续处理。
舆情分析系统的数据可以是微博热搜、抖音热榜、百度热榜等。这些榜单话题对应的评论也是非常重要的信息。
得到数据后,需要对数据进行分析处理。比如分析等关键字,或者话题情感分析,又或者群众的心理变化等。
分析完数据后,就需要展示数据了。相比之下数据的展示是最直观的,也是客户直接接触的。很多时候数据大屏会有一种科技感,让客户感觉非常高端。客户高兴,才能保证前两部分有效。
数据展示的方式是多样的,情感的分布可以用饼图展示,情感变化趋势可以用折线图展示,当前话题可以用词云展示。除了这些还有许多其它展示方式,在后续实现时详细介绍。
smardaten是一个无代码平台,可以让用户专注于程序的逻辑,而不用编写复杂的代码,快速开发应用程序。smardaten使用可视化的方式构建程序,平台中内置了许多组件,包括布局、模板、图表、多级菜单等,使用时直接拖拽即可。
使用smardaten可以快速开发许多复杂应用,比如GIS分析、知识图谱、数据大屏等。以“电力行业-分布式光伏服务平台”为例,页面需要多级菜单、图表、分页等功能,使用smardaten可以很快速实现这些功能,下图是一个示例。
smardaten还支持各种主流数据源,包括MySQL、Oracle、Access等常用数据库,还有图数据库Neo4j等,另外还支持Rest-api等,以下是一个示例:
除了直接从数据库获取数据外,也可以采集数据经过ETL统一处理得到我们想要的数据形式。更方便处理。
另外,系统中还需要一些逻辑控制。在smardaten中,逻辑也可以用可视化的方式实现,比如点击按钮后需要做出各种响应,这些响应可以用列表的形式展示出来,方便用户设置:
不同的动作对应不同的子操作,因此可视化的方式也能实现非常复杂的逻辑,开发复杂程序也没有问题。正是因为开发方便,因此选用smardaten平台开发。
另外smardaten中内置了商超,可以下载模板应用,具体见:http://appstore.sdata1010.cn/
smardaten可以直接直线使用,也可以离线部署,具体参考:https://s3.smardaten.com/ ,我们直接直线使用,构建应用。在实现系统时,我们可以把系统分成三个部分,分别是:数据接入、舆情分析、数据展示。下面分别实现各个部分。
在开始创建应用前,需要准备好数据。数据的来源可以是开放平台的api,也可以是自己的数据库。本应用使用数据库存储数据,smardaten支持MySQL、Oracle、MongoDB、SQLServer各种主流数据库,具体使用大致相同,本应用使用MySQL作为数据源。
首先进入主页面:https://s3.smardaten.com/home,鼠标移至左上角、选择数据源、选择MySQL、填写连接信息。具体步骤如下:
在填写数据库连接信息时,主要填写三个部分,具体如下图:
分别为:
填写完成后,可以点击测试连接测试连通性。之后点击保存即可。保存后,此时数据还未真正接入,我们还需要采集数据,设置采集规则才行。设置完采集规则后,点击开始采集,此时输入才真正接入资产,我们可以在资产列表看到采集结果:
在本次案例中,数据库主要有两张表,表的字段和表的关系如下:
现在数据接入完成,下面就可以对数据进行处理了。
来自多个数据源的数据通常是不统一的,因此需要对数据进行处理。这里的处理包括数据清洗、数据整合等。两者都可以使用数据流来实现,数据流的创建如下:
一些简单处理工作可以用格式化来处理:
整合两张表的数据,则可以处理字段,然后把数据建表输出,此时运行后可以得到新的表:
创建新表后,可以在数据图书馆中查看新表对应的资产:
后续可以直接使用这些数据用于展示。
舆情分析可以有很多层面的分析,首先最基础的就是文本情感分析。在本次应用中我们假设已经完成这部分操作,在此基础上做宏观的分析。下面列举几个本应用要实现的分析:
除此之外也可以添加一些其它分析,具体实现与上面是类似的。上述几种分析也可以使用数据流来分析。
在创建数据流后,可以对数进行各种操作,包括字段选择、聚合、排序等。首先我们完成上述第一个统计,即计数,我们要统计评论表sentiment字段的具体情况,此时数据流可以如下图:
在输入数据源中选定comment表,并在统计中选定sentiment字段即可。最后输出的输入就是统计结果。
第二个则是需要分组统计,为了方便我们可以把时间转换成年月形式,再对时间进行计数,这样可以达到同样的效果,具体数据流如下:
其中时间格式化操作可以把时间转换成特定格式,如果想观察情感按月的变换情况,则把时间格式转换成年月,如果想观察情感按天的变换情况,则把时间格式转换成年月日即可,具体操作如下:
如果想要应用更丰富,也可以作为交互,让用户选择以何种方式统计。
然后是最后一个,第三个分析需要进行连表操作,连表操作可以用连接实现,此时数据流如下:
对topic、comment两个表进行连接,然后再统计comment的sentiment字段。这样我们就完成了分析操作了,通过拖拽修改数据流,我们可以完成许多非常复杂的分析。接下来就是把数据展示出来了。
在展示之前,还需要创建应用,依次:创建应用、WEB+移动端、输入应用名称、完成创建,具体操作见下图:
在创建应用后会进入开发应用的界面,界面主要分为四个部分,各个部分负责不同的功能,左侧负责页面的管理,可以创建、绑定页面;右侧为具体的设置信息,可以完成组件的修改、数据绑定等;顶部负责添加组件、设置布局等操作;中间则是效果预览。具体如下:
创建好应用后就可以完成后续的工作了。
下面我们设计一下应用的整体框架,应用分为三个页面,分别为热点话题、情感分析、情感监测。
其中热点话题用来展示话题数据,情感分析则用来展示评论的情感分布,而情感检测则是展示情感按时间变换的趋势。知道这点后就可以在应用中添加对应页面了,在页面左上角部分可以添加导航和页面:
热点话题主要是展示话题信息,可以根据不同作者不同列进行展示,这里我们用三列布局嵌套表格来实现:
标题部分可以和作者字段进行绑定,这里我使用固定值。下面就是把各列与具体数据绑定了,点击某一列,选择高级开发,此时列表会有一个按钮,我们可以在按钮配置中去掉该按钮。下面要做的就是把组件添加上去,并绑定数据,左边选择要显示的字段,右边将字段与资产绑定起来,这样数据变换时页面也会发生变换:
另外两个也执行同样的操作即可。如果想要更丰富,可以对不同列执行不同的筛选。下面是显示效果:
我们还可以在此基础上进行一些美化工作。下面就是完成情感分析部分了,情感分析可以饼图来实现。不过只显示情感分布有些单调,可以显示一些其它数据,这里就展示部分积极和部分消极评论,整体布局如下:
其中上方和左侧的显示操作与前面没有区别,这里不再赘述。下面我们来上述饼图的数据绑定。
饼图数据可以是静态数据,也可以绑定资产,这里选择3.2中第一个数据流对应的资产,绑定成功后就可以显示积极消极评论的情感分布情况:
第二个饼图可以绑定类似的资产,这里我没有额外去创建。
最后就是显示情感监测了,具体操作与饼图非常类似。我们在图表中选择折线图:
然后和饼图一样绑定资产,这里绑定3.2中第二个数据流对应的资产。为了丰富页面,我们可以把第三个资产的数据也显示在当前页面。我们可以使用页签来显示,选择不同话题的页签就展示不同的数据,首先把页签添加到页面,并设置页签的条件:
这样我们就完成了应用的搭建。不过还有许多细节值得去修改的。
这里介绍了部分分析的具体操作,我们可以对系统做更丰富的分析,下面是最终的效果:
3.6 其它
在实际应用中,可以展示内容可以更加丰富。smardaten中也提供了更多丰富的展示组件,比如可以使用更丰富的图表展示,在smardaten中还有雷达图、3D图等。
或者可以分地区展示。在smardaten中提供了地理位置相关的组件,如果可以获取话题、城市信息,则可以结合展示:
系统整体有三个部分,分别是数据、分析、展示。数据的来源是多样的,因此需要进行特征数据,在smardaten中可以用数据流实现,根据不同的要求创建不同的数据流。而分析在本系统中只做了情感分析,这里可以使用开放平台的api实现,或者可以自己额外编写程序。最后则是展示,不同的数据使用不同方式展示,最直观的展示就是使用图表。展示的组件需要与数据绑定在一起。更多内容可以参考:https://s3.smardaten.com/ ,读者可以自行体验。