readme: ---
  language: en
  license: cc-by-4.0
  widget:
  - context: "Yes. No. I'm looking for a cheap flight to Boston."
  datasets:
  - atis
  ---
  
  # Question Answering NLU
  
  Question Answering NLU (QANLU) is an approach that maps the NLU task into question answering, 
  leveraging pre-trained question-answering models to perform well on few-shot settings. Instead of 
  training an intent classifier or a slot tagger, for example, we can ask the model intent- and 
  slot-related questions in natural language: 
  
  ```
  Context : Yes. No. I'm looking for a cheap flight to Boston.
  
  Question: Is the user looking to book a flight?
  Answer  : Yes
  
  Question: Is the user asking about departure time?
  Answer  : No
  
  Question: What price is the user looking for?
  Answer  : cheap
  
  Question: Where is the user flying from?
  Answer  : (empty)
  ```
  
  Note the "Yes. No. " prepended in the context. Those are to allow the model to answer intent-related questions (e.g. "Is the user looking for a restaurant?").
  
  Thus, by asking questions for each intent and slot in natural language, we can effectively construct an NLU hypothesis. For more details, please read the paper: [Language model is all you need: Natural language understanding as question answering](https://assets.amazon.science/33/ea/800419b24a09876601d8ab99bfb9/language-model-is-all-you-need-natural-language-understanding-as-question-answering.pdf).
  
  ## Model training
  
  Instructions for how to train and evaluate a QANLU model, as well as the necessary code for ATIS are in the [Amazon Science repository](https://github.com/amazon-research/question-answering-nlu).
  
  ## Intended use and limitations
  
  This model has been fine-tuned on ATIS (English) and is intended to demonstrate the power of this approach. For other domains or tasks, it should be further fine-tuned 
  on relevant data.
  
  ## Use in transformers:
  
  ```python
  from transformers import AutoTokenizer, AutoModelForQuestionAnswering, pipeline
    
  tokenizer = AutoTokenizer.from_pretrained("AmazonScience/qanlu", use_auth_token=True)
  
  model = AutoModelForQuestionAnswering.from_pretrained("AmazonScience/qanlu", use_auth_token=True)
  
  qa_pipeline = pipeline('question-answering', model=model, tokenizer=tokenizer)
  
  qa_input = {
    'context': 'Yes. No. I want a cheap flight to Boston.',
    'question': 'What is the destination?'
  }
  
  answer = qa_pipeline(qa_input)
  ```
  
  ## Citation
  If you use this work, please cite:
  
  ```
  @inproceedings{namazifar2021language,
    title={Language model is all you need: Natural language understanding as question answering},
    author={Namazifar, Mahdi and Papangelis, Alexandros and Tur, Gokhan and Hakkani-T{\"u}r, Dilek},
    booktitle={ICASSP 2021-2021 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
    pages={7803--7807},
    year={2021},
    organization={IEEE}
  }
  ```
  
  ## License
  
  This library is licensed under the CC BY NC License.