Skip to content

WDAqua/Qanary

Repository files navigation

A Reference Implementation for Creating Question Answering Systems following the Qanary Methodology

Qanary in a Nutshell

TL;DR: The Qanary framework takes a best-of-breed approach to the integration of Question Answering (QA) components. It enables rapid development of QA systems that are flexible, extensible, reusable and provide built-in features to measure the quality of the QA quality.

Qanary is a methodology for creating Question Answering Systems it is part of the WDAqua project where question answering systems are researched and developed. For all the publications related to Qanary please see the section publications. W.r.t. questions, ideas or any feedback related to Qanary please do not hesitate to contact the core developers. However, if you like to see a QA system built using the Qanary framework, one of our core developers has build a complete end-to-end QA system which allows to query several RDF data stores: http://wdaqua.eu/qa.

Please go to the GitHub Wiki page of this repository to get more insights on how to use this framework, how to add new component etc.

Here, we provide our key contributions on-top of the RDF vocabulary qa: the reference implementation of the Qanary methodology. This repository contributes several sub-resources for the Question Answering Community to build knowledge-driven QA systems incorporating a standard RDF vocabulary named "qa".

All the resources are reusable. For detailed description of individual resources, we kindly refer to the Wiki section of this repository. The Qanary Question Answering components maintained by the core developers are available here (in a separated Git repository); it contains typical components that where provided from and for the community. They require to first clone the Qanary framework repository and execute mvn install. Although many components are available already, this is still just the beginning, many more components will be published soon.

The following sub-project are part of the Qanary core frameworks:

  • Qanary Pipeline implementation: a central component where components for question answering systems are connected automatically and can be called by Web UIs
  • Qanary component implementations: components providing wrappers to existing functionality or implement new question answering approaches
  • the additional resource QALD evaluator: a client for the Qanary Pipeline evaluating the capabilities w.r.t. named entity recognition and disambiguation of a given Qanary Pipeline configuration with the QALD benchmark (Question Answering over Linked Data) data

Qanary Pipeline

source

More details follow soon.

Qanary component template

source

More details follow soon.

Additional Resource

QALD evaluator

source

More details follow soon.

QALD annotated with named entities

source

More details follow soon.

Publications / References

If you want to inform yourself about the Qanary methodology in general, please use this publication: Andreas Both, Dennis Diefenbach, Kuldeep Singh, Saedeeh Shekarpour, Didier Cherix and Christoph Lange: Qanary - A Methodology for Vocabulary-driven Open Question Answering Systems appearing in 13th Extended Semantic Web Conference, 2016.

For additional publication we suggest to follow this list of publications

Stuff used to make this:

How to run the code

How to build a complete tiny Question Answering system driven by Qanary is described here.

Without creating Docker images

  1. Clone the GitHub repository: git clone https://github.com/WDAqua/Qanary

  2. Install Java 8 or higher (see http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html for details)

  3. Install Maven 3.5.2 or higher (see https://maven.apache.org/install.html for details)

  4. Install Stardog Triplestore (http://stardog.com/) and start it in background. Create a database with the name qanary. All the triples generated by the components will be stored in the qanary database. We use version 7 of Stardog.

  5. Switch to Qanary directoy: cd Qanary

  6. Configure your pipeline appropriately. A common pitfall is the Stardog Triplestore. If you're using a regular Stardog Triplestore running locally on port 5280 with the database qanary and the credentials admin/admin, simply use the following configuration:

stardog.url=http://127.0.0.1:5820/qanary
stardog.username=admin
stardog.password=admin
  1. Build the components (creating Docker images is skipped):
   mvn clean install -Ddockerfile.skip=true
  1. Run the pipeline component:
   cd qanary_pipeline-template/target/
   java -jar target/qa.pipeline-<version>.jar
  1. After running corresponding component JAR files, you can see Spring Boot application running on http://localhost:8080/#/overview that will tell the status of currently running components.
  1. Now your pipeline is ready to use. Go to http://localhost:8080/startquestionansweringwithtextquestion. Here you can find a User Interface to interact for adding question via web interface, and then select the components you need to include in the pipeline via checking a checkbox for each component. Press the start button and you are ready to go!

Including the creation of Docker instances

  • Follow the steps described in the previous section.

  • Install the Docker environment (see https://docs.docker.com/engine/installation/ for details)

  • Start the Docker service (see https://docs.docker.com/engine/admin/ for details)

  • Configure your pipeline as needed. Not doing so can cause the pipeline to fail.

  • Build your project using maven: mvn clean install (note: you might also add -Ddockerfile.skip=false to express that Docker images are created)

    • The install goal will compile, test, and package your project’s code and then copy it into the local dependency repository. Additionally, it will generate docker images for each component that will be stored in your local repository.
  • Start the Qanary Docker containers.

  • Now your pipeline is ready to use. Go to http://localhost:8080/startquestionansweringwithtextquestion. Here you can find a User Interface to interact for adding question via web interface, and then select the components you need to include in the pipeline via checking a checkbox for each component. Press the start button and you are ready to go!

Using Qanary for your work

  • Our Wiki page contains all the information about how to integrate a new component and also about the easy usability of Qanary framework. We have illustrated inclusion of a new component with example in Wiki page. Please refer to it.