Question: what happens to intents that are only defined in the NLU and not in the domain file?

Hello!

I hope that this question has not been asked before. I searched on github and this forum, but did not find anything.

I am currently using RASA open source in order to create a conversational bot for teaching skills. I have a very restricted list of intents on the domain.yml file, and a lot more different intents only defined in the nlu.yml file.

However, RASA never complains about this, and predicts the intents correctly, even if they are not defined in the domain file. So I was wondering: is there a negative effect of this that I could not have thought about before? Or is RASA simply very smart and deduces the content of the domain file itself?

Thanks for your time, and this awesome product also that works just fine!

Hello Marie,

Thank you for your question! It would be really helpful if you could share your domain and nlu yaml files so we can see the example that you use and your test case.

Thank you!

Thanks for your reply!

Here are an example of what I could use:

nlu file:

version: "2.0"
nlu:
  - intent: greet
    examples: |
      - hey
      - hello
      - how are you?
      - good morning
      - good afternoon
  - intent: stop
    examples: |
      - Can we stop here please?
      - It would be nice to end the session here
      - Exit
      - Quit
      - I'd like to leave
      - I want to quit
      - I'd like to exit
  - intent: goodbye
    examples: |
      - See you
      - Bye
      - See you later
      - Catch you later
      - Have a nice day
  - intent: ask
    examples: |
      - How are you today?
      - How are you feeling?
      - What is your mood today?
  - intent: get_score
    examples: |
      - What is my score?
      - Can you give me my score?
      - Can I get my score please?
      - How many points do I have?
      - What are my points?

domain file:

    version: '2.0'

session_config:
  session_expiration_time: 60
  carry_over_slots_to_new_session: false

intents:
  - greet
  - stop
  - goodbye
  - out_of_scope
  - affirm
  - deny
  - mood_happy
  - mood_unhappy

entities:
 score

responses:
  utter_default: 
    - text: Sorry, not sure what to do. Can you rephrase?
  utter_stop:
    - text: Well, it was good talking with you. See you next time!
  utter_greet:
    - text: Hello, and welcome to my home.
  utter_goodbye:
    - text: See you soon!
  utter_out_of_scope:
- text: Let's talk about that later.
  utter_deny:
    - text: I' sorry to hear that. Can I help you?
  utter_explain:
    - text: Interesting, tell me more
    - text: Okay, carry on.
    - text: Inspiring, thank you. Go ahead.
  utter_ask:
    - text: I'm in a great mood today
  utter_score:
    - text: You have {score} points.

actions:
  # All the actions that come here...

forms:
  # Some forms also

Here, one can see that I do not define the intent ask_score in my domain file, but it is detected anyway :slight_smile: So this is actually great, but I was only wondering what was actualy happening.

Also, I train my model by sending these nlu data via the API.

Thanks for your time!