Language Understanding Frequently Asked Questions (FAQ)

Important

LUIS will be retired on October 1st 2025 and starting April 1st 2023 you will not be able to create new LUIS resources. We recommend migrating your LUIS applications to conversational language understanding to benefit from continued product support and multilingual capabilities.

What are the maximum limits for LUIS application?

LUIS has several limit areas. The first is the model limit, which controls intents, entities, and features in LUIS. The second area is quota limits based on key type. A third area of limits is the keyboard combination for controlling the LUIS website. A fourth area is the world region mapping between the LUIS authoring website and the LUIS endpoint APIs. See LUIS limits for more details.

What is the difference between Authoring and Prediction keys?

An authoring resource lets you create, manage, train, test, and publish your applications. A prediction resource lets you query your prediction endpoint beyond the 1,000 requests provided by the authoring resource. See Authoring and query prediction endpoint keys in LUIS to learn about the differences between the authoring key and the prediction runtime key.

What are Synonyms and word variations?

LUIS has little or no knowledge of the broader NLP aspects, such as semantic similarity, without explicit identification in examples. For example, the following tokens (words) are three different things until they're used in similar contexts in the examples provided:

  • Buy
  • Buying
  • Bought

For semantic similarity Natural Language Understanding (NLU), you can use Conversation Language Understanding.

What are the Authoring and prediction pricing?

Language Understand has separate resources, one type for authoring, and one type for querying the prediction endpoint, each has their own pricing. See Resource usage and limits.

What are the supported regions?

See region support.

How does LUIS store data?

LUIS stores data encrypted in an Azure data store corresponding to the region specified by the key. Data used to train the model such as entities, intents, and utterances will be saved in LUIS for the lifetime of the application. If an owner or contributor deletes the app, this data will be deleted with it. If an application hasn't been used in 90 days, it will be deleted. See Data retention for more details about data storage.

Is it important to train the None intent?

Yes, it is good to train your None intent with utterances, especially as you add more labels to other intents. See none intent for details.

How do I edit my LUIS app programmatically?

To edit your LUIS app programmatically, use the Authoring API. See Call LUIS authoring API and Build a LUIS app programmatically using Node.js for examples of how to call the Authoring API. The Authoring API requires that you use an authoring key rather than an endpoint key. Programmatic authoring allows up to 1,000,000 calls per month and five transactions per second. For more info on the keys you use with LUIS, see Manage keys.

Should variations of an example utterance include punctuation?

Use one of the following solutions:

  • Ignore punctuation
  • Add the different variations as example utterances to the intent
  • Add the pattern of the example utterance with the syntax to ignore the punctuation.

Why is my app is getting different scores every time I train?

Enable or disable the use nondeterministic training option. When disabled, training will use all available data. When enabled (by default), training will use a random sample each time the app is trained, to be used as a negative for the intent. To make sure that you are getting same scores every time, make sure you train your LUIS app with all your data. See the training article for more information.

I received an HTTP 403 error status code. How do I fix it? Can I handle more requests per second?

You get 403 and 429 error status codes when you exceed the transactions per second or transactions per month for your pricing tier. Increase your pricing tier, or use Language Understanding Docker containers.

When you use all of the free 1000 endpoint queries or you exceed your pricing tier's monthly transactions quota, you will receive an HTTP 403 error status code.

To fix this error, you need to either change your pricing tier to a higher tier or create a new resource and assign it to your app.

Solutions for this error include:

  • In the Azure portal, navigate to your Language Understanding resource, and select Resource Management , then select Pricing tier , and change your pricing tier. You don't need to change anything in the Language Understanding portal if your resource is already assigned to your Language Understanding app.
  • If your usage exceeds the highest pricing tier, add more Language Understanding resources with a load balancer in front of them. The Language Understanding container with Kubernetes or Docker Compose can help with this.

An HTTP 429 error code is returned when your transactions per second exceed your pricing tier.

Solutions include:

  • You can increase your pricing tier, if you are not at the highest tier.
  • If your usage exceeds the highest pricing tier, add more Language Understanding resources with a load balancer in front of them. The Language Understanding container with Kubernetes or Docker Compose can help with this.
  • You can gate your client application requests with a retry policy you implement yourself when you get this status code.

Why does LUIS add spaces to the query around or in the middle of words?

LUIS tokenizes the utterance based on the culture. Both the original value and the tokenized value are available for data extraction.

What do I do when I expect LUIS requests to go beyond the quota?

LUIS has a monthly quota and a per-second quota, based on the pricing tier of the Azure resource.

If your LUIS app request rate exceeds the allowed quota rate, you can:

Can I Use multiple apps with same app definition?

Yes, export the original LUIS app and import the app back into separate apps. Each app has its own app ID. When you publish, instead of using the same key across all apps, create a separate key for each app. Balance the load across all apps so that no single app is overwhelmed.

To get the same top intent between all the apps, make sure the intent prediction between the first and second intent is wide enough that LUIS is not confused, giving different results between apps for minor variations in utterances.

When training these apps, make sure to train with all data.

Designate a single main app. Any utterances that are suggested for review should be added to the main app, then moved back to all the other apps. This is either a full export of the app, or loading the labeled utterances from the main app to the other apps. Loading can be done from either the LUIS website or the authoring API for a single utterance or for a batch.

Schedule a periodic review, such as every two weeks, of endpoint utterances for active learning, then retrain and republish the app.

How do I download a log of user utterances?

By default, your LUIS app logs utterances from users. To download a log of utterances that users send to your LUIS app, go to My Apps , and select the app. In the contextual toolbar, select Export Endpoint Logs. The log is formatted as a comma-separated value (CSV) file.

How can I disable the logging of utterances?

You can turn off the logging of user utterances by setting log=false in the Endpoint URL that your client application uses to query LUIS. However, turning off logging disables your LUIS app's ability to suggest utterances or improve performance that's based on active learning. If you set log=false because of data-privacy concerns, you can't download a record of those user utterances from LUIS or use those utterances to improve your app.

Logging is the only storage of utterances.

Why don't I want all my endpoint utterances logged?

If you are using your log for prediction analysis, do not capture test utterances in your log.

What are the supported languages?

See supported languages, for multilingual NLU, consider using the new Conversation Language Understanding (CLU) feature of the Language Service.

Is Language Understanding (LUIS) available on-premises or in a private cloud?

Yes, you can use the LUIS container for these scenarios if you have the necessary connectivity to meter usage.