Mac CasRel模型代码复现 A Novel Cascade Binary Tagging Framework for Relational Triple Extraction

一、创建虚拟环境

要Python37的环境,为了避免不同环境下的依赖相互影响,所以创建一个新的py环境,我用的是conda,命令如下:

conda create -n casrel python=3.7

二、数据下载

下载项目运行需要的代码,预训练模型,数据集

2.1 模型代码下载

可以直接使用git命令下载

git  https://github.com/weizhepei/CasRel.git

我是在网站上直接下载的源码
https://github.com/weizhepei/CasRel

2.2 数据集下载与构建

2.2.1 数据集下载与构建

链接: NYT数据集下载地址.

下载后解压,将其放到项目路径data/NYT/raw_NYT下

Mac CasRel模型代码复现 A Novel Cascade Binary Tagging Framework for Relational Triple Extraction
然后运行data/NYT/raw_NYT/generate.py将数字编码形式的nyt数据集转换为字符形式的数据集,并根据三元组将数据集分类为normal,epo,spo几种类型。这里要将generate.py的main方法改成:
for file_type in ['train', 'valid', 'test']:
        file_name = f'{file_type}.json'
        output = f'new_{file_type}.json'
        output_normal = f'new_{file_type}_normal.json'
        output_epo = f'new_{file_type}_epo.json'
        output_seo = f'new_{file_type}_seo.json'
        with open('relations2id.json', 'r') as f1, open('words2id.json', 'r') as f2:
            rel2id = json.load(f1)
            words2id = json.load(f2)
        rel_dict = {j: i for i, j in rel2id.items()}
        word_dict = {j: i for i, j in words2id.items()}
        load_data(file_name, word_dict, rel_dict, output, output_normal, output_epo, output_seo)

如果不改的话只会生成valid的json

1、运行结果为CasRel/data/NYT/raw_NYT/new_train.json,new_train_epo.json,new_train_normal.json,new_train_seo.json等。

2、将产生的新文件new_train.json、new_test.json和new_valid.json移至NYT/目录下,并分别将文件名改成traim.json、test.json、dev.json。并运行CasRel/data/NYT/build_data.py
3、将1生成的new_test.json复制到CasRel/data/NYT/test_split_by_num下,改名成test.json,并运行test_split_by_num.py
4、将1生成的new_test_epo.json、 new_test_normal.json、new_test_seo.json复制到CasRel/data/NYT/test_split_by_type下,改名成去掉前面的new,并运行test_split_by_type.py

2.3 预训练模型下载

下载BERT预训练模型,本文用的是BERT-Base, Cased(12-layer, 768-hidden, 12-heads , 110M parameters): 下载地址.。解压后放项目下的pretrained_bert_models中。

Mac CasRel模型代码复现 A Novel Cascade Binary Tagging Framework for Relational Triple Extraction
其中Cased表示保留真实的大小写和重音标记符,uncased表示文本在单词标记之前就已经变为小写,也去掉了任何重音标记例如,John Smith变成john smith。通常,Uncased模型会更好,除非大小写信息对于我们的任务很重要,如命名实体识别或词性标记。

; 三、模型训练

python run.py --train=True --dataset=NYT

Mac CasRel模型代码复现 A Novel Cascade Binary Tagging Framework for Relational Triple Extraction

Original: https://blog.csdn.net/beautyjin/article/details/123839302
Author: oo是总攻
Title: Mac CasRel模型代码复现 A Novel Cascade Binary Tagging Framework for Relational Triple Extraction

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/532083/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球