Table of Contents
Fetching ...

Rasa: Open Source Language Understanding and Dialogue Management

Tom Bocklisch, Joey Faulkner, Nick Pawlowski, Alan Nichol

TL;DR

The paper introduces Rasa NLU and Rasa Core as open-source, modular tools for language understanding and dialogue management, targeting non-expert developers and enabling bootstrapping from minimal data. It outlines a decoupled architecture with per-conversation trackers, configurable NLU pipelines, and action-based dialogue policies, along with machine teaching and visual tools to facilitate data creation and debugging. Key contributions include a practical, developer-friendly API, interactive data-generation via machine teaching, and visualization of training dialogues through story graphs, plus deployment guidance using Docker for reproducible production systems. The work demonstrates the approach on a restaurant-slot filling task and discusses an active development path toward reinforcement learning, robustness to user input variability, multilingual support, and real-world datasets, signaling significant impact for accessible conversational AI tooling.

Abstract

We introduce a pair of tools, Rasa NLU and Rasa Core, which are open source python libraries for building conversational software. Their purpose is to make machine-learning based dialogue management and language understanding accessible to non-specialist software developers. In terms of design philosophy, we aim for ease of use, and bootstrapping from minimal (or no) initial training data. Both packages are extensively documented and ship with a comprehensive suite of tests. The code is available at https://github.com/RasaHQ/

Rasa: Open Source Language Understanding and Dialogue Management

TL;DR

The paper introduces Rasa NLU and Rasa Core as open-source, modular tools for language understanding and dialogue management, targeting non-expert developers and enabling bootstrapping from minimal data. It outlines a decoupled architecture with per-conversation trackers, configurable NLU pipelines, and action-based dialogue policies, along with machine teaching and visual tools to facilitate data creation and debugging. Key contributions include a practical, developer-friendly API, interactive data-generation via machine teaching, and visualization of training dialogues through story graphs, plus deployment guidance using Docker for reproducible production systems. The work demonstrates the approach on a restaurant-slot filling task and discusses an active development path toward reinforcement learning, robustness to user input variability, multilingual support, and real-world datasets, signaling significant impact for accessible conversational AI tooling.

Abstract

We introduce a pair of tools, Rasa NLU and Rasa Core, which are open source python libraries for building conversational software. Their purpose is to make machine-learning based dialogue management and language understanding accessible to non-specialist software developers. In terms of design philosophy, we aim for ease of use, and bootstrapping from minimal (or no) initial training data. Both packages are extensively documented and ship with a comprehensive suite of tests. The code is available at https://github.com/RasaHQ/

Paper Structure

This paper contains 15 sections, 3 figures.

Figures (3)

  • Figure 1: 1. A message is received and passed to an Interpreter (e.g. Rasa NLU) to extract the intent, entities, and any other structured information. 2. The Tracker maintains conversation state. It receives a notification that a new message has been received. 3. The policy receives the current state of the tracker. 4. The policy chooses which action to take next. 5. The chosen action is logged by the tracker. 6. The action is executed (this may include sending a message to the user). 7. If the predicted action is not 'listen', go back to step 3.
  • Figure 2: Minimal example illustrating how story graphs are simplified. The training data contains two stories with the same first interaction. These nodes are therefore considered equivalent and merged.
  • Figure 3: Here we plot the probabilities of choosing actions for the bAbl example (Section \ref{['sec:demonstration']}) . We sequentially inform the system of the correct (top-bottom): cuisine, location, number of people and price, and the system chooses the next action based on the information it already has (which is listed in the box on the top left). The system favours asking about slots it has not been informed of, until all of the slots are filled and it searches for the restaurant.