1Soochow University, Suzhou, China
2Huawei Cloud, China
3DAMO Academy, Alibaba Group, China
If you are interested in our work, please cite
@inproceedings{zhang-etal-2022-semantic,
title = {Semantic Role Labeling as Dependency Parsing: Exploring Latent Tree Structures inside Arguments},
author = {Zhang, Yu and
Xia, Qingrong and
Zhou, Shilin and
Jiang, Yong and
Fu, Guohong and
Zhang, Min},
booktitle = {Proceedings of COLING},
year = {2022},
url = {https://aclanthology.org/2022.coling-1.370},
address = {Gyeongju, Republic of Korea},
publisher = {International Committee on Computational Linguistics},
pages = {4212--4227}
}
The following packages should be installed:
PyTorch
: >= 1.12.1Transformers
: >= 4.2
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 --cache --binarize
# 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 --cache --binarize
# 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=2000 --encoder bert --bert bert-large-cased --cache --binarize
# 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=2000 --encoder bert --bert bert-large-cased --cache --binarize
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
# w/ gold predicates
python -u crf.py evaluate -c configs/conll05.crf.srl.bert.ini -d 0 -p exp/conll05.crf.srl.bert/model --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
bash scripts/eval.sh pred=pred.conllu gold=data/conll05/test.conllu
If you have any questions, feel free to contact me via emails.