Package: neuralqa
NeuralQA: A Usable Library for (Extractive) Question Answering on Large Datasets with BERTStill inalpha, lots of changes anticipated. View demo onneuralqa.fastforwardlabs.com.NeuralQAprovides an easy to use api and visual interface for Extractive Question Answering (QA),
on large datasets. The QA process is comprised of two main stages -Passage retrieval (Retriever)is implemented usingElasticSearchandDocument Reading (Reader)is implemented using pretrained BERT models via the
HuggingfaceTransformersapi.Usagepip3installneuralqaCreate (or navigate to) a folder you would like to use with NeuralQA. Run the following command line instruction within that folder.neuralqaui--port4000navigate tohttp://localhost:4000/#/to view the NeuralQA interface. Learn about other command line options in the documentationhereor how toconfigureNeuralQA to use your own reader models or retriever instances.Note: To use NeuralQA with a retriever such as ElasticSearch, follow theinstructions hereto download, install, and launch a local elasticsearch instance and add it to your config.yaml file.How Does it Work?NeuralQA is comprised of several high level modules:Retriever: For each search query (question), scan an index (elasticsearch), and retrieve a list of candidate matched passages.Reader: For each retrieved passage, a BERT based model predicts a span that contains the answer to the question. In practice, retrieved passages may be lengthy and BERT based models can process a maximum of 512 tokens at a time. NeuralQA handles this in two ways. Lengthy passages are chunked into smaller sections with a configurable stride. Secondly, NeuralQA offers the option of extracting a subset of relevant snippets (RelSnip) which a BERT reader can then scan to find answers. Relevant snippets are portions of the retrieved document that contain exact match results for the search query.Expander: Methods for generating additional (relevant) query terms to improve recall. Currently, we implement Contextual Query Expansion using finetuned Masked Language Models. This is implemented via a user in the loop flow where the user can choose to include any suggested expansion terms.User Interface: NeuralQA provides a visual user interface for performing queries (manual queries where question and context are provided as well as queries over a search index), viewing results and also sensemaking of results (reranking of passages based on answer scores, highlighting keyword match, model explanations).ConfigurationProperties of modules within NeuralQA (ui, retriever, reader, expander) can be specified via ayaml configurationfile. When you launch the ui, you can specify the path to your config file--config-path. If this is not provided, NeuralQA will search for a config.yaml in the current folder or create adefault copy) in the current folder. Sample configuration shown below:ui:queryview:intro:title:"NeuralQA:QuestionAnsweringonLargeDatasets"subtitle:"Subtitleofyourchoice"views:# select sections of the ui to hide or showintro:Trueadvanced:Truesamples:Falsepassages:Trueexplanations:Trueallanswers:Trueoptions:# values for advanced optionsstride:..maxpassages:..highlightspan:..header:# header tile for uiappname:NeuralQAappdescription:Question Answering on Large Datasetsreader:title:Readerselected:twmkn9/distilbert-base-uncased-squad2options:-name:DistilBERT SQUAD2value:twmkn9/distilbert-base-uncased-squad2type:distilbert-name:BERT SQUAD2value:deepset/bert-base-cased-squad2type:bertDocumentationAn attempt is being made to better document NeuralQA here -https://victordibia.github.io/neuralqa/.CitationA paper introducing NeuralQA and its components can befound here.@article{dibia2020neuralqa,
    title={NeuralQA: A Usable Library for Question Answering (Contextual Query Expansion + BERT) on Large Datasets},
    author={Victor Dibia},
    year={2020},
    journal={arXiv preprint arXiv:2007.15211}
}