Warning: This document is for an old version of Rasa NLU. The latest version is 0.15.1.



For windows

Make sure the Microsoft VC++ Compiler is installed, so python can compile any dependencies. You can get the compiler from: https://visualstudio.microsoft.com/visual-cpp-build-tools/ Download the installer and select VC++ Build tools in the list.

Setting up Rasa NLU

The recommended way to install Rasa NLU is using pip:

pip install rasa_nlu

If you want to use the bleeding edge version you can get it from github:

git clone https://github.com/RasaHQ/rasa_nlu.git
cd rasa_nlu
pip install -r requirements.txt
pip install -e .

Rasa NLU has different components for recognizing intents and entities, most of these will have some additional dependencies.

When you train your model, Rasa NLU will check if all required dependencies are installed and tell you if any are missing.


If you want to make sure you have the dependencies installed for any component you might ever need, and you don’t mind the additional dependencies lying around, you can use

pip install -r alt_requirements/requirements_full.txt

to install everything.

Installing Pipeline Dependencies

Section Pipeline and Component Configuration will help you choose which pipeline you want to use.

Great for getting started: spaCy + sklearn

The spacy_sklearn pipeline combines a few different libraries and is a popular option.

You can install it with this command (for more information visit the spacy docs):

pip install rasa_nlu[spacy]
python -m spacy download en_core_web_md
python -m spacy link en_core_web_md en

This will install Rasa NLU as well as spacy and its language model for the english language. We recommend using at least the “medium” sized models (_md) instead of the spacy’s default small en_core_web_sm model. Small models require less memory to run, but will somewhat reduce intent classification performance.

First Alternative: Tensorflow

To use the tensorflow_embedding pipeline you will need to install tensorflow as well as the scikit-learn and sklearn-crfsuite libraries. To do this, run the following command:

pip install rasa_nlu[tensorflow]

Second Alternative: MITIE

The MITIE backend performs well for small datasets, but training can take very long if you have more than a couple of hundred examples. We may deprecate the MITIE backend in the future.

First, run

pip install git+https://github.com/mit-nlp/MITIE.git
pip install rasa_nlu[mitie]

and then download the MITIE models. The file you need is total_word_feature_extractor.dat. Save this somewhere, if you want to use mitie, you need to tell it where to find this file.

The complete pipeline for mitie can be found here

language: "en"

- name: "nlp_mitie"
  model: "data/total_word_feature_extractor.dat"
- name: "tokenizer_mitie"
- name: "ner_mitie"
- name: "ner_synonyms"
- name: "intent_entity_featurizer_regex"
- name: "intent_classifier_mitie"


Training MITIE can be quite slow on datasets with more than a few intents. You can try

  • to use the sklearn + MITIE backend instead (which uses sklearn for the training) or
  • you can install our mitie fork which should reduce the training time as well.

Another Alternative: sklearn + MITIE

There is another backend that combines the advantages of the two previous ones:

  1. the fast and good intent classification from sklearn and
  2. the good entitiy recognition and feature vector creation from MITIE

Especially, if you have a larger number of intents (more than 10), training intent classifiers with MITIE can take very long.

To use this backend you need to follow the instructions for installing both, sklearn and MITIE.

Example pipeline configuration for the use of MITIE together with sklearn:

language: "en"

- name: "nlp_mitie"
  model: "data/total_word_feature_extractor.dat"
- name: "tokenizer_mitie"
- name: "ner_mitie"
- name: "ner_synonyms"
- name: "intent_entity_featurizer_regex"
- name: "intent_featurizer_mitie"
- name: "intent_classifier_sklearn"