Changzhi Sun, et al., “Joint Type Inference on Entities and Relations via Graph Convolutional Networks”, ACL 2019
1 简介
这篇文章是做实体关系联合抽取,是要抽实体类别的。他的步骤还挺特别:首先抽实体 span,然后把抽出的 span,以及 span 之间两两关系(用二分类器判断)搞成实体类别结点和关系类别结点,用 GCN 做 embedding,最后 softmax 分类。
文章中说,别的 joint 方法,都仅仅是步骤之间共享参数,这篇文章 have explicit interaction in type inference,两类 type 构成两类结点,在二分图中“自然的交互”,我感觉这个想法还挺有意思的。
2 方法
模型整体如图所示,是一个 joint 的模型,模块依次是 entity span detection、node embedding、binary relation classifation(可选)、bi-parite graph GCN、entity & relation type inference,下面就分别介绍。

2.1 entity span detection
这里就是一个简单的序列标注任务,CNN + Bi-LSTM + softmax,标签就是单纯的 BILOU,最后得到一个个 entity span
2.2 node embedding
这步是为了构建二分图。

上图是一句话的二分图的例子。左边是 entity span 构成的结点,右边是 entity 之间的关系构成的点。这一步先把两类节点的 embedding 搞出来。
对于 entity,就直接把刚才 Bi-LSTM 得到的 embedding 过 CNN + MLP,得到 entity node embedding。
对于 relaiton,就把两个实体 + 中间的所有词 + 左右各多一个词的 Bi-LSTM 得到的 embedding 过 CNN + MLP,得到 relation node embedding。
2.3 binary relation classifation
linear + softmax,具体作用见下文
2.4 bi-parite graph GCN
二分图,就是只会在实体节点和关系节点之间有边相连。具体地,关系节点会连接它的头尾实体。作者搞了三种图,做对比实验:
- static graph:所有的实体都搞成结点,所有实体两两之间都搞一个关系节点,
- hard dynamic graph:加入一个 binary relation classifation 模块,先做二分类,看看实体之间有没有关系,有关系再加上关系结点
- soft dynamic graph:上面二分类是 hard 结果,这里直接把 softmax 分数保留下来,放在邻接矩阵里
另外,邻接矩阵中对角线上都设为 1,即加入自环,也是 GCN 基本操作了。
为什么用二分图?作者说有两个原因:① 并非所有实体都有用(我的理解就是,实体之间不需要有边,因为两个实体已经有关系节点的链接,这就表达了“边”的意思。另外,dynamic graph 前一步的二分类也给实体之间的关系做了一次筛选)② GCN 不适合全连接图(因为这样“消息传递”很少的次数,就不 local 了)
2.5 entity & relation type inference
两个分类都是用 GCN 的输出和 LSTM 的输出拼一起,softmax 分类。
训练的时候,整个模型是一起更新参数的,换句话说,整个 loss 就是 entity span 的 loss + binary relation classify 的 loss + 最后 entity type 分类 loss 和 relation type 分类 loss。
3 实验
- 整个模型比 sota【#TODO1】 p 高,r 低,f 高
- 把 GCN 换成 NN(就是式子里不要邻接矩阵了?),还是要比 sota 好,表明本文分这两步 的有效性
- p 高,作者认为这归功于 the strong ability to model feature representations of entity nodes and relation nodes、entity type model and the relation type model share more parameters(entity CNN+MLP parameters);r 低,因为做关系分类时没有用上实体类别信息
- hard dynamic > soft dynamic > static
- binary relation classify 很差,但是加上之后还是要比 static 好,怎么改进一下呢?
- 一层 GCN 最好,作者认为这是因为所有模型都 closely related to each other(?没懂)
4 想法
- 为什么这样分步骤?作者在文中说,识别 entity span 这个任务性能做得很好,所以就以这个为基础开始。然而,整个流程中的 binary relation classification 这一步拉胯了。所以,能不能避开这个二分类呢?static graph 就是避开二分类,但是结果更差。
5 TODO
- Changzhi Sun, Yuanbin Wu, Man Lan, Shiliang Sun, Wenting Wang, Kuang-Chih Lee, and Kewen Wu. 2018. Extracting entities and relations with joint minimum risk training. In Proceedings of the 2018 Conference on Empirical Methods in Natural Lan- guage Processing, pages 2256–2265. Association for Computational Linguistics.