Disaster Watch:自然灾害绘制平台
文 / Abraham Poorazizi、Mahmood Khordoo 和 Mahsa Amini
Disaster Watch 是 #PoweredByTF 2.0 挑战赛的获胜作品,这是一个自然灾害绘制平台,通过收集 Twitter 中的数据、提取推文中与灾害相关的信息,并将结果可视化呈现在地图上。
该平台让用户一目了然地看到不同地理区域的灾害信息,了解由灾害带来的物理制约因素(如:不可通行的桥梁或道路),从而采取周全的行动。这类信息可帮助政府与救灾人员(如:人道主义组织、救灾机构或当地救灾人员)回答以下问题:
灾害在何时发生?
受影响的区域在哪里?
灾害的影响有哪些?
注:Disaster Watch 链接
https://disaster-watch.netlify.com
这些问题的答案可以提供相关事件的空间(何地)、时间(何时)和主题(何事)的信息。获取实时信息的分析在灾害的各个阶段对决策制定者来说都十分必要,无论是灾害发生时的准备与响应还是事后的处理与恢复阶段。
挑战
社交媒体在灾害期间发挥着越来越重要的作用。在森林大火、地震、洪水和龙卷风期间,人们和新闻媒体(无论是灾害范围之内的居民,还是灾害范围之外的人们)均在使用社交媒体来整理并分享与灾害有关的信息。
例如,在 2013 年的加拿大亚伯达卡尔加里洪水期间,人们便大量使用社交媒体发布有关正在发生的事件的信息、照片和突发新闻。除了市民外,卡尔加里的官方应急响应机构,如卡尔加里警察局和卡尔加里市市政府,也在使用社交媒体来传播安全相关的关键信息和最新进展。这表示市民和应急响应组织均会在发生紧急事件的情况下,利用社交媒体的力量来传播实时信息和进展。
然而,在考虑将社交媒体作为救灾信息来源时,也存在着一些挑战。
尤其是社交媒体流中包含着大量无关消息,如谣言、广告,甚至还有错误信息。因此,使用推文等社交媒体数据的一个重大挑战就是如何处理这些数据,并向救灾人员和市民传播具有可信度的相关信息。另一个挑战源自社交媒体上充斥着海量信息,以及如何实时处理这些信息。最后,社交媒体消息篇幅简短(例如推文仅含有 280 个字符)且形式随意,因此在采用与处理结构化长文本(如新闻报道)相同的方法来处理这类文本时,会具有一定的挑战。在非正式的书面内容上使用这些方法并不会始终产生相同的结果,并还有可能导致糟糕且具有误导性的结果。
Disaster Watch 即是解决这些问题的良方。平台旨在将推文转换成可靠的信息源,从而让人们在救灾应急响应和灾害恢复期间可以有效地运用社交媒体消息。Disaster Watch 会使用机器学习来识别与灾害相关的推文、提取地点名称,并可视化结果。我们在下一节展示了平台的技术架构,以及系统的运行方式。
解决方案
Disaster Watch 使用以下开源软件、开放标准和开放数据构建而成:使用 TensorFlow 2.0、Node.js、 Express、Vue.js、Vuetify 和 Mapbox GL JS 来构建系统组件。Disaster Watch 会使用 Twitter 的流式传输 API 来收集推文,然后使用由 TensorFlow 2.0 构建的深度学习模型来分析这些内容,并在地图上显示与灾害有关的推文。该应用托管在 Amazon 的 AWS 基础架构上。
Disaster Watch 的整体架构
工作流的第一步是收集数据。后端 API 会通过基于关键字的采样方法,来收集使用 Twitter 的流式传输 API 得出的推文。在这方面,工具使用 CrisisLex.org 开发的灾害术语参考字典中的内容来作为关键词。CrisisLex 是一个词典,内含 380 个与灾害相关术语,在 2012 年 10 月至 2013 年 7 月期间,这些术语频繁出现在美国、加拿大和澳大利亚不同类型灾害的相关推文中。
注:CrisisLex.org 链接
http://crisislex.org/
这个 API 将把推文馈送至由 Python 版 Tensorflow2.0 构建并作为 Flask 应用对外提供的深度学习模型。这种模型会分析推文的文本内容,以评估这些内容与洪水、地震、飓风、龙卷风、爆炸和炸弹的相关性。然后工具会将相关推文发送至地点解析器,然后解析器会从文本中提取地点名称,并对其进行地理编码。最后,系统会将这些结果发送至前端进行可视化呈现。
注:Flask 链接
https://flask.palletsprojects.com/en/1.1.x/
文本处理
内容分析的第一步是训练文本分类器,以在作进一步分析之前删除无关消息。我们会在本项目中使用监督式深度学习方法来完成文本分类任务。
分类器采用一组由 CrisisLex.org(称作“CrisisLexT6”)提供的带注释推文。这些推文中包含来自 6 种不同灾害类别的 60,000 条推文,其中包括洪水、地震、飓风、龙卷风、爆炸和炸弹,并会按切题与偏题分为两类。
注:CrisisLex.org 链接
http://crisislex.org/
为了准备用于训练过程的推文,需要执行一系列标准的文本预处理操作。首先,删除包括网址、用户引用符号、标点、空格和特殊字符在内的所有非文字内容。然后,为避免变量过多,将大写字母改为小写,并删除最常见的地点名称。接下来,进行重新采样以尽量消除样本类型的不平均。然后在序列化过程中将每条推文拆分成多个分词。然后对剩余分词执行矢量化处理,以使用嵌入词来创建特征向量。最后,借助 Keras’s Sequential model API,使用特征向量来训练模型。如需了解详细信息,请参阅以下手册:建模、分析。
注:建模 链接
https://nbviewer.jupyter.org/github/khordoo/disaster-watch-classifier/blob/master/notebooks/disaster_identification_using_tweeter_colab.ipynb
分析 链接
https://nbviewer.jupyter.org/github/khordoo/disaster-watch-classifier/blob/master/notebooks/crisis_identification_explanation.ipynb
在过滤掉无关推文后,系统会将切题的推文分成六类,然后将这些推文发送至名为 CLAVIN 的地点解析工具中。地点解析识别了文本中隐含的空间信息(例如地点名称),并将其与地理坐标关联起来的过程。最后,系统会将结果(包括推文 ID、文本、类别、模型准确率、地点名称和地理坐标)发送至客户端,以作可视化呈现。
注:CLAVIN 链接
https://clavin.bericotechnologies.com/
结论
从近期美国中西部的龙卷风,到日本的地震,我们已在一些现实世界的灾害中观察到了 Disaster Watch 的表现。结果表明,Disaster Watch 可以检测到与灾害相关的推文,这些推文可以及时提供有关事件地点,以及正在发生事件所造成的影响的信息。
这一结果突显出了社交媒体消息所提供的主题(语义)、时间和空间信息的价值。Disaster Watch 还彰显出社交媒体消息作为信息补充来源的潜力,其可帮助居民、决策制定者和救灾人员回答“何地”、“何时”以及“何事”的问题。
在当前实施过程中,Disaster Watch 仅使用 Twitter 作为唯一的信息来源。尽管这款产品看上去前景无限,但整合其他信息来源(如官方新闻媒体和其他社交平台)将有助于优化数据验证过程,从而预测结果准确率。此外,当前的原型仅可使用文本内容来检测灾害事件,而忽略可视化内容(如:照片或视频)。俗话说,“一图胜千言”,分析社交媒体消息中的可视化内容可以提供上下文信息,更有助于了解相关状况。在这方面,将图像识别服务集成到 Disaster Watch 中不失为一个有趣的方向。
欢迎您使用我们的实时网络应用,并探索 GitHub 代码库来深入了解:
Disaster Watch
(https://disaster-watch.netlify.com)机器学习模型
(https://github.com/khordoo/disaster-watch-classifier)后端 API
(https://github.com/mepa1363/disaster-watch-backend)前端应用
(https://github.com/mepa1363/disaster-watch-frontend)