Skip to content
Neural Logic Reasoning for Question Answering
Python Jupyter Notebook
Branch: master
Clone or download
Latest commit e48e961 May 17, 2019
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
configs initial commit May 17, 2019
data initial commit May 17, 2019
models initial commit May 17, 2019
notebooks initial commit May 17, 2019
results initial commit May 17, 2019
rules initial commit May 17, 2019
README.md Update README.md May 17, 2019
env.py initial commit May 17, 2019
evaluate.py initial commit May 17, 2019
evaluation_utils.py initial commit May 17, 2019
example_proofs.png initial commit May 17, 2019
model.py initial commit May 17, 2019
preprocessing.py initial commit May 17, 2019
prolog.py initial commit May 17, 2019
requirements.txt
spyrolog initial commit May 17, 2019
train.py initial commit May 17, 2019
utils.py initial commit May 17, 2019
visualize_proof_tree.py initial commit May 17, 2019

README.md

NLProlog

This is an implementation of NLProlog, a method for approaching Question Answering tasks with Prolog-like reasoning over natural language statements.

At the core of NLProlog is the Prolog interpreter sPyrolog, which can be found in a separate repository. sPyrolog is a fork of the Prolog interpreter Pyrolog.

Proof examples

Disclaimer

This is highly experimental research code which is not suitable for production usage. We do not provide warranty of any kind. Use at your own risk.

Installation

  1. The python version has to be at least 3.6.
  2. A working version of sPyrolog has to reside in the project root, if the precompiled version from this repository does not work for you, try recompiling it from the sPyrolog repository.
  3. Install sent2vec and place its wiki-unigrams model in the project root. For reproducing the results on MedHop, the BioSent2Vec model has to reside in the project root.
  4. Install the requirements.txt, e.g. with pip install -r requirements.txt.
  5. Install pyTorch 1.0

Usage

Training a model is straight forward. For instance, to reproduce the results for the country predicate of WikiHop use

python train.py configs/country_sent2vec.json

To evaluate the trained model use

python evaluate.py model/country_sent2vec

This will generate a new results file in results/ which can be analyzed like shown in this example notebook.

To train a model on your own data, convert it to the WikiHop format, place it into data/ and put a configuration file into configs/.

You can’t perform that action at this time.