Yu Zhang, Qingrong Xia, Shilin Zhou, Yong Jiang, Zhenghua Li, Guohong Fu, Min Zhang. Semantic Role Labeling as Dependency Parsing: Exploring Latent Tree Structures Inside Arguments. 2021. [arxiv]
The following packages should be installed:
PyTorch
: >= 1.7Transformers
: >= 4.0
Clone this repo recursively:
git clone https://github.com/yzhangcs/crfsrl.git --recursive
Run the following scripts to obtain the training data. Please make sure PTB and OntoNotes are available:
bash scripts/conll05.sh PTB=<path-to-ptb> SRL=data
bash scripts/conll12.sh ONTONOTES=<path-to-ontonotes> SRL=data
Try the following commands to train first-order CRF and second-order CRF2o models:
# LSTM
# CRF
python -u crf.py train -b -c configs/conll05.crf.srl.lstm.char-lemma.ini -d 0 -f char lemma -p exp/conll05.crf.srl.lstm.char-lemma/model
# CRF2o
python -u crf2o.py train -b -c configs/conll05.crf2o.srl.lstm.char-lemma.ini -d 0 -f char lemma -p exp/conll05.crf2o.srl.lstm.char-lemma/model
# BERT finetuning
# CRF
python -u crf.py train -b -c configs/conll05.crf.srl.bert.ini -d 0 -p exp/conll05.crf.srl.bert/model --batch-size=1000 --encoder bert --bert bert-large-cased
# CRF2o
python -u crf2o.py train -b -c configs/conll05.crf2o.srl.bert.ini -d 0 -p exp/conll05.crf2o.srl.bert/model --batch-size=1000 --encoder bert --bert bert-large-cased
To do evaluation:
# end-to-end
python -u crf.py evaluate -c configs/conll05.crf.srl.bert.ini -d 0 -p exp/conll05.crf.srl.bert/model --data data/conll05/test.conllu
# w/ gold predicates
python -u crf.py evaluate -c configs/conll05.crf.srl.bert.ini -d 0 -p exp/conll05.crf.srl.bert/model --data data/conll05/test.conllu --prd
To make predictions:
python -u crf.py predict -c configs/conll05.crf.srl.bert.ini -d 0 -p exp/conll05.crf.srl.bert/model --data data/conll05/test.conllu --pred pred.conllu
bash scripts/eval.sh pred=pred.conllu gold=data/conll05/test.conllu
If you have any questions, feel free to contact me via emails.