The PPP framework is based on a modular approach. The input is passed from the user interface to a core that distributes it between modules. Each module can do whatever it wants to simplify the input or solve it partially. This operation is repeated as long as there are improvements in the results. Then, the core returns these results and the user interface displays them to the user.

The PPP has been designed in order to allow everyone to implement its own module (astronomy module, cooking module…) and connect it easily to our project. A tutorial is provided.

Here is a partial overview of the current structure:

PPP structure

The communication between modules are done in a standardized way. The specifications are provided in the Documentation repository.

Current modules

Basic information about the main modules currently available:


The main module of the PPP infrastructure. Coordinates the work of the other modules.

User interfaces

Web user interface

A single page web application used as main user interface of the Platypus demo.

Question Parsing

The goal of these modules is to transform questions into trees of triples.

For instance, the question “What is the birth date of the president of France?” would be transformed into the triple ((France, president, ?), birth date, ?).


Produces trees of triples with a grammatical approach: we focus on the grammatical dependencies that exist between words.

Uses the Stanford CoreNLP and the NLTK libraries.

Machine Learning - Reformulation

Reformulates the triples produced by the Grammatical module, to obtain triples which are closer of what is expected by the Wikidata module.

Machine Learning - Standalone

Produces triples from scratch, without any grammatical library.

Other modules


Answers general knowledge question, using the data stored in Wikidata and Wikipedia.

Uses the Wikidata API, the WikidataQuery API and the Wikipedia API.

Computer Algebra System

Answers mathematical queries.

Uses Simpy and Ply.

Spell Checker

Performs spell-checking on the input sentence.

Uses the Aspell API.

Integer sequences

Answer to queries related to integer sequences: identify them and give the following integers.

Uses the OEIS API.

Logging backend

Logging of the questions, to help developers to enhance their modules.


Internal documents

####Technical documentation

Getting started document and data model and module communication specifications.

####Literature review

How to answer questions in natural language using existing structured databases?

ENS project documents (outdated)

####Final report

Published on December the 20th, 2014.

Detailed presentation of the project after three months of work (end of the school semester).

####Public presentation

Published on December the 18th, 2014.

Slides of the presentation held at the ENS Lyon on December 18th, 2014.

####Midterm report

Published on November the 4th, 2014.

Presentation of our achievements after one month and a half of work (half of the school semester).

####Project proposal

Published on October the 3rd, 2014.

Presentation of what we intended to do at the beginning of the project.