Is your feature request related to a problem? Please describe.
Currently Snips is built to handle a certain type of complex intent: an intent where a sentence has at least one slot that should be extracted. Snips does this very well.
However, in practice (and you can see this in the app store), there is also a need to create simpler intents.
Take for example the intention of a user to ask for the time:
"what time is it?"
"can you tell me the time?"
"how late is it?"
Or the even simpler command to reboot the Raspberry pi:
"Reboot yourself".
"Please reboot"
Despite my efforts to add as many example sentences as possible (which is hard for a such simple command), currently snips seems to always label such a heuristic intent with a red dot simply because it doesn't have at least one slot. This implies an intention cannot be valid if there is nothing to extract from it.
I think it would be great if Snips could handle intents without slots more elegantly.
What are the use cases of this feature
Many commands are basic and short. Having more explicit support for these types will...
Make Snips align with the reality of how voice assistants can be used - short quick commands are quite common.
It would change how many apps are portrayed in the app store. Currently they made be labeled as bad or poor, even though they work just fine for their intended use case.
It would make it less frustrating for developers to see their intentions be labeled as 'bad' when they aren't.
Describe the solution you'd like
I'd like Snips to make a distinction between more complex extractive intents and more basic command style intents.
I'd like Snips to not label command-style intents as being invalid.
Nice to have: it would be great is the Snips algorithms could be specialized in optimally dealing with command-style intents. Currently I get the impression (but I could be wrong) that the algorithm will favor extractive intents.
Describe alternatives you've considered
Command style intents already do work, so there is no work around required.
Intents could be made more complex. For example, the above 'what is the time' intent could be made into a more complex intent that distinguishes between a request for a time and a request for a date. E.g. a 'datetime intent'. But in my case there is no need for users to ask for a date, so it would be a little artificial to make that distinction.
This is a hypothetical, but I could make a 'general' intent that deals with all the short commands. Instead of the intents being different, it could move the command distinction into the slots. So for example, the slots would be filled with exact sentences. E.g. "Reboot", "shutdown", and "what is the time". This, however, does not feel like a good solution. It feels like the intention to know the time should be an intent, and not a slot. I'm also not sure how Snips would react to an intent where there is only slot content, and no sentence context at al.
Additional context
It's not related, but I've also created a feature request for wildcard slots. Both of these requests are about diversifying Snips to be able to handle simpler situations well. It's as if Snips was so focused on handling complex voice commands (which you have done beautifully) that handling the simple ones just as well was overlooked a little bit :-)
We do have a specific parser to deal with them called the deterministic intent parser that will yield perfect NLU accuracy on utterances that are part of your train set. So as long as user stick to utterances you provided, the probabilistic parser won't be used. You can read more about this in this blog post or by checking the NLU documentation
The colored dot provided in the console is actually just a proxy for the intent quality that becomes green above (strictly) 30 utterances for intent without slots. You don't require any slot to make it green, it's actually quite the opposite - the more slots you have, the more training data you'll need to get a strong slot filler. Of course, for some simple commands, less than 30 utterances are needed, and it's fine - we haven't implemented a specific logic for that, as declaring an intent to be "easy" could be misleading - if you think of it, even very simple intentions might be expressed in weird ways !
Is your feature request related to a problem? Please describe. Currently Snips is built to handle a certain type of complex intent: an intent where a sentence has at least one slot that should be extracted. Snips does this very well.
However, in practice (and you can see this in the app store), there is also a need to create simpler intents.
Take for example the intention of a user to ask for the time:
Or the even simpler command to reboot the Raspberry pi:
Despite my efforts to add as many example sentences as possible (which is hard for a such simple command), currently snips seems to always label such a heuristic intent with a red dot simply because it doesn't have at least one slot. This implies an intention cannot be valid if there is nothing to extract from it.
I think it would be great if Snips could handle intents without slots more elegantly.
What are the use cases of this feature Many commands are basic and short. Having more explicit support for these types will...
Describe the solution you'd like
extractive
intents and more basiccommand
style intents.Describe alternatives you've considered
time
and a request for adate
. E.g. a 'datetime intent'. But in my case there is no need for users to ask for a date, so it would be a little artificial to make that distinction.Additional context It's not related, but I've also created a feature request for wildcard slots. Both of these requests are about diversifying Snips to be able to handle simpler situations well. It's as if Snips was so focused on handling complex voice commands (which you have done beautifully) that handling the simple ones just as well was overlooked a little bit :-)