pytorch关系抽取实验

文章目录
  1. 数据集
  2. 实验结果
    1. LARGE数据集
    2. SMALL数据集
  3. 总结
  4. 参考

接前面笔记:关系抽取总结中最后说的,在关系抽取基于Distant Supervision的NYT+Freebase的数据集有两个版本,目前大部分文章都是在这两份数据集上做的。通过纵向实验发现,同一个模型在不同版本数据集上的表现有不少差异,这篇笔记是基于自己使用Pytorch复现的PCNN(Zeng 2015)与PCNN+ATT(Lin 2016)的实验结果来简单对比。

代码地址: pytorch-relation-extraction,关于实现的细节,调参,踩过的一些坑等,会记录在readme中,这里不再赘述。

个人属于入门级别, 复现代码可能有问题, 结果供参考.

数据集

首先描述一下这两份数据集:

  • 27类关系,Zeng2015 发布的数据集,做了一些过滤,如删除了两个实体之间距离大于40个词的句子,以及去掉了实例少的关系,相对较小,以SMALL表示:详细数据如下所示: 训练数据集:

    • 实体对: 65726; 句子数: 112941; 关系数: 27
    测试数据集:
    • 实体对: 93574; 句子数: 152416
  • 53类关系,Lin2016 发布的数据集,没有做过滤,相对较大,训练数据大概是小数据的4倍,以LARGE表示,详细如下: 训练数据集:

    • 实体对: 281270; 句子数: 522611; 关系数: 53
    测试数据集:
    • 实体对: 96678; 句子数: 172448;

下面分数据集分别看这两种模型的效果,目的有两个: (1) 验证自己复现的模型是否达到了论文模型的效果。(2) 比较模型在不同数据集上的效果。

此外如果读过两篇论文的代码的话,可以看出关于最后的Evaluation的步骤是有所差异的:

  • 在Zeng 2015 中,直接遍历所有的测试数据集的实体对,然后预测其关系,接着按照预测的概率从大到小排序,忽略那些标签为NA并且预测为NA的样例,因为这部分没有意义且数据量巨大,这样保存好precision和recall,来绘制PR曲线。
  • 在Lin2016中,则是取了预测概率Top N (N=2000+) 的样例,然后同样忽略了NA的情况,然后用这部分数据来绘制PR曲线。

总体来说:这两种方法很类似,因为在绘制PR曲线的时候,最后有一个截断,本质相同。

实验结果

LARGE数据集

直接上跑的结果, PR曲线:

其中:

  • PCNN+ATT: Lin2016 论文中给出的结果,直接拿来用
  • PCNN+ONE+MY: 自己复现的Zeng 2015的模型
  • PCNN+ATT+MY: 自己复现的Lin 2016的模型

当时看到结果的时候,很惊讶:

  • PCNN+ATT+MY 的PR曲线略高于Lin2016的PCNN+ATT,这个结果说明复现的模型基本吻合原模型,可能因为一些框架不同,优化上的因素导致效果更好。
  • PCNN+ONE+My的 PR曲线基本与Lin 2016的PCNN+ATT 持平,有的位置还要高一些。 这个就有点不太理解了。
  • PCNN+ONE+My 与 PCNN+ATT+MY 并没有想象中的差距那么多, 这个也很有意思,说明Attention 没有起到很大的作用?

SMALL数据集

PR曲线的结果:

结果:

  • 测了很多参数,自己实现的PCNN+ONE 在recall比较小的时候,达不到Zeng2015使用Theano实现的模型效果, 原因还会继续查找。在recall相对较大的时候,基本可以达到Zeng2015的效果。
  • 自己实现的PCNN+ATT 在SMALL数据集上效果一般, 很差异的是, ATT与PCNN+ONE的效果差很多. 复现基本上是参考C++代码来写的,还有调参数等.

总结

  • 大部分模型在LARGE数据集上效果要比SMALL数据集要好,可能原因是LARGE训练数据量大,因此模型可以训练得更好。
  • 从个人实现结果来看,对于减弱Distant Supervision的噪音来看,在LARGE数据集上,Attention的效果与Multi Instance(仅仅去最可能正确的instance) 基本差不多, 但是在SMALL数据集上,Attention的效果并没有Multi Instance 的好。

当然这个是我个人的实验结果(另外一师弟实现的结果与此类似), 后续如有可能的话, 会补充一下在Lin2016的C++源码上跑一下SMALL数据集,以及在Zeng2015的Theano数据集上跑一下LARGE数据集,最终的结果会更有说服力。个人复现难免会有遗漏,如果错误,烦请指出.

参考