TL;DR: Wit.ai now returns several probable results instead of just one (documentation).
Natural language is ambiguous: one phrase often has multiple meanings.
That’s the result of many thousands of years of evolution, and it’s actually very efficient.
If we had to be always explicit, our phrases and sentences would be much, much longer — and boring.
When A says something to B, A makes assumptions on B’s context, common sense,beliefs and knowledge.
The verbal message itself just contains the minimum information needed, on top of this pre existing information, in order for B to get it.
Language can be seen as a very efficient compression algorithm. The phrase the speaker chooses is the shortest message, given the context of the receiver.
In computer science, Natural Language Processing (NLP) struggles a lot with ambiguity. Trying to have software decide about the meaning of a piece of text or audio, without taking into account the context (and common sense, culture, etc.) is a lost battle. And yet we are fighting this battle everyday!
At Wit.ai, our assumption is that we don’t have enough information about the speaker context to make a final decision about the meaning of their utterances. Your app or your device might have more information, though. That’s why we are introducing a new feature called “N-Best Outcomes”. Simply put, it means that now Wit.ai will not just return one outcome, but the n most probable outcomes. In many cases, your app or your device will have sufficient contextual information to choose the best among these n outcomes.
For instance, if you have two intents
lights_control and the speaker says "Turn it off", Wit.ai will return both intents (more information in the documentation).
- If your app knows that the current topic is the TV, it will choose
- If your app knows that the TV is off but the lights are on, it will choose
- If your app has no idea about the context, you may ask the user “Did you mean the lights, or the TV?”
In the future, Wit.ai will do more and more to help you leverage the user context to resolve ambiguities. Right now, we prefer to avoid making arbitrary and obscure decisions, and put the responsibility for this decision into your hands.