This repo contains code for AAAI 2020 paper Path Ranking with Attention to Type Hierarchies, in which we introduce Attentive Path Ranking (APR), a novel path pattern representation that leverages type hierarchies of entities to both avoid ambiguity and maintain generalization.
- Code for baseline models in the paper can be found here (PRA and SFE) and here (Path-RNN).
- We provide tokenized data for WN18RR and FB15k-237. Our data format follows ChainsofReasoning. Vocabularies used for tokenizing data are also provided for reference.
- Raw data for WN18RR and FB15k-237 can be found here. Types for WN18RR entities can be obtained from Wordnet. Types for FB15k-237 entities can be found here.
- Hardware: 64GB RAM, 12GB GPU memory
- Software: ubuntu 16.04, python 3.5, cuda 8
- Install cuda
- (Optional) Set up python virtual environment by running
virtualenv -p python3 .
- (Optional) Activate virtual environment by running
source bin/activate
- Install pytorch with cuda
- Install requirements by running
pip3 install -r requirements.txt
To help you quickly train and test the model, we have prepared data that are already vectorized.
- Vectorized data file can be downloaded from dropbox.
- Unzip the file in the root directory of this repo.
- Use
run.py
to train and test the model on WN18RR or FB15k-237. - Use
main/playground/model2/CompositionalVectorSpaceAlgorithm.py
to modify the training settings and hyperparamters. - Use
main/playground/model2/CompositionalVectorSpaceModel.py
to modify the network design. Different attention methods for types and paths can be selected here. - Training progress can be monitored using tensorboardX by running
tensorboard --logdir runs
. Tutorials and Details can be found here.
You can also use the code to build knowledge graphs from relation data, sample negative examples, create splits, extract paths, vectorize path data, run baselines, and run APR model.
- Raw data, including relation data, type information, and word embeddings, for WN18RR, FB15k-237 can be downloaded from dropbox.
- Unzip the file in the root directory of this repo.
- Clone our PRA repo and install necessary dependencies. For more details, check out readme in that repo.
- (Optional) Clone our CVSM repo only if you want to run CVSM baselines.
- Use
demo_wn18rr.py
ordemo_fb15k237.py
to go through the whole pipeline for the respective dataset. - Use
run_wn18rr.py
orrun_fb15k237.py
if you want to run PRA, SFE, and CVSM baselines
Code are documented with docstrings. We also use sphinx
to automatically generate API documentation from docstrings.
- Make sure you have the necessary
pip
dependencies ofsphinx
installed. - Navigate to
docs
and build the documentation:make html
- Navigate to
docs/_build/html
(this folder will be generated by the previous command) and start a simple server:python -m SimpleHTTPServer
. - Navigate to
https://localhost:8000
in your browser.
Please cite the following work if you find the data/code useful.
@inproceedings{liu2019path,
title = {Path Ranking with Attention to Type Hierarchies},
author = {Weiyu Liu and Daruna, Angel and Kira, Zsolt and Chernova, Sonia},
booktitle = {Thirty-Fourth AAAI Conference on Artificial Intelligence (AAAI)},
year = {2020}
}