This repository is the pytorch implementation of our paper:
A Graph-Based Neural Model for End-to-End Frame Semantic Parsing
Zhichao Lin, Yueheng Sun, Meishan Zhang
The Conference on Empirical Methods in Natural Language Processing (EMNLP), 2021
!!!Note: we have upgrade our codebase to allennlp 2.0+ which is different from our origin implementation based on alennnlp 1.0. We find that our model can achieve further performance about 49.20 ROLE-F1 in Framenet1.5 and 49.05 ROLE-F1 in Framenet 1.7.
Clone the current repository:
git clone https://github.com/Ch4osMy7h/FramenetParser.git
cd FramenetParser
# Create python environment (optional)
conda create -n framenet python=3.7
source activate framenet
# Install python dependencies
pip install -r requirements.txt
Request and download Framenet Dataset 1.5 and Framenet Dataset 1.7 from Website. Place them under data
directory, which contatins two subdirectories called fndata-1.5
and fndata-1.7
. Specially, the data should be splited into there subdirectories following FN1.5 and FN1.7. Structures are showed below:
./data
fndata-1.5/
train/ # containing the training xml files
dev/
test/
...
fndata-1.7/
train/
dev/
test/
...
To get the datasets our code based on, run the following commands:
python preprocess.py
We use train_parser.sh script to train and evaluate all of our joint models. You can modify any configuration you want in the script.
bash train_parser.sh
All models can be evaluated using by the following commands:
allennlp evaluate your_evaluation_model \
your_evaluation_data_file \
--include-package framenet_parser \
--output-file your_evaluation_output.json \
For predicting targets, frames and frame element on your own unlabed data (follow the file format as shown in experiments/inference/sample.json
), you can use the following commands:
allennlp predict \
--output-file your_wanted_output_file \
--include-package framenet_parser \
--predictor framenet_parser \
--cuda-device 0 \
your_trained_model \
your_own_data.json