疫情防控的关键阶段,各种信息漫天飞,有利的、不利的,真实的、虚假的,我们需要努力分辨。雾里看花,我们需要借一双“慧眼”,“慧眼”就是以算法驱动的热点事件跟踪系统。
最近,笔者参与了一个企业舆情分析系统的建设,亲身体验了疫情检测系统建设的全部过程,包括系统架构、算法设计、代码实现、系统运行等步骤。现在,向大家分享该系统设计、实现的简单经验。
企业的需求是这样的
企业希望利用该系统掌握企业舆情,并满足企业相关人员,快速定位信息,反馈热点问题,实现与客户和大众的密切沟通。同时,满足企业对网络热点事件和热点专题发展趋势的追踪等需求。
系统设计需要的数据来源、数据存储、数据计算
- 信息的来源。目前头条、微信等社交媒介是主流媒体,短视频、直播形式非常火热,微博、门户媒体、各种论坛次之。由于网络媒体舆论信息的产生和传播具有自由、传播快、传播面广、裂变迅速等特点,单一分析几个媒体不能获取全面有效的信息,所以要全面覆盖分析各种媒体的信息。经过分析比较,我们选择了100多个媒介作为数据源。
- 数据存储。由于数据来源比较广泛,且数据量较大,所以要选择选择存储功能强大的云数据库。我们选择的是HBase,HBase是基于 Hadoop 的分布式数据库,支持海量的PB级的大数据存储,适用于高吞吐的随机读写的场景。
- 数据计算。数据来源比较广泛,并且数据量较大,计算起来需要强大的算力,所以我们也选择云计算的方式计算。具体的计算框架选择 Hadoop 计算框架。通过MapReduce编程,收集数据,处理数据。
系统编程需要的算法
算法就是计算的过程,该计算过程取某个值或值的集合作为输入并产生某个值或者值的集合作为输出,从这种角度理解,算法就是把输入转化为输出的一个计算步骤的序列。
实现舆情监测的算法是这样的,通过网络蜘蛛对互联网海量信息自动抓取,然后进行数据分析处理,输出网络舆情的状况,公司相关人员作出反馈。
具体来讲,舆情采集就是使用,例如关键词查询,还有锚文件的处理,正文的抽取,页面解析等,将数据进行采集,然后存储到数据库里面。
舆情的分析就是对采集的数据进行处理。数据分析包括热点发现、情绪分析、以及趋势分析等等,经过分析计算后形成舆情报告。
![145ad42287c912d2438e7e8cc893fd6c.png](https://i-blog.csdnimg.cn/blog_migrate/7b17b091a7923bff0f455f83ee9871aa.jpeg)
舆情系统的执行模型
上述的过程只是宏观的简单的环节,具体的实现过程要更加复杂。比如蜘蛛抓取环节,可能需要建立一个统一的解析模板,爬虫还需要进行监控。数据还需要进行清洗、去重等等。
热点发现、情绪分析、舆情趋势是如何通过算法实现的
热点发现算法。热点发现算法本质上是数据挖掘上的聚类算法。通过将预处理后的文本信息,归入不同的话题,并根据需要建立新话题,话题聚类的质量与算法本身和算法中设置的参数阈值密切相关。常用的聚类算法有Single pass算法、KNN聚合分类算法、支持向量机算法、K-means算法、SOM神经网络聚类算法。以上算法都有各自的优缺点,需要综合使用,扬长避短。
![7cc1dcfeb6957dd8bd29f0d69d35235a.png](https://i-blog.csdnimg.cn/blog_migrate/b1da77975fe1a892ad967acb1c536220.jpeg)
热点发现算法
情绪分析算法。情绪分析是计算实现的难点,也是自然语言处理领域的一个研究热点。情绪分析旨在通过上下文的理解,并对语义中的情绪进行建模判断,从而确定是正面情绪还是负面情绪。情绪分析一般有两种方法实现,一种基于机器学习的方法,另一种是基于字典的方法。
![98b99f82b587fd08515de07735a43055.png](https://i-blog.csdnimg.cn/blog_migrate/64fdfdb969d450346c0d2c0b7859517a.jpeg)
情绪分析算法
- 基于机器学习的方法包括:朴素贝叶斯算法(Naive Bayes, NB)是一种基于贝叶斯定理的简单概率分类器,适用于输入维数较高的情况;最大熵原理算法(Max Entropy)或多项Logit模型算法通常用作朴素贝叶斯方法的替代方案;支持向量机(SVM)算法的本质是找到一个超平面,尽可能地将文档向量从一个类分离到另一个类。
- 基于字典的方法(Lexicon-based approaches )是一种典型的无监督方法,通过情绪词汇的查获得文本所表达的情感。
趋势预测分析方法。趋势预测分析法亦称为时间序列预测分析法,是根据热点事件发展的连续性原理,应用数理统计方法将过去的历史资料按时间顺序排列,然后再运用一定的数字模型来预计、推测预测的方法。用传统办法基于一组热点数据按照时间进行比较排序比较容易实现,如果用机器学习算法做时间序列预测,处理的数据会变得很复杂。
![e71fa736f17bdb868e9c6ee8d55c6cba.png](https://i-blog.csdnimg.cn/blog_migrate/e553acdbdc02fadd2d5d3892d93d3972.jpeg)
趋势预测算法
上面我们总结了以舆情监控系统的实现思路、架构和具体用到的算法,这是我参与建设的舆情分析系统一点总结,现在分享给大家,若读者有所收获,将不胜欣慰。