This is an implementation of NLProlog, a method for approaching Question Answering tasks with Prolog-like reasoning over natural language statements.
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.
- The python version has to be at least
- 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.
- 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.
- Install the
requirements.txt, e.g. with
pip install -r requirements.txt.
- Install pyTorch 1.0
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