Skip to content


Repository files navigation


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


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.


  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


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

python configs/country_sent2vec.json

To evaluate the trained model use

python 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/.


Neural Logic Reasoning for Question Answering







No releases published


No packages published