FAQ bot is getting confused

Hello,

My team is currently developing a FAQ Bot for a company, I’ve read the whole documentation and many forum topics, but some things are still not clear to me. We have around 70 questions, each one with their particular answer. Many questions are related to the same user intent but for different entities, for example:

→ intent: “change_password”

  • I want to change my CompanyPlatform password – (this is one question from FAQ)
  • I’d like to change my AnotherCompanyPlatform password – (this is another question from FAQ) Where “CompanyPlatform” and “AnotherCompanyPlatform” are fictional names for the Company’s internal platforms just for the sake of example here. So you see, we have many questions with the same intent which are distinguished by the entity extracted value. This logic is the same for other intents related to questions from FAQ (e.g. “delete_account”, “update_account”,…)

We’re having some trouble trying to retrieve the correct response from the Bot, as well as even making it understand the correct entity.

This is the actual structure we’re using: (this is ONE example but there are many others intents, synonyms etc)

- intent: change_password
examples: |
- I want to change my [CompanyPlatform]{"entity" : "platform"} password
- How can I change my [CompanyPlatform]{"entity" : "platform"} password?

- synonym: change
examples: |
- alter
- modify
- reset 

- story: change_password_CompanyPlatform
steps: 
- intent: greet
- action: utter_start_conversation
- intent: change_password
entities:
    - platform: "CompanyPlatform"
- action: utter_change_password_CompanyPlatform 

- story: change_password_AnotherCompanyPlatform
steps: 
- intent: greet
- action: utter_start_conversation
- intent: change_password
entities:
    - platform: "AnotherCompanyPlatform"
- action: utter_change_password_AnotherCompanyPlatform

responses:
utter_change_password_CompanyPlatform:
- text: "You can access this link"

utter_change_password_AnotherCompanyPlatform:
- text: "Tou can access this other link"

So my question is: what is the best way to implement this situation? What elements of NLU should we make use of? Should we use the FAQ structure that is in the documentation instead of doing as above? I hope i made it clear enough for you guys :slight_smile:

what is the type of slot platform? Since the answers depend on its value, I assume that you have a limited number of platforms, I suggest to use Categorical slot, then rules or stories should be able to take its value into account when predicting the next action

we’re not currently using slots. How do you suggest we could make use of it?

in order to make use of entity value prediction, you need to use slots (see docs for details: Domain). If you create add a slot with the same name as your entity (platform), it’ll be automatically filled by extracted entity.

If you use a categorical slot (see the docs for details Domain), it’s features will depend on the value, which means a policy will be able to learn different behaviors for different values