Your Chatbot Must Be Able To Disambiguate
Disambiguation Is Part & Parcel Of Human Conversations And Should Be Part Of Your Chatbot Experience
By now we all know that the prime aim of a chatbot is to act as a conversational interface, simulating the conversations we have as humans. Unfortunately you will find that many of the basic elements of human conversation are not introduced to most chatbots.
A good example of this is digression…and another is disambiguation. Often throughout a conversation we as humans will invariably and intuitively detect ambiguity.
Ambiguity is when we hear something which is said, which is open for more than one interpretation. Instead of just going off on a tangent which is not intended by the utterance, I perform the act of disambiguation; by asking a follow-up question. This is simply put, removing ambiguity from a statement or dialog.
Ambiguity makes sentences confusing. For example, “I saw my friend John with binoculars”. This this mean John was carrying a pair of binoculars? Or, I could only see John by using a pair of binoculars?
Hence, I need to perform disambiguation, and ask for clarification. A chatbot encounters the same issue, where the user’s utterance is ambiguous and instead of the chatbot going off on one assumed intent, it could ask the user to clarify their input. The chatbot can present a few options based on a certain context; this can be used by the user to select and confirm the most appropriate option.
Just to illustrate how effective we as humans are to disambiguate and detect subtle nuances, have a look at the following two sentences:
- A drop of water on my mobile phone.
- I drop my mobile phone in the water.
These two sentences have vastly different meanings, and compared to each other there is no real ambiguity, but for a conversational interface this will be hard to detect and separate.
Your Chatbot Must Be Enabled For Disambiguation
Instead of defaulting to an intent with the highest confidence, the chatbot should check the confidence score of the top 5 matches. If these scores are close to each-other, it shows your chatbot is actually of the opinion that not a single intent will address the query. And a selection must be made from a few options.
Here, disambiguation allows the chatbot to request clarification from the user. A list of related options should be pretested to the user, allowing the user to disambiguate the dialog by selecting an option from the list.
But, the list presented should be relevant to the context of the utterance; hence only contextual options must be presented.
Disambiguation enables chatbots to request help from the user when more than one dialog node might apply to the user’s query.
Instead of assigning the best guess intent to the user’s input, the chatbot can create a collection of top nodes and present them. In this case the decision when there is ambiguity, is deferred to the user.
What is really a win-win situation is when the feedback from the user can be used to improve your NLU model; as this is invaluable training data vetted by the user.
Disambiguation can be triggered when the confidence scores of the runner-up intents, that are detected in the user input, are close in value to the top intent.
Hence there is no clear separation and certainty.
There should of course be a “non of the above” option, if a user selects this, a real-time live agent handover can be performed, or a call-back can be scheduled. Or, a broader set of option can be presented.
A Practical Example
IBM Watson has a built-in feature which allows for the configuration of disambiguation. In this practical example you can toggle the feature on or off.
Also, you can set the message introducing the clarification request. The default is, “Did you mean”…this could be changed to “This might help” or, “This is what I could find”.
An option is also available for none of the above and the maximum number of suggestions can be limited. The scope and size of the dialog will determine what this number might be.
This also provides a central point where disambiguation can be switched off; this as a global toggle switch to enable or disable this feature.
Apart from this, each node can be added or removed individually as the structure of the application changes.
Here the name of the node becomes important as this is what will be displayed to the user. There is also an option to add internal and external facing node name.
It is crucial that the name of the node displayed to the user is clear, presentable and explain the function and intention of the node it refers to.
Here is a short tutorial on the functionality and setup.
In conclusion, suffice to say that the holy grail of chatbots is to mimic and align with a natural, human-to-human conversation as much as possible. And to add to this, when designing the conversational flow for a chatbot, we often forget about what elements are part and parcel of true human like conversation.
Digression is a big part of human conversation, along with disambiguation of course. Disambiguation negates to some extent the danger of fallback proliferation where the dialog is not really taken forward.
With disambiguation a bouquet of truly related and contextual options are presented to the user to choose from which is sure to advance the conversation.
And finally, probably the worse thing you can do is present a set of options which is not related to the current context. Or a set of options which is predefined and finite which reoccurs continually.
Contextual awareness is key in all elements of a chatbot.