Entity types
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.
An entity is an item or an element that is relevant to the user's intent. Entities define data that can be extracted from the utterance and is essential to complete a user's required action. For example:
Utterance | Intent predicted | Entities extracted | Explanation |
---|---|---|---|
Hello, how are you? | Greeting | - | Nothing to extract. |
I want to order a small pizza | orderPizza | 'small' | 'Size' entity is extracted as 'small.' |
Turn-off bedroom light | turnOff | 'bedroom' | 'Room' entity is extracted as 'bedroom.' |
Check balance in my savings account ending in 4406 | checkBalance | 'savings', '4406' | 'accountType' entity is extracted as 'savings' and 'accountNumber' entity is extracted as '4406.' |
Buy 3 tickets to New York | buyTickets | '3', 'New York' | 'ticketsCount' entity is extracted as '3' and 'Destination' entity is extracted as 'New York." |
Entities are optional but recommended. You don't need to create entities for every concept in your app, only when:
- The client application needs the data, or
- The entity acts as a hint or signal to another entity or intent. To learn more about entities as Features go to Entities as features.
Entity types
To create an entity, you have to give it a name and a type. There are several types of entities in LUIS.
List entity
A list entity represents a fixed, closed set of related words along with their synonyms. You can use list entities to recognize multiple synonyms or variations and extract a normalized output for them. Use the recommend option to see suggestions for new words based on the current list.
A list entity isn't machine-learned, meaning that LUIS doesn’t discover more values for list entities. LUIS marks any match to an item in any list as an entity in the response.
Matching list entities is both case sensitive and it has to be an exact match. Normalized values are also used when matching the list entity. For example:
Normalized value | Synonyms |
---|---|
Small | sm , sml , tiny , smallest |
Medium | md , mdm , regular , average , middle |
Large | lg , lrg , big |
See the list entities reference article for more information.
Regex entity
A regular expression entity extracts an entity based on a regular expression pattern you provide. It ignores case and ignores cultural variant. Regular expression entities are best for structured text or a predefined sequence of alphanumeric values that are expected in a certain format. For example:
Entity | Regular expression | Example |
---|---|---|
Flight Number | flight [A-Z]{2} [0-9]{4} |
flight AS 1234 |
Credit Card Number | [0-9]{16} |
5478789865437632 |
See the regex entities reference article for more information.
Prebuilt entities
LUIS includes a set of prebuilt entities for recognizing common types of information, like dates, times, numbers, measurements, and currency. Prebuilt entity support varies by the culture of your LUIS app. For a full list of the prebuilt entities that LUIS supports, including support by culture, see the prebuilt entity reference.
When a prebuilt entity is included in your application, its predictions are included in your published application. The behavior of prebuilt entities is pre-trained and can’t be modified.
Prebuilt entity | Example value |
---|---|
PersonName | James, Bill, Tom |
DatetimeV2 | 2019-05-02 , May 2nd , 8am on May 2nd 2019 |
See the prebuilt entities reference article for more information.
Pattern.Any entity
A pattern.Any entity is a variable-length placeholder used only in a pattern's template utterance to mark where the entity begins and ends. It follows a specific rule or pattern and best used for sentences with fixed lexical structure. For example:
Example utterance | Pattern | Entity |
---|---|---|
Can I have a burger please? | Can I have a {meal} [please][?] |
burger |
Can I have a pizza? | Can I have a {meal} [please][?] |
pizza |
Where can I find The Great Gatsby? | Where can I find {bookName}? |
The Great Gatsby |
See the Pattern.Any entities reference article for more information.
Machine learned (ML) entity
Machine learned entity uses context to extract entities based on labeled examples. It is the preferred entity for building LUIS applications. It relies on machine-learning algorithms and requires labeling to be tailored to your application successfully. Use an ML entity to identify data that isn’t always well formatted but have the same meaning.
Example utterance | Extracted product entity |
---|---|
I want to buy a book. | 'book' |
Can I get these shoes please? | 'shoes' |
Add those shorts to my basket. | 'shorts' |
See Machine learned entities for more information.
ML Entity with Structure
An ML entity can be composed of smaller sub-entities, each of which can have its own properties. For example, an Address entity could have the following structure:
- Address: 4567 Main Street, NY, 98052, USA
- Building Number: 4567
- Street Name: Main Street
- State: NY
- Zip Code: 98052
- Country: USA
Building effective ML entities
To build machine learned entities effectively, follow these best practices:
- If you have a machine learned entity with sub-entities, make sure that the different orders and variants of the entity and sub-entities are presented in the labeled utterances. Labeled example utterances should include all valid forms, and include entities that appear and are absent and also reordered within the utterance.
- Avoid overfitting the entities to a fixed set. Overfitting happens when the model doesn't generalize well, and is a common problem in machine-learning models. This implies the app wouldn’t work on new types of examples adequately. In turn, you should vary the labeled example utterances so the app can generalize beyond the limited examples you provide.
- Your labeling should be consistent across the intents. This includes even utterances you provide in the None intent that includes this entity. Otherwise the model won’t be able to determine the sequences effectively.
Entities as features
Another important function of entities is to use them as features or distinguishing traits for another intents or entities so that your system observes and learns through them.
Entities as features for intents
You can use entities as a signal for an intent. For example, the presence of a certain entity in the utterance can distinguish which intent does it fall under.
Example utterance | Entity | Intent |
---|---|---|
Book me a flight to New York. | City | Book Flight |
Book me the main conference room. | Room | Reserve Room |
Entities as Feature for entities
You can also use entities as an indicator of the presence of other entities. A common example of this is using a prebuilt entity as a feature for another ML entity. If you’re building a flight booking system and your utterance looks like 'Book me a flight from Cairo to Seattle', you likely will have Origin City and Destination City as ML entities. A good practice would be to use the prebuilt GeographyV2 entity as a feature for both entities.
For more information, see the GeographyV2 entities reference article.
You can also use entities as required features for other entities. This helps in the resolution of extracted entities. For example, if you’re creating a pizza-ordering application and you have a Size ML entity, you can create SizeList list entity and use it as a required feature for the Size entity. Your application will return the normalized value as the extracted entity from the utterance.
See features for more information, and prebuilt entities to learn more about prebuilt entities resolution available in your culture.
Data from entities
Most chat bots and applications need more than the intent name. This additional, optional data comes from entities discovered in the utterance. Each type of entity returns different information about the match.
A single word or phrase in an utterance can match more than one entity. In that case, each matching entity is returned with its score.
All entities are returned in the entities array of the response from the endpoint
Best practices for entities
Use machine-learning entities
Machine learned entities are tailored to your app and require labeling to be successful. If you aren’t using machine learned entities, you might be using the wrong entities.
Machine learned entities can use other entities as features. These other entities can be custom entities such as regular expression entities or list entities, or you can use prebuilt entities as features.
Learn about effective machine learned entities.