/MemN2N-babi-python

End-To-End Memory Networks for bAbI question-answering tasks

Primary LanguagePythonOtherNOASSERTION

End-To-End Memory Networks for Question Answering

This is an implementation of MemN2N model in Python for the bAbI question-answering tasks as shown in the Section 4 of the paper "End-To-End Memory Networks". It is based on Facebook's Matlab code.

Web-based Demo

Requirements

  • Python 2.7
  • Numpy, Flask (only for web-based demo) can be installed via pip:
$ sudo pip install -r requirements.txt
  • bAbI dataset should be downloaded to data/tasks_1-20_v1-2:
$ wget -qO- http://www.thespermwhale.com/jaseweston/babi/tasks_1-20_v1-2.tar.gz | tar xvz -C data

Usage

  • To run on a single task, use babi_runner.py with -t followed by task's id. For example,
python babi_runner.py -t 1

The output will look like:

Using data from data/tasks_1-20_v1-2/en
Train and test for task 1 ...
1 | train error: 0.876116 | val error: 0.75
|===================================               | 71% 0.5s
  • To run on 20 tasks:
python babi_runner.py -a
  • To train using all training data from 20 tasks, use the joint mode:
python babi_runner.py -j

Question Answering Demo

  • In order to run the Web-based demo using the pretrained model memn2n_model.pklz in trained_model/, run:
python -m demo.qa
  • Alternatively, you can try the console-based demo:
python -m demo.qa -console
  • The pretrained model memn2n_model.pklz can be created by running:
python -m demo.qa -train
  • To show all options, run python -m demo.qa -h

Benchmarks

See the results here.

Author

Vinh Khuc

Future Plans

  • Port to TensorFlow/Keras
  • Support Python 3

References