WDAqua / Qanary

Qanary a methodology to construct and share resources to build QA systems
55 stars 25 forks source link
java knowledge-graph-question-answering knowlege-graph qa-systems qaframework qanary qapipeline

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 built a complete end-to-end QA system that 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 components 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 a 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 are required 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-projects are part of the Qanary core frameworks:

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 publications, 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 the 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 directory: 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
  7. Build the components (creating Docker images and deployment to Maven central are skipped):

    mvn clean install -Ddockerfile.skip=true -Dgpg.skip 
  8. Run the pipeline component:

    cd qanary_pipeline-template/target/
    java -jar target/qa.pipeline-<version>.jar
  9. After running the corresponding component JAR files, you can see the Spring Boot application running on http://localhost:8080/#/overview that will tell the status of currently running components.

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

Including the creation of Docker instances