Awesome
PRover
PyTorch code for our EMNLP 2020 paper:
PRover: Proof Generation for Interpretable Reasoning over Rules
Swarnadeep Saha, Sayan Ghosh, Shashank Srivastava, and Mohit Bansal
Installation
This repository is tested on Python 3.8.3.
You should install PRover on a virtual environment. All dependencies can be installed as follows:
pip install -r requirements.txt
Download Dataset
Download the dataset as follows:
bash scripts/download_data.sh
Training PRover
PRover can be trained by running the following script:
bash scripts/train_prover.sh
This will train PRover on the depth-5
dataset. Should you wish to train on any of depth-0, depth-1, etc, change the data_dir
path in the script accordingly.
The trained model folder will be saved inside output
folder.
Testing PRover
The trained PRover model can be tested by running the following script:
bash scripts/test_prover.sh
This will output the QA accuracy, save the node predictions at prediction_nodes_dev.lst
and the predicted edge logits at prediction_edge_logits_dev.lst
.
Running ILP Inference
Once the node predictions and the edge logits are saved, you can run ILP inference to get edge predictions as follows:
bash scripts/run_inference.sh
This will save the edge predictions inside the model folder.
Evaluation
Once QA, node and edge predictions are saved, you can compute all metrics (QA accuracy, Node accuracy, Edge accuracy, Proof accuracy and Full accuracy) as follows:
bash scripts/get_results.sh
Zero-shot Evaluation on Birds-Electricity
Run the above testing, inference and evaluation scripts to test the depth-5 trained PRover model on the Birds-Electricity dataset by appropriately changing the data-dir
path to data/birds-electricity
in all the scripts and lines 187 and 188 in utils.py
with test.jsonl
and meta-test.jsonl
.
Training PRover on ParaRules dataset
Run the following scripts to train PRover on the ParaRules dataset (following similar steps as before):
bash scripts/train_natlang.sh
bash scripts/test_natlang.sh
bash scripts/run_inference_natlang.sh
bash scripts/get_results_natlang.sh
Running Other Ablations
Ablation models from the paper can be run by uncommenting parts of the code (like choosing a particular depth). Please refer to the comments in utils.py for details.
Trained Models
We also release our trained models on depth-5 dataset and ParaRules dataset here. These contain the respective QA, node and edge predictions and you can reproduce the results from the paper by running the evaluation script.
Visualizing Proofs
The script to visualize PRover's proof graphs as pdfs is evaluation/print_graphs.py
. It takes the usual arguments (data directory, node and prediction files) along with a path to the directoty to save the graphs.
Citation
@inproceedings{saha2020prover,
title={{PR}over: Proof Generation for Interpretable Reasoning over Rules},
author={Saha, Swarnadeep and Ghosh, Sayan and Srivastava, Shashank and Bansal, Mohit},
booktitle={EMNLP},
year={2020}
}