Niki is a personal assistant that has been developed in India to perform an impressively wide variety of tasks, including booking taxis, buses, hotels, movies and events, paying utilities and recharging your phone, and even organizing laundry pickup and delivery. The application has proven to be a huge success across India and won the Deep Tech prize at the 2017 AWS Mobility Awards.
Once the chatbot is ready and is live interacting with customers, smart feedback loops can be implemented. During the conversation when customers ask a question, chatbot smartly give them a couple of answers by providing different options like “Did you mean a,b or c”. That way customers themselves matches the questions with actual possible intents and that information can be used to retrain the machine learning model, hence improving the chatbot’s accuracy.
A basic SMS service is available via GitHub to start building a bot which uses IBM’s BlueMix platform which hosts the Watson Conversation Services. A developer can import a workspace to setup a new service. This starts with a blank dashboard where a developer can import all the tools needed to run the conversation service. The services has a dialog flow – a series of options with yes/no answers that the service uses to work out what the user’s intent is, what entity it’s working on, how to respond and how to phrase the response in the best way for the user.
It’s best to have very specific intents, so that you’re clear what your user wants to do, but to have broad entities – so that the intent can apply in many places. For example, changing a password is a common activity (a narrow intent), where you change your password might be many different places (broad entities). The context then personalises the conversation based on what it knows about the user, what they’re trying to achieve, and where they’re trying to do that.
The NLP system has a wide and varied lexicon to better understand the complexities of natural language. Using an algorithmic process, it determines what has been asked and uses decision trees or slot-based algorithms that go through a predefined conversation path. After it understands the question, the computer then finds the best answer and provides it in the natural language of the user.
You can structure these modules to flow in any way you like, ranging from free form to sequential. The Bot Framework SDK provides several libraries that allows you to construct any conversational flow your bot needs. For example, the prompts library allows you to ask users for input, the waterfall library allows you to define a sequence of question/answer pair, the dialog control library allows you to modularized your conversational flow logic, etc. All of these libraries are tied together through a dialogs object. Let's take a closer look at how modules are implemented as dialogs to design and manage conversation flows and see how that flow is similar to the traditional application flow.
Jabberwacky learns new responses and context based on real-time user interactions, rather than being driven from a static database. Some more recent chatbots also combine real-time learning with evolutionary algorithms that optimise their ability to communicate based on each conversation held. Still, there is currently no general purpose conversational artificial intelligence, and some software developers focus on the practical aspect, information retrieval.