类脑舆情分析-疫情相关

在之前的类脑人工智能项目中,我们的重点在于趋势预测,但广义的预测当中包含了分析预警,最近几周为了分析疫情数据我做了这部分模型来起到分析预警的作用。下面进行介绍。

新冠肺炎疫情期间出现了很多热点话题。疫情初期的热点话题中有令人感到不安的“死亡”、“允悲”、“失望”等关键词,防控措施出台后热点话题的走向逐渐变为“加油”、“致敬”、“希望”等。在一个个新闻诞生的时候,它们或许能够激发人们积极的讨论或是消极的批判。负面话题在大范围传播的同时容易引起恐慌,政府需要合理安抚群众情绪,尽快找到负面新闻的产生原因从而解决这些问题。具体code请看github相应部分,不在文章中记录。

为了及时对负面热点话题进行预警,趋势预测小组在这段时间建立了一个能够迅速得到反馈的预警分析模型。简单来说,我们的模型分为两个阶段,在第一个阶段中,模型处理输入的大批量微博文本,通过自然语言处理技术和聚类算法进行热点识别,并且根据热门程度进行排序,第二个阶段中我们对每一个话题下的所有微博进行情感分析,将其分为积极、中立、消极三类。某一热点涵盖微博的负面情绪比例达到阈值时进行预警。下面我们完整的对这个模型进行介绍。

第一阶段

在热点识别的过程中,我们使用了高效且准确的Single-pass聚类算法。它是一种增量聚类算法,每篇文本只需要“流过”算法一次,所以被称为Single-pass。而且其不需要指定类目数量,通过设定相似度阈值可以控制聚类团簇的大小。

Single-pass算法顺序处理文本,以第一篇文档为种子,建立一个新话题。之后的文档计算与已有话题的相似度,将该文档加入到与它相似度最大的且大于一定阈值的话题中。如果与所有已有话题相似度都小于阈值,则以该文档为聚类种子,建立新的话题类别。其算法流程如下:

(1) 以第一篇文档为种子,建立一个话题;

(2) 将文档D向量化,可以采用VSM(vector space model)或doc2vec等算法

(3) 将文档D与已有的所有话题均做相似度计算;

(4) 找出与文档D有最大相似度的已有话题;

(5) 若相似度值大于阈值,则把文档D加入到有最大相似度的话题中,跳转至(7);

(6) 若相似度值小于阈值, 则文档D不属于任一已有话题, 需创建新的话题类别,同时将当前文本归属到新创建的话题类别中;

(7) 当前聚类结束,等待下一篇文档。

第二阶段

在第二阶段中,我们对top10的热点话题进行预警分析。现有的可以用来做中文情感分析的工具很多,比如甲骨NLP、NLTK、SnowNLP、腾讯文智中文语义平台、百度AI开放平台等。经过简单测试后,我认为百度提供的接口最为高效,所以在这部分调用了百度情感倾向分析API进行实现。我们的逻辑如下:遍历top10话题,对当前话题下所有微博进行情感分析,统计负面微博比例。流程结束后将负面情绪高于阈值的话题进行预警。

模型优缺点评价:总体来说我们提供了一个能够实时进行预警分析的模型,这一模型包含的两个模块相互独立,算法层面上可以进一步优化。由于Single-pass的特点,模型可以在爬虫获取微博的同时进行聚类,非常高效。而且百度提供的平台能够得到极高准确率的情感分析,让预警分析成为可能。但是由于我们在热点识别和自然语言处理方面经验有所欠缺,可能没有用到现阶段最好的算法来进行处理,这部分在后期我们可以逐渐优化。

下面是数据分析结果:

我们获取了2020年3月14日14点到20点的51432条数据,利用jieba分词来对微博内容进行切分,然后按照上述算法流程进行了实现。我们发现top10话题包含了4039条微博,下面展示统计结果及预警指数。

img

img

从第一幅图我们发现,3月14日下午的热门话题大多与新冠肺炎相关,其中境外疫情相关话题非常热门,引发了微博上大量的讨论。从第二幅图我们可以看到,意大利女孩作画感谢中国、武汉加油这类话题非常正能量,几乎不存在负面信息。而意大利疫情因为扩散非常迅速,加之死亡等关键词的大量出现,预警指数极高。另外一个有趣的点是方舱医院主题曲引发了人们强烈的负面情绪,我在微博进一步了解后发现,不少网友认为视频中小孩妆容很恐怖,视频风格不正面,拍摄组织者别有用心。通过这些分析可以看出我们的预警分析非常有效。