Improve Rasa NLU model

Update : I tried again, with more variability in the training examples and 2 more intents. I definitely have a scalability problem : my NLU (whether I am using the proposed the Spacy Pipeline or the Tensorflow Embedding pipeline) starts classifying stuff pretty wrong up to a certain point.

Two things are keeping me stuck right now :

  • With this workflow, let’s say that I am doing again an FAQ bot with tons of questions ( > 10), and at some point during the flow of my dialog while answering one question that I want to add, I expect the user to say something specific and I want to catch it with a new intent. Now I have to create a new NLU model for the whole bot, but I’m just trying to make a tiny modification. This doesn’t sound like a very scalable approach.

  • Again in the case of the FAQ bot, let’s say that I am doing a form action for a FAQ Question and I want to know something about if something is broken or not. So I want to write an intent called “working” (and another one called “not working”) where the user will tell me stuff like

  • it’s working fine
  • it’s not broken
  • yes, it’s working great!
  • no, it’s working
  • the device is working fine

and perhaps also put two buttons to catch the intent easier, but the user should always be able to type. But this intent is very close to my other intent, affirm (used as an answer to “was this helpful?” for example), which contains examples like

  • yes, you’re doing a good job!
  • yes, great job!
  • yes

and I want to catch the answer to that question with the intent “affirm” or “deny”. If I have to think about which intents are close and which ones are not every time I need a new intent to catch an answer to a question, I will go nuts as the number of FAQ questions I want to answer goes up; everytime I’d add one or two intents specific to one question, I’d have to worry about the whole bot. But the good thing is that when I know that the user is asking me a certain question, I have the context in the tracker, so there should be an easy way that this helps the AI-programmer to make an NLU that makes a correct classification without having to ask the non-AI programmer doing the question to re-build new datasets and produce new AI models.

So I was wondering if anyone figured out a way to scale NLU in that sense so that a programmer does not have to worry about those things and that the tasks of classification and designing questions can be separated. Maybe this is an open problem for now, but that’s why I am asking the community : I don’t know!

My current idea is to make multiple NLU interpreters and use Core to decide which one to use, but this will take me some programming and AI programming time. If anyone went in that direction, I would love to know how it turned out!