首页
看点啥
插画图片
首页 科技看点 pytorch-relation-extraction:实践指南

pytorch-relation-extraction:实践指南

2026-09-10 0

实际看pytorch-relation-extraction,先要确认它的用途:distant supervised relation extraction models: PCNN MIL (Zeng 2015)。日常自动化里,输入边界、依赖和失败处理如果不清楚就很难稳定复用。我会用一项范围明确的真实任务完成最小试跑,检查配置时间、输出质量、异常信息和维护痕迹。它适合愿意先做小范围验证并复查原始文档的团队;采用前仍要看维护状态和试跑结果。

2019.03.09更新:

2019.03.05:

修复mask piece wise的bug.

2018.11.3:

基于mask的use_pcnn=True目前有一些问题,正在修改, 建议:

2018.10.14更新:

全监督的关系抽取PCNN(Zeng 2014)的代码地址: PCNN

2018.9.10 更新:

使用Pytorch 复现 PCNN+MIL (Zeng 2015) 与 PCNN+ATT (Lin 2016), 以及两个模型在两个大小版本的数据集上(27类关系/53类关系)的表现对比。

相关博客:

在代码的组织,结构设计上, 主要参考 陈云Pytorch实战指南 (个人推荐)。因此一些实现细节就不再赘述了,可以参考陈云的实战指南。

实现总览

环境:

简单介绍主要目录:

├── checkpoints         # 保存预加载模型
├── config.py             # 参数
├── dataset                # 数据目录
│ ├── FilterNYT         # SMALL 数据
│ ├── NYT                 # LARGE 数据
│ ├── filternyt.py
│ ├── __init__.py
│ ├── nyt.py
├── main_mil.py       # PCNN+ONE 主文件
├── main_att.py        # PCNN+ATT 主文件
├── models               # 模型目录
│ ├── BasicModule.py
│ ├── __init__.py
│ ├── PCNN_ATT.py
│ ├── PCNN_ONE.py
├── plot.ipynb
├── README.md
├── utils.py                # 工具函数

这份代码基本上是按照陈云的指南模仿来写的。 数据模型分开,参数/配置单独文件, 并且使用fire 库来管理命令行参数,更加方便修改参数。

因为PCNN+ONE和PCNN+ATT的训练,测试方法不太一样,因此为了简单起见, 分别写了主文件: main_mil.pymain_att.py

训练方式一样,如使用PCNN+ONE 训练大数据集, 后面可以直接修改参数, 默认使用config.py的参数:


python main_mil.py train --data="NYT"  --batch_size=128

注:需要提前按照下一节处理下数据(主要是生成npy格式的数据,方便直接被模型导入).

数据预处理

为了节省空间, 上传了LARGE和SMALL两份的原生数据,因此需要用数据预处理下,从而生成npy格式数据。

首先下载两份原始数据,地址:

百度网盘 谷歌云盘

数据格式简单说明:

将两个zip放到dataset目录下,解压,这样会形成两个目录 ,一个NYT, 一个FilterNYT, 其中LARGE数据集在NYT目录,SMALL数据在FilterNYT内,这里的原始数据分别是从Zeng 2015 以及 Lin2016 的开源代码中获得。

对于LARGE数据:

对于SMALL数据

生成的NPY文件,均使用Pytorch的Dataset来直接导入,具体代码见 nyt.pyfilternyt.py*Data类.

数据预处理完毕之后,即可按照上述的命令来训练/测试。

调参优化

在复现的过程了花了不少功夫,踩了不少坑,简单记一下:

关于结果的说明可以在博客查看。

参考

使用此代码可以自愿选择引用:

@inproceedings{liu2019reet,
  title={REET: Joint Relation Extraction and Entity Typing via Multi-task Learning},
  author={Liu, Hongtao and Wang, Peiyi and Wu, Fangzhao and Jiao, Pengfei and Wang, Wenjun and Xie, Xing and Sun, Yueheng},
  booktitle={CCF International Conference on Natural Language Processing and Chinese Computing},
  pages={327--339},
  year={2019},
  organization={Springer}
}
喜欢(0)

上一篇

ChineseWordSegmentation:实践指南

ChineseWordSegmentation:实践指南

下一篇

DevOpsCommunity:实践指南

DevOpsCommunity:实践指南
猜你喜欢