I am building a QnA chatbot, say for College admissions. FAQs related to this are already available in the form of pairs of Questions and Answers. For ready frameworks such as “QnA Maker”, I believe, one must supply the faqs and it builds the rest.
I am seeing if Rasa Stack can help here.
Primitive way of designing such system would be:
- Build tf-idf or Word2Vec for questions.
- When user types something, find closest question using cosine similarity.
- Fetch answers corresponding to the most matched question.
This can handle some variations in the questions asked, but limitations are obvious. Not sure if this approach would answer queries like “what are the fees for XXX course?”. In FAQs, there is only one Fees Table for all courses.
Can Rasa NLU help in this situation? For both, finding matching question and forming a query based on intent-entities? In the above example, if intent is “find_fees” and entity is “XXX”, the it should first find the questions by matching the intent, rank to find best candidate question, hopefully it comes to “Fees Table”. Then fire query with XXX as argument to get the exact answer. Possible with Rasa Stack (NLU) ?
(BTW, I don’t need Rasa Core, I believe, as there is no dialog or context as such. It just one question and one answer. That’s it. Correct me if wrong.)
Do suggest, best way to approach such requirements.
In case of RASA-NLU way, do I have to manually annotate intents and entities for all questions and create their possible variations also? Can I programmatically create such variations and build the training file?
(This query is sort of similar to FAQ Bot / Knowledge Base but the answers there were not looking understandable, I am expanding the problem here)