Aware response selector component


Hey folks !

I got a new idea in my project but I have some troubles to make it works. With my teammate we developed a response selector based on context. It’s a RNN based on an open source GitHub project. This RNN uses the 3 previous messages to compute an answer and provide it as a String. It is working quite similarly as the response selector that RASA is providing. That’s why I create a RASA NLU component to use it in the pipeline.

My problem is the following : How can I get the last 3 messages of the user in the NLU component ? I’m aware that NLU is generally working without context. So I don’t have access to the tracker.

Why did I want a NLU component ? I don’t really know but for me it was quite logic. The fact is that the NLU component is processing data input and provide results. The other part, RASA Core, take all these informations (intent, forms in progress, entities, sentiment, negation, question, etc.) and decide what to do (utter this response or not, use a form, etc.). That’s why I decide to create a component and not a policy. The project is really huge and complex that’s why it’shard to see if my component is a good idea or not.

I would really appreciate an opinion on this.

Context aware response selector (or basically an end-to-end policy) is smth we’re currently working on. I think it is better to make it a core policy though because it has access to both the tracker and the actual texts

1 Like

Yep ! I completed a first version of a Core Policy for this at the beginning of the afternoon :slight_smile:

You’re right, using NLU component is not sufficient because I haven’t the tracker for the context. I also got problems with Core Policy. I don’t know if there is a possibility to update the tracker inside it (the Policy) and then predict the action to utter the message. If I remember correctly, it is only possible to modify the tracker with the NLU during the detection and extraction phases, or afterwards from actions via events. But I didn’t read anything about tracker and policies.

why do you need to update the tracker?

I need to save the result of the computing to be able to send it to the action that will be in charge of using it. Isn’t that correct ?

Technically it’s not a legit way, but modifying tracker like adding events within a policy should work

For the moment I use a value key base to store the prediction result and not have to modify the tracker or add events. The policy returns a probability for the action that will retrieve the prediction and use it if necessary.

I couldn’t think of a better way not to break RASA’s logic right now.

Since there is no native support in Rasa yet. I think it is fine