How to pick correct intent if overlapping dataset?

Overview

We are developing a chatbot using Rasa that can serve magazines, books, videos and many more based on the user’s request.

We have a massive list of books, videos and magazines we want to serve using ChatBot.

Issue

While working on Intent and Entity Extraction, we identified that we have an overlapping dataset between different entities.

For instance: we have intents like:

  1. book
  2. video
  3. magazine

Each intent can have a common entity name like:

  1. I am looking for the ABC_DEF book
  2. Can I have ABC_DEF
  3. Show me things that relate to ABC_DEF Where ABC_DEF can be in the book, video or magazine lookup list.

Also, We users directly ask ChatBot like: ABC_DEF it randomly picks up any intent and server the results. Instead, we want ChatBot to ask like:

  • Are you looking for the book for ABC_DEF? OR
  • Are you looking for the videos for ABC_DEF? OR
  • Are you looking for the magazine for ABC_DEF? OR

We tried using Slots with Stories. But sometimes, keep repeating the same question repeatedly until the slot is filled. So we dropped ideas to use slots.

Question

  • What are the best approaches to deal with instances with overlapping lookup datasets?