I’m wondering if this is a good idea. Let’s say my bot is meant to handle a variety discussions about vacations; I have dozens of intents for various activities which fall under a few generalized categories. If a number of intents fall under ‘family activities’ (eg. wanting to visit a theme park, play minigolf, etc) and others as “date night” (eg. fine dining, bars), would it be beneficial to my model to have “family/theme_park, family/minigolf, date/dining, date/bars” as intents?
This is of course assuming the chitchat structure can even be repurposed like this. Since each category (family, date, etc.) would need its own ResponseSelector in the pipeline I don’t know how that would impact training. I’m also not sure how to structure stories around these intents since the purpose of Chit-Chat (as I understand it) is to allow for a one-off response without derailing a current story.
I’m also not 100% I understand Chit-Chat’s behavior and would like to know if I am correct about this statement: First, the model will use everything within the Chitchat.yml to classify an utterance as ‘chitchat’, then the ResponseSelector is specifically trained to identify the sub-intent before selector the correct response from chitchat_responses.yml. If this is how it works, it seems like it would be perfect for establishing a hierarchy and could potentially improve accuracy significantly.
Hi @zjntmo , that’s a good question. Let me first answer your specific questions:
First, the model will use everything within the Chitchat.yml to classify an utterance as ‘chitchat’, then the ResponseSelector is specifically trained to identify the sub-intent before selector the correct response from chitchat_responses.yml.
That’s correct!
I’m also not sure how to structure stories around these intents since the purpose of Chit-Chat (as I understand it) is to allow for a one-off response without derailing a current story.
Also correct and this is exactly why I would advise not to overuse retrieval intents if the conversation paths after the retrieval intents span across multiple user turns. The reason for this is that sub-intents inside retrieval intents cannot be included in your training stories. For that reason, I would suggest sticking to normal intents and not use retrieval intents for your use case.
From intent classifier’s accuracy perspective you could try this:
If your intents are named as family+theme_park, use intent_tokenization_flag: True and intent_split_symbol: + in the tokenizer of your config, for e.g. WhitespaceTokenizer. This will help DIETClassifier use the extra information around hierarchy. Could help empirically.
Thanks for the suggestion! I’ll look into implementing that when I finally sit down and try to understand implementing multi-intent classifications, too