Rasa: What to do if the intent isn't recognized ?

Created on 18 May 2018  路  7Comments  路  Source: RasaHQ/rasa

Rasa Core version:

(MoodbotEnv) mike@mike-thinks:~/Programing/Rasa_tutorial/moodbot4$ pip list :
...
rasa-core (0.9.0a3)
rasa-nlu (0.12.3)

Python version:

(MoodbotEnv) mike@mike-thinks:~/Programing/Rasa_tutorial/moodbot4$ python -V 
Python 3.5.2

Operating system : Linux 16.04

Issue:

Having troubles with the tutorial, I followed the weather rasa chatbot one provided by Justina Petraityte, you can find the GitHub repository here. Yet my chatbot never recognizes the intent I try to provide him, which has to be the location, and I don't know how to handle this case as far as it create an error when calling for the weather API, which is therefore empty.

For instance I tried to ask for a the weather in Italy but, as you can see here. It don't recognizes Italy as an intent even if it was in data.json.

Therefore, what to do when the intent isn't recognized ? Should we still save it to the stories.md ?

Content of domain file :

action_factory: null
action_names:
- utter_greet
- utter_goodbye
- utter_ask_location
- action_weather
actions:
- utter_greet
- utter_goodbye
- utter_ask_location
- actions.ActionWeather
config:
  store_entities_as_slots: true
entities:
- location
intents:
- greet
- goodbye
- inform
slots:
  location:
    initial_value: null
    type: rasa_core.slots.TextSlot
templates:
  utter_ask_location:
  - text: In what location?
  utter_goodbye:
  - text: Talk to you later.
  - text: Bye bye :(
  utter_greet:
  - text: Hello! How can I help?
topics: []

All 7 comments

I think you're probably running the train_online script without an NLU interpreter? which script exactly are you running?

Yes, I've been running the train_online.py script but is it really without an interpreter? What should I run in parallel then?

Here is train_online.py :

from __future__ import absolute_import
from __future__ import division
from __future__ import print_function
from __future__ import unicode_literals

import logging

from rasa_core.agent import Agent
from rasa_core.channels.console import ConsoleInputChannel
from rasa_core.interpreter import RegexInterpreter
from rasa_core.policies.keras_policy import KerasPolicy
from rasa_core.policies.memoization import MemoizationPolicy
from rasa_core.interpreter import RasaNLUInterpreter

logger = logging.getLogger(__name__)


def run_weather_online(input_channel, interpreter,
                          domain_file="weather_domain.yml",
                          training_data_file='data/stories.md'):
    agent = Agent(domain_file,
                  policies=[MemoizationPolicy(), KerasPolicy()],
                  interpreter=interpreter)

    agent.train_online(training_data_file,
                       input_channel=input_channel,
                       max_history=2,
                       batch_size=50,
                       epochs=200,
                       max_training_samples=300)

    return agent


if __name__ == '__main__':
    logging.basicConfig(level="INFO")
    nlu_interpreter = RasaNLUInterpreter('./models/nlu/default/weathernlu/test')
    run_weather_online(ConsoleInputChannel(), nlu_interpreter)

No this is with an interpreter. Hm, that's strange. Can you also post your stories/domain/nlu file?

Of course ! One can find them all in this repository. I reinstalled the backend and it seemed anything went back to normal. The bot was able to recognize the intent

Anyway, here they are:

Stories
```.md

Generated Story -1886119115731835946

- slot{"location": "London"}
- action_weather

  • goodbye

    • utter_goodbye

    • export

Generated Story 3208960438834542099

- action_weather
- slot{"location": "italy"}

  • goodbye

    • utter_goodbye

    • export

Generated Story 3270649729708097564

  • goodbye

    • utter_goodbye
    • export

      Generated Story -1886119115731835946

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 3208960438834542099

    • action_weather

    • slot{"location": "italy"}
  • goodbye

    • utter_goodbye
    • export

      Generated Story -1886119115731835946

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 3208960438834542099

    • action_weather

    • slot{"location": "italy"}
  • goodbye

    • utter_goodbye
    • export

      Generated Story 3270649729708097564

  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 8037399301564676754

    • action_weather

    • slot{"location": "italy"}
  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 8037399301564676754

    • action_weather

    • slot{"location": "italy"}
  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 8037399301564676754

    • action_weather

    • slot{"location": "italy"}
  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 8037399301564676754

    • action_weather

    • slot{"location": "italy"}
  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story -135236278849981216

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 1985063322887099039

  • goodbye

    • utter_goodbye
    • export

      Generated Story 7568482240835814446

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story -8237383293008302978

    • action_weather

    • slot{"location": "italy"}
  • goodbye

    • utter_goodbye
    • export

      Generated Story 7568482240835814446

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 7568482240835814446

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 7568482240835814446

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 4306803203830770808

  • goodbye

    • utter_goodbye
    • export

      Generated Story 4306803203830770808

  • goodbye

    • utter_goodbye
    • export

      Generated Story 4306803203830770808

  • goodbye

    • utter_goodbye
    • export

      Generated Story 4306803203830770808

  • goodbye

    • utter_goodbye
    • export

      Generated Story 4306803203830770808

  • goodbye

    • utter_goodbye
    • export

      Generated Story 7568482240835814446

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story -8237383293008302978

    • action_weather

    • slot{"location": "italy"}
  • goodbye

    • utter_goodbye
    • export

      Generated Story 7568482240835814446

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 7568482240835814446

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 7568482240835814446

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story 4306803203830770808

  • goodbye

    • utter_goodbye
    • export

      Generated Story 4306803203830770808

  • goodbye

    • utter_goodbye
    • export

      Generated Story 4306803203830770808

  • goodbye

    • utter_goodbye
    • export

      Generated Story 4306803203830770808

  • goodbye

    • utter_goodbye
    • export

      Generated Story 4306803203830770808

  • goodbye

    • utter_goodbye
    • export

      Generated Story 7568482240835814446

    • slot{"location": "London"}

    • action_weather
  • goodbye

    • utter_goodbye
    • export

      Generated Story -8237383293008302978

    • action_weather

    • slot{"location": "italy"}
  • goodbye

    • utter_goodbye
    • export

      Generated Story 7107923113165709966

  • greet

    • utter_greet
    • export

      Generated Story -2666170229919054264

  • greet

    • utter_greet
  • inform{"location": "paris"}

    • slot{"location": "paris"}

    • action_weather

  • inform{"mood": "sad"}

    • slot{"mood": "sad"}
    • utter_sadness
    • export

      Generated Story 01

  • inform{"mood": "sad"}

    • slot{"mood": "sad"}
    • utter_sadness

      Generated Story -2666170229919054264

  • greet

    • utter_greet
  • inform{"location": "paris"}

    • slot{"location": "paris"}

    • action_weather

  • inform{"mood": "sad"}

    • slot{"mood": "sad"}

    • utter_sadness

    • export

Generated Story -574806734130114094

  • greet

    • utter_greet

  • inform{"mood": "sad"}

    • slot{"mood": "sad"}

    • utter_sadness

  • inform
  • inform{"location": "paris"}

    • slot{"location": "paris"}

    • action_weather

    • export

Generated Story 6096239446030032777

  • greet

    • utter_greet

  • inform{"location": "toulon"}

    • slot{"location": "toulon"}

    • action_weather

    • slot{"location": "toulon"}

    • export


slots:
location:
type: text
mood:
type: text
information:
type: text
adjective:
type: text

intention the bot is able to recognize from the sentences

intents:

  • greet
  • goodbye
  • inform

entities he may be able to extract

entities:

  • location
  • mood
  • information
  • adjective

actions the bot can take

actions:

  • utter_greet
  • utter_goodbye
  • utter_ask_location
  • actions.ActionWeather
  • utter_joy
  • utter_fear
  • utter_anger
  • utter_sadness
  • utter_disgust
  • utter_shame
  • utter_guilt

templates:
utter_greet:
- 'Hello! How can I help?'
utter_goodbye:
- 'Talk to you later.'
- 'Bye bye :('
utter_ask_location:
- 'In what location?'
utter_joy:
- 'Am so happy for you'
utter_fear:
- 'you shouldn be afraid'
utter_anger:
- 'Calm down, everything gonna be alright'
utter_sadness:
- 'be a tough guy'
utter_disgust:
- 'I understand, this is disgusting, we should get over it'
utter_shame:
- 'Ridicule does not kill'
utter_guilt:
- 'You must not feel guilty, feel proud'

And I'm not sure you were talking about this one but here is `nlu_model.py`:


from rasa_nlu.training_data import load_data
from rasa_nlu import config
from rasa_nlu.model import Trainer
from rasa_nlu.model import Metadata, Interpreter

def train_nlu(data, configs, model_dir):
training_data = load_data(data)
trainer = Trainer(config.load(configs))
trainer.train(training_data)
model_directory = trainer.persist(model_dir, fixed_model_name = 'weathernlu')

def run_nlu():
interpreter=Interpreter.load('./models/nlu/default/weathernlu')
print(interpreter.parse(u"I am planning my holiday to Lithuania. I wonder what is the weather out there."))

if __name__ == '__main__':
train_nlu('./data/data.json', 'config_spacy.json', './models/nlu')
run_nlu()
```

Alright, well if everything is working again I'll close this issue. Let us know if you need anything else

I have a similar question with rasa core 0.10.2 and rasa nlu 0.12.3. (ArchLinux, using pip)

I am running the online training via python -m rasa_nlu.train -c nlu_config.yml --data data/nlu_data.md -o models --fixed_model_name partybot_nlu --project partybot --verbose

It does not recognize any intent, it rather regonizes the word itself as intent (as if there are no intends at all?!)

[...]
Bot loaded. Type a message and press enter: 
Hi
------
Chat history:

    bot did:    None

    bot did:    action_listen

    user said:  Hi

         whose intent is:   Hi

we currently have slots: party: None

------
The bot wants to [utter_greet] due to the intent. Is this correct?

    1.  Yes
    2.  No, intent is right but the action is wrong
    3.  The intent is wrong
    0.  Export current conversations as stories and quit

This is my domain.yml file:

intents:
  - greet
  - bye
  - register_party_guest
  - inform_party
  - write_newsletter

entities:
  - party

slots:
  party:
    type: text

templates:
  utter_greet:
    - "Moin! Wie kann ich dir helfen?"
    - "Ja Moin! Hier ist der Partybot. Was kann ich heute f眉r dich tun?"
    - "Ja Moin! Hier ist der Partybot. Was kann ich heute gegen dich tun?"
  utter_bye:
    - "Ciao Kakao!"
    - "See you later alligator!"
    - "Gute Nacht. Zzz..."
  utter_register_party_guest:
    - "Du hast dich f眉r die {party} eingetragen."

actions:
  - utter_greet
  - utter_bye
  - utter_register_party_guest
  - register_party_guest.ActionRegisterPartyGuest

The data/stories.md file. I left it pretty blank as from my understanding I can train it interactively.

## greet
* greet
    - utter_greet

## bye
* bye
    - utter_bye

This is my nlu_config.yaml:

language: "de"

pipeline: "spacy_sklearn"
path: "./models/nlu"

And the nlu_data.md:

## intent:bye
- Bye
- Goodbye
- Bis sp盲ter
- Tsch眉ss
- Ciau
- bb
- Bis bald
- Auf wiedersehen
- Ich gehe
- Wir sprechen uns sp盲ter
- Bis dahin
- Einen sch枚nen Tag noch
- see you later alligator
- Ciao kakao!

## intent:greet
- Hi
- Hey
- Hi Partybot
- Hey Partybot
- Hello
- Good morning
- Guten Morgen
- Hallo
- Moin
- Moinsen
- Hye
- Guten Tag
- Guten Abend
- Ja Moin!
- Hallo Partybot
- Hallo Roboter

## intent:register_party_guest
- Ich sage zu
- Ich mach mit
- Ja ich bin dabei
- Zur Party komme ich
- Ich m枚chte an der Party teilnehmen
- Melde mich zur Party an
- Ich bin bei der Party dabei
- Anmelden
- Zusagen
- Ich m枚chte mich f眉r die Party anmelden
- Ich m枚chte mich f眉r [#cooleparty](party) anmelden
- Zusage [#cooleparty](party)
- Anmelden [#cooleparty](party)
- Ich bin bei der [#cooleparty](party) dabei
- Bei der [#cooleparty](party) bin ich am Start
- Ich mach mit bei der [#cooleparty](party)

## intent:help
- help
- hilfe
- man

## regex:party
- #.*[pP][aA][rR][tT][yY].*

That's the nlu training command you posted, but i guess you haven't passed an nlu model to the rasa_core.training command? you should do this with -u path/to/model/

Was this page helpful?
0 / 5 - 0 ratings

Related issues

nicolasfarina picture nicolasfarina  路  3Comments

rayush7 picture rayush7  路  3Comments

Jasperty picture Jasperty  路  3Comments

jahid-ict picture jahid-ict  路  3Comments

nikhilcss97 picture nikhilcss97  路  3Comments