ATIS.keras: A Minimal Keras Implementation of Slot Filling for Spoken Language Understanding
Spoken Language Understanding(SLU)/Slot Filling in Keras
At a glance
- What is it?
- ATIS.keras is a compact tutorial project that applies RNNs in Keras to the Airline Travel Information System dataset for slot filling. It offers a clear, code-first introduction to sequence labeling, but it is not a production-ready library.
- Who is it for?
- Adopt ATIS.keras if you are a student or developer who wants to see a minimal, working Keras example of sequence labeling for slot filling on the ATIS dataset. Do not adopt it for a production SLU system; it is a tutorial, not a maintained library.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Probably not. The repository last received commits 98 months ago, on September 19, 2018.
- What is it written in?
- Mainly Python, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 21, 2026, and from our analysis. They are not legal advice.
Star history
- chsasank/ATIS.keras100 ★ · +0
| Repository | 2026-08-18 | 2026-10-21 |
|---|---|---|
| chsasank/ATIS.keras | 100 | 100 |
0 Stars in the last 64 days, measured from the daily GitHub snapshot. Compare with other projects
Editorial analysis
What This Project Actually Solves
ATIS.keras addresses a specific machine learning task: slot filling for spoken language understanding. Given a user utterance like "Show flights from Boston to New York today," the model must label each word with a semantic slot, such as departure city, arrival city, or date. This is a sequence labeling problem, similar to named entity recognition but tailored to airline travel queries. The project is aimed at learners who want to see how to build such a model with Keras, not at engineers looking for a deployable component. The README explicitly positions it as a tutorial, and the accompanying blog post at chsasank.github.io/spoken-language-understanding.html provides the narrative. If you already know how to build RNNs in Keras, you will find little here beyond a reference example.
The Mechanism: RNNs and Word Embeddings
The core mechanism is a recurrent neural network applied to word sequences. The tutorial implements RNNs in Keras, which means it uses layers like SimpleRNN, LSTM, or GRU, though the README does not specify which one. The key point is that the model processes each sentence word by word, maintaining a hidden state that captures context from previous words. This context is essential for slot filling, because the label of a word often depends on surrounding words. For instance, "New" in "New York" is labeled I-arr, which only makes sense if the model knows that "York" follows. The project also illustrates word embeddings. Instead of feeding raw one-hot vectors, the model learns dense vector representations for each word. These embeddings are trained as part of the network, so similar words end up with similar vectors. The data flow is straightforward: sentences are tokenized, each token is mapped to an embedding, the sequence of embeddings goes through the RNN, and the output layer produces a label for each token. The ATIS dataset provides the labeled examples, with tags like B-dept for the beginning of a departure city and I-arr for inside an arrival city.
Getting It Running: Commands and Configuration
The README does not list installation commands, but the project is a Python repository with a standard structure. To run it, you would typically clone the repository, install Keras and its backend (TensorFlow or Theano, depending on the era of the code), and execute the training script. The README mentions that the code is in a tutorial format, so there is likely a single Python file or a small set of scripts. Since the repository is named ATIS.keras and the primary language is Python, you can expect a file like atis.py or train.py. The configuration is minimal: you would set hyperparameters such as the number of hidden units, the embedding dimension, and the number of epochs directly in the script. The README does not expose any config keys, which is consistent with a tutorial that favors simplicity over flexibility. The blog post probably contains the full code and explanations, so that is the first place to look for exact usage.
Limitations: A Tutorial, Not a Framework
The most obvious limitation is that this is a tutorial project, not a maintained library. There are no releases, and the last push is unknown, so you cannot rely on updates. The code may depend on older Keras versions, which have changed significantly over the years. The README does not mention any testing or evaluation metrics beyond the example, so you cannot judge its accuracy. The ATIS dataset is small and domain-specific, so the model will not generalize to other SLU tasks without significant changes. The project also ignores many practical concerns: handling out-of-vocabulary words, dealing with variable-length sentences, and integrating with a speech recognition front end. If you need a production-ready slot filling system, this is the wrong tool. It is also the wrong tool if you want to learn modern Keras with TensorFlow 2.x, because the code likely uses the old Keras API.
The Alternative: Modern Sequence Labeling Libraries
A real alternative is to use a dedicated NLP library like Hugging Face's Transformers, which provides pre-trained models for token classification. The difference in approach is fundamental: ATIS.keras trains an RNN from scratch on the ATIS dataset, learning embeddings and recurrent weights from the labeled examples. Transformers, on the other hand, start with a pre-trained language model like BERT or RoBERTa, which has already learned general language representations from massive text corpora. You then fine-tune the model on your slot filling task. This approach typically yields higher accuracy, especially with small datasets like ATIS, because the pre-trained model brings in prior knowledge. However, it requires much more computational resources and a deeper understanding of transformer architectures. If you want a simple, from-scratch baseline, ATIS.keras is fine. If you want state-of-the-art results, you should look at Transformers or similar libraries.
Maintenance and License Implications
The project is licensed under MIT, which means you can use, modify, and distribute the code freely, even in commercial products, as long as you include the original copyright notice. This is a permissive license, so there are few restrictions. However, the maintenance situation is weak. The repository has no recent releases, and the last push is unknown, suggesting that the author may have moved on. The code is likely tied to a specific version of Keras, so you may encounter compatibility issues if you try to run it with a modern TensorFlow installation. The README points to a blog post, which is a good sign for documentation, but it also means the project is a teaching artifact rather than a living codebase. If you adopt it, you take on the responsibility of updating the Keras calls and ensuring the data preprocessing still works with your environment.
Editorial conclusion
Adopt ATIS.keras if you are a student or developer who wants to see a minimal, working Keras example of sequence labeling for slot filling on the ATIS dataset. Do not adopt it for a production SLU system; it is a tutorial, not a maintained library. Before using it, verify that your Keras and TensorFlow versions are compatible, since the code may rely on older APIs. Check the blog post for the full explanation, and be ready to adapt the code to your own data format.
Frequently asked questions
What is ATIS in the ATIS.keras repository?
The Airline Travel Information System dataset. The repository implements RNNs in Keras to solve that dataset as a slot filling task, using sentences such as Show flights from Boston to New York today with per-token labels like B-dept, B-arr, I-arr, and B-date.
How do I run the ATIS.keras tutorial?
The repository ships the dataset as atis.pkl and atis.fold1.pkl.gz and keeps the code in main.py at the root, so there is no download step. The only stated requirement is to install progressbar2, numpy, and keras from requirements.txt.
Why does the example in ATIS.keras tag New York with two different labels?
Because it is a two-token value. New York is labelled B-arr followed by I-arr, marking the beginning of the arrival city and its continuation, while a single-token value such as Boston takes only a B-dept tag.
Does the ATIS.keras tutorial cover word embeddings?
Yes, and it says so explicitly as a second topic. The README states that the tutorial also illustrates word embeddings, alongside implementing RNNs in Keras for the ATIS dataset.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/chsasank-atis-keras)Star history chart for your README
[](https://hysenlabs.com/projects/chsasank-atis-keras)