Semantic Role Labeling based on AllenNLP implementation of Shi et al, 2019. Can be trained using both PropBank and VerbAatlas inventories and implements also the predicate disambiguation task, in addition to arguments identification and disambiguation.
Install the library
pip install transformer-srl
You can also use a pre-trained model. To use it, first install the correct version of transformer-srl
:
pip install transformer-srl==2.4.6
then download the pretrained model srl_bert_base_conll2012.tar.gz
from here.
File | Model | Version | F1 Argument | F1 Predicate |
---|---|---|---|---|
srl_bert_base_conll2012.tar.gz | bert-base-cased |
2.4.6 | 86.0 | 95.5 |
echo '{"sentence": "Did Uriah honestly think he could beat the game in under three hours?"}' | \
allennlp predict path/to/srl_bert_base_conll2012.tar.gz - --include-package transformer_srl
from transformer_srl import dataset_readers, models, predictors
predictor = predictors.SrlTransformersPredictor.from_path("path/to/srl_bert_base_conll2012.tar.gz, "transformer_srl")
predictor.predict(
sentence="Did Uriah honestly think he could beat the game in under three hours?"
)
- Language Model: BERT
- Dataset: CoNLL 2012
With bert-base-cased
:
# Dev set
- F1 arguments 87.6
- F1 predicates 95.5
# Test set
- F1 arguments x
- F1 predicates x
With bert-base-multilingual-cased
:
# Dev set
- F1 arguments 86.2
- F1 predicates 94.2
# Test set
- F1 arguments 86.1
- F1 predicates 94.9
- Works with both PropBank and VerbAtlas (infer inventory from dataset reader)
- Compatibility with all models from Huggingface's Transformers. - Now works only with models that accept 1 as token type id
- Predicate identification (without using spacy)