(非官方)使用pytorch复现R-BERT
: Enriching Pre-trained Language Model with Entity Information for Relation Classification
- 需要python>=3.8环境依赖
- 使用命令行
pip install -r requirements.txt
安装包。其中在pytorch官网中下载cuda版本torch - 本仓库所有文件一共500MB左右,运行一次程序后保存的模型参数大小约为1GB
- 使用RTX3080运行一次(5个epoch)需要约5分钟,使用RTX4050 Laptop运行一次(5个epoch)需要约12分钟
-
在github release中下载
model.zip
并解压缩至code
文件夹下 -
使用命令
python run.py
或者使用IDE(如VScode)打开run.py
运行 -
运行
run.py
后,程序会新建logs
文件夹生成运行日志和结果,新建run
文件夹记录运行后模型的参数。多次训练记得处理旧文件,以免占用太大空间。
-
code:运行程序的所有代码、数据集和预训练模型
- model:bert-uncased-base预训练模型。来源Hugging Face,副本在github release中,请下载并解压缩至
code
文件夹下 - SemEval2010_task8_all_data: SemEval-2010 Task 8原始数据集。地址Github
*.py
:源码文件,具体思路详见note.md
- model:bert-uncased-base预训练模型。来源Hugging Face,副本在github release中,请下载并解压缩至
-
Enriching Pre-trained Language Model with Entity Information for Relation Classification.pdf
:本项目复现的目标论文 -
requirements.txt
:python包依赖 -
note.md
:记录了coding的心路历程,编写逻辑和运行原理 -
run.py
:一键运行脚本
- 在
TextDataset.__init__
中使用正则表达式提取目标文本 - 在model中使用
torch.mul()
对应元素相乘*(又称element-wise product、 element-wise multiplication或 Hadamard product)*,借助boardcast机制在batch中提取entity向量,避免使用循环(现在还没找到batch的map函数)
-
感谢MEDAI3给我机会复现这一篇论文,虽然很辛苦,但这又一次显著提升了我的代码能力。
-
感谢chatgpt的代码思路支持,虽然问题由代码编写转变为如何准确描述任务,也有不少难度。
-
感谢中国人民大学明德地下机房提供的RTX3080显卡支持。
-
感谢自己的认真、坚持和毅力