Rasa NLU (Natural Language Understanding) is a tool for understanding what is being said in short pieces of text. For example, taking a short message like:
"I'm looking for a Mexican restaurant in the center of town"
And returning structured data like:
intent: search_restaurant entities: - cuisine : Mexican - location : center
Rasa NLU is primarily used to build chatbots and voice apps, where this is called intent classification and entity extraction. To use Rasa, you have to provide some training data. That is, a set of messages which you've already labelled with their intents and entities. Rasa then uses machine learning to pick up patterns and generalise to unseen sentences.
You can think of Rasa NLU as a set of high level APIs for building your own language parser using existing NLP and ML libraries. Find out more on the homepage of the project, where you can also sign up for the mailing list.
- stable (if you install from X.X.X docker image or pypi)
- latest (if you install from latest docker image or github)
If you are new to Rasa NLU and want to create a bot, you should start with the tutorial.
Via Docker Image From docker hub:
docker run -p 5000:5000 rasa/rasa_nlu:latest-full
(for more docker installation options see Advanced Docker Installation)
Via Python Library From pypi:
pip install rasa_nlu python -m rasa_nlu.server &
(for more python installation options see Advanced Python Installation)
The below command can be executed for either method used above.
Get the Server Status
Check the Server Version
Training New Models
curl 'https://raw.githubusercontent.com/RasaHQ/rasa_nlu/master/data/examples/rasa/demo-rasa.json' | \ curl --request POST --header 'content-type: application/json' -d@- --url 'localhost:5000/train?project=test_model&pipeline=keyword'
This will train a simple keyword based models (not usable for anything but this demo). For better pipelines consult the documentation.
wget 'https://raw.githubusercontent.com/RasaHQ/rasa_nlu/master/data/examples/rasa/demo-rasa.md' curl --request POST --data-binary @demo-rasa.md --url 'localhost:5000/train?project=test_model&pipeline=keyword'
The above command does the following:
- It Fetches some of the example data in the repo
POSTSthat data to the
/trainendpoint and names the model
Parsing New Requests
Make sure the above command has finished before executing the below. You can check with the
/status command above.
Who is it for?
The intended audience is mainly people developing bots, starting from scratch or looking to find a a drop-in replacement for wit, LUIS, or api.ai. The setup process is designed to be as simple as possible. Rasa NLU is written in Python, but you can use it from any language through a HTTP API. If your project is written in Python you can simply import the relevant classes. If you're currently using wit/LUIS/api.ai, you just:
- Download your app data from wit, LUIS, or api.ai and feed it into Rasa NLU
- Run Rasa NLU on your machine and switch the URL of your wit/LUIS api calls to
Why should I use Rasa NLU?
- You don't have to hand over your data to FB/MSFT/GOOG
- You don't have to make a
httpscall to parse every message.
- You can tune models to work well on your particular use case.
These points are laid out in more detail in a blog post. Rasa is a set of tools for building more advanced bots, developed by the company Rasa. Rasa NLU is the natural language understanding module, and the first component to be open sourced.
What languages does it support?
Short answer: English, German, and Spanish currently. Longer answer: If you want to add a new language, the key things you need are a tokenizer and a set of word vectors. More information can be found in the language documentation.
How to contribute
We are very happy to receive and merge your contributions. There is some more information about the style of the code and docs in the documentation.
In general the process is rather simple:
- create an issue describing the feature you want to work on (or have a look at issues with the label help wanted)
- write your code, tests and documentation
- create a pull request describing your changes
You pull request will be reviewed by a maintainer, who might get back to you about any necessary changes or questions.
git clone firstname.lastname@example.org:RasaHQ/rasa_nlu.git cd rasa_nlu pip install -r requirements.txt
To test the installation use (this will run a very stupid default model. you need to train your own model to do something useful!):
Before you start, ensure you have the latest version of docker engine on your machine. You can check if you have docker installed by typing
docker -v in your terminal.
To see all available builds go to the Rasa docker hub, but to get up and going the quickest just run:
docker run -p 5000:5000 rasa/rasa_nlu:latest-full
There are also three volumes, which you may want to map:
/app/data. It is also possible to override the config file used by the server by mapping a new config file to the volume
/app/config.json. For complete docker usage instructions go to the official docker hub readme.
To test run the below command after the container has started. For more info on using the HTTP API see here
Warning! setting up Docker Cloud is quite involved - this method isn't recommended unless you've already configured Docker Cloud Nodes (or swarms)
Steps to release a new version
Releasing a new version is quite simple, as the packages are build and distributed by travis. The following things need to be done to release a new version
- update rasa_nlu/version.py to reflect the correct version number
- edit the CHANGELOG.rst, create a new section for the release (eg by moving the items from the collected master section) and create a new master logging section
- edit the migration guide to provide assistance for users updating to the new version
- commit all the above changes and tag a new release, e.g. using
travis will build this tag and push a package to pypi
git tag -f 0.7.0 -m "Some helpful line describing the release" git push origin master --tags
- only if it is a major release, a new branch should be created pointing to the same commit as the tag to allow for future minor patches, e.g.
git checkout -b 0.7.x git push origin 0.7.x
Licensed under the Apache License, Version 2.0. Copyright 2017 Rasa Technologies GmbH. Copy of the license.
As a reference, the following contains a listing of the licenses of the different dependencies as of this writing. Licenses of minimal dependencies:
|boto3||Apache License 2.0|
|requests||Apache Licence 2.0|
Licenses of optional dependencies (only required for certain components of Rasa NLU. Hence, they are optional):
|MITIE||Boost Software License 1.0|
|duckling||Apache License 2.0|
|google-cloud-storage||Apache License 2.0|