Document-Level Argument Extraction by Conditional Generation 复现
已添加OneIE处理后ACE2005数据集的仓库:vkgo/gen-arg: Code for paper “Document-Level Argument Extraction by Conditional Generation”. NAACL 21′ (github.com)
1 环境配置
按要求README配置好
2 运行尝试
尝试执行train.py
python train.py --model gen --dataset ACE
报错,缺参数
仔细看一遍仓库文件后,发现有现成的scripts,ACE 2005 script如下:
红圈为缺少的文件。
3 数据处理
通过上述缺少文件的文件名可以猜测,数据可能需要通过OneIE处理。
配置好OneIE项目后,执行以下代码处理数据:
python preprocessing/process_ace.py -i ./data/LDC2006T06/data -o ./data/ACE2005-English-output -s resource/splits/ACE05-E -b bert-large-cased -l english
4 运行
根据处理后的数据,简单修改一下运行命令。
#!/usr/bin/env bash
set -e
set -x
DATA_DIR=./data/ACE2005-English-oneie
MODEL=constrained-gen
CKPT_NAME=constrained-gen-ACE
rm -rf checkpoints/${CKPT_NAME}
python train.py --model=${MODEL} --ckpt_name=${CKPT_NAME} \
--dataset=ACE \
--tmp_dir=preprocessed_ACE \
--train_file=${DATA_DIR}/train.oneie.json \
--val_file=${DATA_DIR}/dev.oneie.json \
--test_file=${DATA_DIR}/test.oneie.json \
--train_batch_size=4 \
--eval_batch_size=4 \
--learning_rate=3e-5 \
--accumulate_grad_batches=4 \
--num_train_epochs=6 \
--mark_trigger
Windows没有bash,修改为:
python train.py --model=constrained-gen --ckpt_name=constrained-gen-ACE --dataset=ACE --tmp_dir=preprocessed_ACE --train_file=./data/ACE2005-English-oneie/train.oneie.json --val_file=./data/ACE2005-English-oneie/dev.oneie.json --test_file=./data/ACE2005-English-oneie/test.oneie.json --train_batch_size=4 --eval_batch_size=4 --learning_rate=3e-5 --accumulate_grad_batches=4 --num_train_epochs=6 --mark_trigger
简单debug(删除之前尝试的时候生成的许多临时文件夹、显存不足调低batchsize),成功运行:
成功跑完1个epoch