net实现基础的舆情监测系统思路

.net实现基础的舆情监测系统思路

前段时间因公司项目需求,开发了一个比较基础的舆情监测系统,实现的主要思路如下:

  • 1数据采集
  • 2数据索引
  • 3数据分析
  • 4舆情监测平台

数据采集


数据采集主要实现对监测站点(网站、论坛、微博)数据的抓取。这部分我采用的是.net开源数据爬虫soukey,通过soukey配置监测站点及数据抓取的规则(具体配置规则可查考网上的教程或者直接看源码),soukey支持多任务多线程操作,并可把抓取的数据直接导入数据库中。导入数据库的过程,针对相同URL的网站数据进行筛选不要重复导入,建议在数据库中建个触发器过滤相同URL的数据。但需要注意的是针对微博的数据则需要对数据进行更新,因为微博除了发表内容外,还包含了转载量、点赞数、评论数这些内容是具有时效性的根据你的抓取周期,动态更新。

数据索引


通过数据采集把数据加入数据库后,要对数据进行索引,这里我使用了lucene,选择的原因:1查询效率高(如果你的项目是大数据可以考虑使用分布式lucene项目solr,如果单纯监测几百几千个站点的信息,lucene足以应付),2对中文分词的支持(盘古分词可集成进lucene),3提供的查询API种类多,可根据API实现相似文章推荐,原文追溯等功能。具体内容请参考
结合soukey周期抓取数据耗时,使用FluentScheduler(nuget可以下载,使用很简单)定时器,定个固定的时间周期,定期对数据进行索引,具体怎么建索引请参考lucene的书籍(没有.net版本的书,只有java的,但其实是一样的,.net的lucene.dll就是照着java版写的)

数据分析


包括热点分析、情感倾向分析、传播路径分析、专题事件分析等,这里我就讲下情感倾向分析(其他的几点都是业务上的分析,只要业务了解,不存在实现难度)。
情感倾向分析,这个问题我琢磨了很久,解决的根本在于把文章按句子进行分解,识别主语、识别负面词(词库自己整理搜集)、正面词判断句子正负面,然后综合文章正负面,然而,如何将语句中的主语抓取出来,网上能够查阅到的资料非常有限,我暂时没解决,我目前实现的思路是根据系统使用用户行业,定义一些评价对象,如:城管局,你可以定义城管、城管局长(局长名字)、副局长(副局长名字)等等。然后在文章情感倾向分析的过程中,判断文章内容中是否包含评价对象,如果有则判断评价对象前后间隔N个内是否包含正负面词汇来判断文章的正负面,如果文章内容中没有评价对象,则可以认为该文章与用户无关,无论多负面或正面对于用户来说都是中性的。
备注:情感分析的准确性,主要在于你对词汇搜集配置的完整性,分析的过程比较耗时,建议在建索引的时候,同步进行分析,把分析结果存入索引中。对于情感分析也应该考虑增加人为辨识的功能,可提供用户修改对文章的正负面功能。

舆情监测平台


舆情监测平台主要功能包括首页、舆情数据、舆情分析、舆情简报、舆情事件、舆情设置。
首页:展示舆情热点、舆情走势、热点词库等信息。
舆情数据:根据用户设置的舆情关键字进行数据的检索,对数据可在线查看,并提供原文跟踪与类似文章推荐的功能。微博数据可查看评论数、点赞数、转载数。包括常规数据与预警数据。预警数据根据配置可自动发送邮件或短信的形式反馈给用户。
舆情分析:根据不同的分析维度对数据进行图表化得分析展示。
舆情简报:按照时间查询条件生成在符合时间周期内的舆情简报,主要包括图标展示与数据内容展示。
舆情事件:以关键字与搜索周期组合的形式定义一个事件,然后对数据进行查询分析,得到针对该事件的图表化分析结果+列表数据
舆情设置:配置舆情关键词,预警关键词,评价对象,正负面分析词典。
实现过程中图表这块用的是highcharts,前端涉及的日期的一些查询按日、周、月、年一些转化用的是moment.js;生成舆情简报主要用的是aspose.word;定时索引更新过程中用到了FluentScheduler。

你可能感兴趣的:(舆情监测系统,.net,舆情监测)