论文主体
paper:"Learning Dynamic Context Graphs for Predicting Social Events".
动机
- 对社会动荡等社会事件的预测是一个重要而具有挑战性的问题
- 为便于人类分析与理解,需要在准确预测的同时,提供支持预测结论的证据/线索
基本假设
- 随着社交媒体的迅速发展,词语的使用往往具有短期的稳定性。对各个时间片内的文本进行采样可以把握词语使用的变化。
数据来源
数据预处理
- 给定一个城市,以及一个感兴趣的日期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/