Hello @everyone,
I’m here from project Rhasspy, an open source pluggable offline assistant. I’m not a member of the project, but I’m working on a contribution to it and bumped into an issue with Rasa.
Rhasspy uses a pipeline of services to implement the assistant. One step in that pipeline is NLU, which can be configured for using Rasa NLU API.
However, while designing a framework to write “skills” for this assistant, we bumped into the fact that the trained model is just one. Consider this nlu.md
:
## intent: Skill1:ShutdownServer
- please shut down the server
- would you shut down the server
- go on and shut down the server
## intent: Skill1:RestartServer
- please restart the server
- would you reboot the server
- go on and restart the server
## intent: Skill1:CancelCommand
- no
- never mind
- forget it
## intent: Skill2:CancelCommand
- nope
- no
- never mind you
- forget that
(I know those intent phrases are shorts in length and number, that’s just an example to prove my point)
When parsing a text with the NLU, I’d like to ask to interpreter to consider only the first two intents or to consider only intents for a specific skill, e.g. Skill2.
The first case is useful when receiving the first question (I can’t say “No” without even asking something before that). The second case is useful for intermediate responses, because e.g. Skill2 is in charge of the current dialogue so only intents from Skill2 should be interpreted.
I was thinking about another field in the /model/parse
request body where I could specify a list of intent names to consider when parsing the text:
{
"text": "please shut down the server",
"intent_filter": [ // consider only these intents while interpreting
"Skill1:ShutdownServer",
"Skill1:RestartServer"
]
Am I making any sense here? Is there some other approach I could use? One thing I’d like to stick with is using only the NLU part of Rasa, if that’s possible.
Thanks!!