utterance and entity issues

Hi
I have a very simple intent (Plan Cost) that flows into an entity (Plan Types) with a selection choice of 3 values for each plan type (UNLIMITED, As You Go, Data Only).

The next step is to take the user choice and show 1 of 3 messages depending on what plan the user selects in the entity.

My utterance testing hits the correct intent every time (eg “what does a plan cost”), but if I use the word “your” (ie “what do your plans cost”), the bot always goes straight into the 2nd plan type message (“As You Go”) without giving the user the option to pick the plan from the option values shown in the entity.

The word “your” somehow makes the bot decide that the user has picked the 2nd value in the entity every time. This is not what a user would want - they aren’t even given a choice.

Can you please help me understand why is the bot doing this? (see pics)

thanks
Richard
how%20much%20do%20your%20plans%20cost%201
how%20much%20do%20your%20plans%20cost%202
how%20much%20do%20your%20plans%20cost%203
how%20much%20do%20your%20plans%20cost%204

@richard_aus
You can

  1. use do not evaluate previous utterances for this entity.
    image
    This will help you explicitly ask for input every time. But if your use case is something like auto detect plan based on user input - “I want to know the cost of as you go plan” it will not work.

  2. I suspect, “your” is leading to match with synonym “As ‘you’ go”. After tokenisation and lematisation Engligh words are broken down by NLP engine to comprehend natural language intent You can set synonym same as value “asyougo”. Mostly users will click the input, so your value will be used internally.

All entities will first attempt to find a value from the initial utterance and any subsequent utterances, e.g. “what does an unlimited plan cost?”

A list of items entities supports partial matching against the synonyms, so in your case the “you” in the synonym matches via the “your” in the utterance. There is a scoring process where the platform will select the best choice so a partial match can be superseded by a more complete match. Partial matching also allows for some flexibility where the user doesn’t know the exact details (e.g. “i want details on an unlimited plan” vs “I want details on that do more unlimited plan”).

So one aspect is to take care over synonyms, and not include words that are not relevant to identifying that choice.
But in this case “as you go” is a phrase that only makes sense in this situation where all words are present in this order. So to indicate this for a list of items synonym is to enclose the phrase in double quotes. When a synonym is explicitly quoted then it will only match when those words are found and in that order.

I don’t recommend quoting all synonyms because it will limit the usefulness of partial matching, but for phrases that use common words or are idioms, then quoting is very useful.

https://developer.kore.ai/docs/bots/nlp/additional-notes-nlp-settings-guidelines/#Synonyms

BTW, I don’t care for either of Swagata’s suggestions :wink:
The first means that a valid entity value on the initial utterance is not picked up - to the frustration of the user.
The second assumes that users will click/tap on buttons, and that cannot be guaranteed. And again not very helpful if the entity is in the initial utterance.

1 Like

@andy.heydon
Glad you did not care about my suggestions :wink: and shared your genuine thoughts on a better solution. Thanks!

Thanks for your brilliant help Andy. I’ve added quotes and now the bot works properly in both scenarios, a much better user experience!