Learning Dynamic Context Graphs for Predicting Social Events

论文主体

paper:"Learning Dynamic Context Graphs for Predicting Social Events".

code:https://github.com/amy-deng/DynamicGCN

动机

  • 对社会动荡等社会事件的预测是一个重要而具有挑战性的问题
  • 为便于人类分析与理解,需要在准确预测的同时,提供支持预测结论的证据/线索

基本假设

  • 随着社交媒体的迅速发展,词语的使用往往具有短期的稳定性。对各个时间片内的文本进行采样可以把握词语使用的变化。

数据来源

数据预处理

  • 给定一个城市,以及一个感兴趣的日期t,收集在之前连续K天(t − k → t − 1)已发布的相关文章作为原始输入。
  • 如果目标事件在t天发生,我们将此样本注释为正样本((y_{c,t} = 1));否则,如果在第t天以及前三天都没有事件,我们将此实例标记为负样本((y_{c,t} = 0))
  • 对每一个样本,我们对历史文章进行清洗(去除停用词,忽略频率大于0.8的高频词,删除出现次数少于5次的低频词以确保模型的通用性)后根据TF-IDF采样抽取n个关键词,只保留词干,并对这些关键词根据PMI以天为步长建立一系列的单词关系图,通过相应的邻接矩阵[(A_{t-k}),...,(A_{t-1})]来表示,每个矩阵都是(n*n)。图中节点为单词,边的权重按照PMI进行计算,并且PMI的计算限定在t时间内的文章中。一般而言,正PMI值表示语料库中单词的高度语义相关性。因此,我们仅在具有正PMI值的单词对之间添加加权边。

[A_t[i, j] = egin{cases} PMI_t(i, j) & PMI_t(i, j) > 0 \ 0 & otherwise end{cases}\ PMI_t(i, j)= logfrac{d(i,j)}{d(i)d(j)/D} ]

  • 我们对单词图中的每一个节点进行词嵌入,得到单词的向量表示,以此作为单词的初始特征。
  • 输入层的数据主要是一系列的图的邻接矩阵,以及每一个词的潜入向量表示。
  • 输入文件结构
    • 以泰国为例,我们收集了从2010年到2016年总共7年的数据,重点关注泰国首都曼谷这个城市,以确保训练实例instances数量和事件数量之间的平衡。集会、暴力抗议和通道阻塞是其中最常见的抗议事件。对综合冲突预警系统(ICEWS)的事件数据中,可以对城市和类别进行过滤,我们集中在事件的一个主要类别,抗议protest,。
    • Thailand:19,410 #documents、27,281 #vocabulary、1,883 #sample、 715#pos、 1,168#neg
    • K=7
    • emb_100 词向量文件 (27281, 100)
    • .idx / .tidx 用于训练/测试的词向量索引文件 (1600, 579) (283, 549)
    • .x / .tx 用于训练/测试的时间图输入文件 (283, 7, 549, 549) 每一个(549, 549)都用稀疏矩阵存储动态图
    • .y/ .ty 训练/测试的标签 (1600, 1) (283, 1)

网络结构

  • 输入层——动态GCN——TE时间编码层——非线性激活层
  • 采用类似于RNN的模式进行循环变化

抽取事件上下文图

  • 根据训练好的模型,根据一定规则从输入的动态图中提取重要的节点,构建子图来表示上下文
  • 提取节点:使用模型最后一层GCN得到(h_{i,t}),以及每个单词节点i的权重矩阵(w_i),两者相乘得到的I,服从高斯分布,按照阈值范围(µ,µ +2σ]抽取符合的节点。
  • 构建子图:分别在每个时间提取输入动态图的同构子图。子图中边缘的权重是两个端点节点的指标值之和。

关注 GitHub 项目:https://github.com/joeat1/GNN_note/

原文地址:https://www.cnblogs.com/joeat1/p/13228809.html