作为学习文档级关系抽取的短暂总结与记录。主要是相关数据集问题,如果能帮助到其他人,我也是很开心的。
文档级关系抽取论文
网上有很多文档级关系抽取的综述,他们会告诉你有哪些经典文献需要阅读,我就不再搬运了,可能网上综述有些滞后,可以通过paperwithcode看当前的leaderboard来阅读大当前效果好的文献。
文档级关系抽取数据集
当前最常用的就是DocRED,还有两个常用的医学数据集CDR和GDA。
DocRED
- 数据集下载
- 最终文件结果如图所示:
- 文件介绍(只介绍有用的,其他的我不了解)
-
rel2id.json:关系“P1376”的序号是79,就是标签,类别是79,其他一样,应该是比较好理解
-
rel_info.json:关系信息,关系标签对应现实世界中的具体关系
-
train_annotated.json:标注的训练集,
```python{ "vertexSet":[{"pos": [0, 4], "type": "ORG", "sent_id": 0, "name": "Zest Airways, Inc."},....] # 所有的实体,name:实体是啥 type:实体类型 sen_id:该实体所在的句子的序号 pos:该实体的头实体和尾实体的位置 "labels": [{"r": "P159", "h": 0, "t": 2, "evidence": [0]},....] # 标签,也就是有哪些三元组,r表示三元组的关系, # h是是头实体所在的位置,0就表示头实体是"vertexSet"列表中的第一个实体, # t表示尾实体,2表示尾实体是"vertexSet"列表中的第二个实体 # evidence:证据句子,就是支持抽取这个三元组的证据,这个例子里面就是第0个句子支持抽取出本三元组 "title":["AirAsia Zest"] # 本篇文章的标题 "sents":[["Zest", "Airways", ",", "Inc.", "operated"],["It", "operated", "scheduled"]...] # 文章的所有句子(分词之后的),列表的第一个元素就是句子0 } ```
-
train_instant.json:远程监督数据集,除了没有证据句子之外,其他的和train_annotated.json一样
-
dev.json:验证集,内容格式和标注训练集一样
-
test.json:测试集,测试集没有labels,那么如何获得模型在测试集上的结果呢,需要将模型在测试集上的预测结果上传CodaLab,获得测试集的结果,
- 1.注册,登录就不多说了
- 2.Participate->Submit/View Results,提交就可以,提交必须是ZIP文件,文件名为result.zip,里面的json为result.json.
-
CDR和GDA数据集
这两个数据集非常难搞,花了我好长时间,因为我在网上没有找到处理好的,只有源文件,需要自己处理
如果你只想下载数据集,我在百度网盘上传了一份,
CDR:https://pan.baidu.com/s/1tomnS0ciGCt3mibKx9qZfw
提取码:love
GDA:https://pan.baidu.com/s/1hDsO8PYVnaBqfNftHrT9Ng
提取码:love
如果你想自己处理,可以按照下面的步骤来做(Linux系统,windows下不会,哈哈),来自于https://github.com/fenchri/edge-oriented-graph为基础,但在过程中有点问题,你可以按照他的来处理,望顺利,如果不行,按照下面的步骤
-
1.下载https://github.com/fenchri/edge-oriented-graph中的data_process文件,或者在网盘中下载链接:https://pan.baidu.com/s/1VmxWq2Vqa3bDDiQ42Zbygw提取码:love
-
2.进入data_process文件,在此文件夹目录下进行操作
-
3.下载CDR和GDA数据集
- 第一种方法:
$ mkdir data && cd data $ wget https://biocreative.bioinformatics.udel.edu/media/store/files/2016/CDR_Data.zip && unzip CDR_Data.zip && mv CDR_Data CDR $ wget https://bitbucket.org/alexwuhkucs/gda-extraction/get/fd4a7409365e.zip && unzip fd4a7409365e.zip && mv alexwuhkucs-gda-extraction-fd4a7409365e GDA $ cd .. ```
- 第二种方法:可以直接在链接上下载压缩包,CDR:https://biocreative.bioinformatics.udel.edu/media/store/files/2016/CDR_Data.zip
GDA:https://bitbucket.org/alexwuhkucs/gda-extraction/get/fd4a7409365e.zip
下载完解压,分别改名CDR、GDA - 3:也可以在这里获得:CDR:https://pan.baidu.com/s/1W0P5H5Lct5zeGM5r4Lua1A
提取码:love
GDA:https://pan.baidu.com/s/1EhkyG4wK1Oy9fvKpNhrDbg
提取码:love
- 第一种方法:
-
4.下载数据生成工具和数据分割工具
-
前提是有ruby,如果没有,可以下载安装
sudo apt-get install ruby-full
,如果失败,先sudo apt-get upgrade
,如失败,百度吧 -
下载GENIA Tagger
$ cd data_processing $ mkdir common && cd common $ wget http://www.nactem.ac.uk/y-matsu/geniass/geniass-1.00.tar.gz && tar xvzf geniass-1.00.tar.gz $ cd geniass/ && make && cd ..
如果无法下载出现404/500啥的错误,可以在这下载geniass-1.00.tar.gz,提取码love
-
下载Sentence Splitter
$ git clone https://github.com/bornabesic/genia-tagger-py.git $ cd genia-tagger-py
1.如果不能clone,在这下载genia-tagger-py,提取码love
2.修改下载的文件中的makefile文件的第三行为:http://www.nactem.ac.uk/GENIA/tagger/geniatagger-3.0.2.tar.gz
,
3.然后$ make $ cd ../../
-
-
5.最后运行数据处理脚本就行了,cdr需要几分钟,gda需要两个小时
$ sh process_cdr.sh $ sh process_gda.sh