Using intent confidence scores to improve intent selection with Lex V2
When a user makes an utterance, Amazon Lex V2 uses natural language understanding (NLU) to understand the user's request and return the proper intent. By default Amazon Lex V2 returns the most likely intent defined by your bot.
In some cases it may be difficult for Amazon Lex V2 to determine the most likely intent. For example, the user might make an ambiguous utterance, or there might be two intents that are similar. To help determine the proper intent, you can combine your domain knowledge with the NLU confidence scores in a list of interpretations. A confidence score is a rating that Amazon Lex V2 provides that shows how confident it is that an intent is the correct intent.
To determine the difference between two intents within an interpretation, you can compare their confidence scores. For example, if one intent has a confidence score of 0.95 and another has a score of 0.65, the first intent is probably correct. However, if one intent has a score of 0.75 and another has a score of 0.72, there is ambiguity between the two intents that you may be able to discriminate using domain knowledge in your application.
You can also use confidence scores to create test applications that determine if changes to an intent's utterances make a difference in the behavior of the bot. For example, you can get the confidence scores for a bot's intents using a set of utterances, then update the intents with new utterances. You can then check the confidence scores to see if there was an improvement.
The confidence scores that Amazon Lex V2 returns are comparative values. You should not rely on them as an absolute score. The values may change based on improvements to Amazon Lex V2.
Amazon Lex V2 returns the most likely intent and up to 4 alternative intents
with their associated scores in the interpretations
structure in each response. The following JSON code shows the
interpretations
structure in the response from the
RecognizeText operation:
"interpretations": [ { "intent": { "confirmationState": "string", "name": "string", "slots": { "string" : { "value": { "interpretedValue": "string", "originalValue": "string", "resolvedValues": [ "string" ] } } }, "state": "string" }, "nluConfidence": number } ]
AMAZON.FallbackIntent
Amazon Lex V2 returns AMAZON.FallbackIntent
as the top intent in
two situations:
-
If the confidence scores of all possible intents are less than the confidence threshold. You can use the default threshold or you can set your own threshold. If you have the
AMAZON.KendraSearchIntent
configured, Amazon Lex V2 returns it as well in this situation. -
If the interpretation confidence for
AMAZON.FallbackIntent
is higher than the interpretation confidence of all other intents.
Note that Amazon Lex V2 does not display a confidence score for
AMAZON.FallbackIntent
.
Setting and changing the confidence threshold
The confidence threshold must be a number between 0.00 and 1.00. You can set the threshold for each language in your bot in the following ways:
Using the Amazon Lex V2 console
-
To set the threshold when you add a language to your bot with Add language, you can insert your desired value in the Confidence score threshold panel.
-
To update the threshold, you can select Edit in the Language details panel in a language for your bot. Then insert your desired value in the Confidence score threshold panel.
Using API operations
-
To set the threshold, set the
nluIntentConfidenceThreshold
parameter of the CreateBotLocale operation. -
To update the confidence threshold, set the
nluIntentConfidenceThreshold
parameter of the UpdateBotLocale operation.
Session Management
To change the intent that Amazon Lex V2 uses in a conversation with the user, you can use the response from your dialog code hook Lambda function, or you can use the session management APIs in your custom application.
Using a Lambda function with your Lex V2 bot
When you use a Lambda function, Amazon Lex V2 calls it with a JSON
structure that contains the input to the function. The JSON
structure contains a field called currentIntent
that contains the intent that Amazon Lex V2 has identified as the most
likely intent for the user's utterance. The JSON structure also
includes an alternativeIntents
field that contains
up to four additional intents that may satisfy the user's
intent. Each intent includes a field called
nluIntentConfidenceScore
that contains the
confidence score that Amazon Lex V2 assigned to the intent.
To use an alternative intent, you specify it in the
ConfirmIntent
or the ElicitSlot
dialog action in your Lambda function.
For more information, see Integrating an AWS Lambda function into your bot.
Using the Session Management API with your Lex V2 bot
To use a different intent from the current intent, use the
PutSession operation. For
example, if you decide that the first alternative is preferable
to the intent that Amazon Lex V2 chose, you can use the
PutSession
operation to change intents so that
the next intent that the user interacts with is the one that you
selected.
For more information, see Understanding Amazon Lex V2 bot sessions.