Skip to content

silverwolf-x/r-bert

Repository files navigation

R-BERT复现

(非官方)使用pytorch复现R-BERT: Enriching Pre-trained Language Model with Entity Information for Relation Classification

使用须知

  1. 需要python>=3.8环境依赖
  2. 使用命令行pip install -r requirements.txt安装包。其中在pytorch官网中下载cuda版本torch
  3. 本仓库所有文件一共500MB左右,运行一次程序后保存的模型参数大小约为1GB
  4. 使用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
  • 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显卡支持。

  • 感谢自己的认真、坚持和毅力