Conversational Question Answering over Knowledge Graphs with Transformer and Graph Attention Networks
This paper addresses the task of (complex) conversational question answering over a knowledge graph. For this task, we propose LASAGNE (muLti-task semAntic parSing with trAnsformer and Graph atteNtion nEtworks). It is the first approach, which employs a transformer architecture extended with Graph Attention Networks for multi-task neural semantic parsing. LASAGNE uses a transformer model for generating the base logical forms, while the Graph Attention model is used to exploit correlations between (entity) types and predicates to produce node representations. LASAGNE also includes a novel entity recognition module which detects, links, and ranks all relevant entities in the question context. We evaluate LASAGNE on a standard dataset for complex sequential question answering, on which it outperforms existing baseline averages on all question types. Specifically, we show that LASAGNE improves the F1-score on eight out of ten question types; in some cases, the increase in F1-score is more than 20% compared to the state of the art.
LASAGNE (Multi-task Semantic Parsing with Transformer and Graph Attention Networks) architecture. It consists of three modules: 1) A semantic parsing-based transformer model, containing a contextual encoder and a grammar guided decoder using the proposed grammar. 2) An entity recognition module, which identifies all the entities in the context, together with their types, linking them to the knowledge graph. It filters them based on the context and permutes them, in case of more than one required entity. Finally, 3) a graph attention-based module that uses a GAT network initialised with BERT embeddings to incorporate and exploit correlations between (entity) types and predicates. The resulting node embeddings, together with the context hidden state and decoder hidden state, are used to score the nodes and predict the corresponding type and predicate.
Python version >= 3.7
PyTorch version >= 1.6.0
PyTorch Geometric (PyG) >= 1.6.1
# clone the repository
git clone https://github.com/endrikacupaj/LASAGNE.git
cd LASAGNE
pip install -r requirements.txt
We evaluate LASAGNE on CSQA dataset. You can download the dataset from here.
CSQA dataset is based on Wikidata Knowlegde Graph, the authors provide a preproccesed version of it which can be used when working with the dataset. You can download the preprocessed Wikidata knowlegde graph files from here. After dowloading you will need to move them under the knowledge_graph directory.
We prefer to merge some JSON files from the preprocessed Wikidata, for accelerating the process of reading all the knowledge graph files. In particular, we create three new JSON files using the script prepare_data.py. Please execute the script as below.
# prepare knowlegde graph files
python scripts/prepare_data.py
For building an inverted index on wikidata entities we use elastic search. Consider the script file csqa_elasticse.py for doing so.
Next, using the preproccesed Wikidata files we can annotate CSQA dataset with our grammar. At the same time we also annotate the entity spans for all utterances.
# annotate CSQA dataset with entity spans and our grammar
python annotate_csqa/preprocess.py --partition train --annotation_task all --read_folder /path/to/CSQA --write_folder /path/to/write
Before training the framework, we need to create BERT embeddings for the knowledge graph (entity) types and relations. You can do that by running.
# create bert embeddings
python scripts/bert_embeddings.py
For training you will need to adjust the paths in args file. At the same file you can also modify and experiment with different model settings.
# train framework
python train.py
For testing we have two steps.
First, we generate the actions and save then in JSON file using the trained model.
# generate actions for a specific question type
python inference.py --question_type Clarification
Second, we execute the actions and get the results from Wikidata files.
# execute actions for a specific question type
python action_executor/run.py --file_path /path/to/actions.json --question_type Clarification
The repository is under MIT License.
@inproceedings{kacupaj-etal-2021-conversational,
title = "Conversational Question Answering over Knowledge Graphs with Transformer and Graph Attention Networks",
author = "Kacupaj, Endri and
Plepi, Joan and
Singh, Kuldeep and
Thakkar, Harsh and
Lehmann, Jens and
Maleshkova, Maria",
booktitle = "Proceedings of the 16th Conference of the European Chapter of the Association for Computational Linguistics: Main Volume",
month = apr,
year = "2021",
address = "Online",
publisher = "Association for Computational Linguistics",
url = "https://www.aclweb.org/anthology/2021.eacl-main.72",
pages = "850--862",
abstract = "This paper addresses the task of (complex) conversational question answering over a knowledge graph. For this task, we propose LASAGNE (muLti-task semAntic parSing with trAnsformer and Graph atteNtion nEworks). It is the first approach, which employs a transformer architecture extended with Graph Attention Networks for multi-task neural semantic parsing. LASAGNE uses a transformer model for generating the base logical forms, while the Graph Attention model is used to exploit correlations between (entity) types and predicates to produce node representations. LASAGNE also includes a novel entity recognition module which detects, links, and ranks all relevant entities in the question context. We evaluate LASAGNE on a standard dataset for complex sequential question answering, on which it outperforms existing baselines averaged on all question types. Specifically, we show that LASAGNE improves the F1-score on eight out of ten question types; in some cases, the increase is more than 20{\%} compared to state of the art (SotA).",
}