Contextual utterances

I’d like to provide a general help function, such as “help orders” or “help setup”. I was thinking training data would be something like “help orders” and then I could create a bunch (maybe 20 or so) of utterance variants, conceptually like:

utter_help_response{entity:function, value:orders}:

  • text: “To create new orders…”

utter_help_response{entity:function, setup}:

  • text: “To setup a new exchange…”

This way I’d just need one intent and set of training data instead of creating 20 help intents.

Is it feasible to do in the training data or should I just write a custom action for help that selects one of the 20 pre-defined utterances based on entity value?

What I will do in this case is to use custom Actions to capture a common slot, ‘help_categories’. Then my action will run to read this slot. if it’s ‘set up’, I will dispatcher.utter_message("…"), if it’s something else, dispatcher.utter_message(“something else”)

To make sure the exact keyword is always captured, I will do create synonyms for my categories of help, or I could use string similarity matching algorithm to find the closest match based on whatever entity that has been extracted.

However, there’s also a more straightforward way. Which I think it would be better if your reply is a static message. Use Chatito to generate training document, please make sure your output training sentences are consistant and align to the topic of that intent, otherwise, you may have overfitting model.

Thx. I’ll probably do what you’re doing. Wouldn’t the Chatito approach require creating 20 different intents?

Yes it will. Currently, I am using the second approach actually [but I link it with custom action because my replied message will query a database]. In my case, I am doing a tag search on food recommendation and I have a low calories option and a hangover_option (greasy fat option). The phrasing for these two categories could be very different… so I separate the intents into their individual categories to make sure the NLU part more robust,