Building a NLU application like a chatbot seems easy nowadays, but getting it right architecturally is harder than expected. Let's dive into the problems I've encountered and an elegant-yet-simple solution to make it really work. We'll look at understanding conversation not as a pipeline, but as an orchestra of many components playing together towards a shared goal.
For the last 6 years I've been working on a complex NLU system to understand human discourse, and have seen many approaches and promises to solve it "easily". This talk will unfold the journey of our architecture from a simple pipeline to more complex solutions, highlighting the difficulties of current approaches to tackle real conversations with real users.
Looking at the problem from a different angle, we'll develop an elegant structure of NLU applications as an orchestra of many components.
The proposed solution naturally handles many problems:
- Changing requirements, like new intents or entities
- Non-linear dependencies between components
- Using the full conversation as context