|
| 1 | +--- |
| 2 | +title: "Quickstart: Language Understanding (LUIS) authoring client library for Python" |
| 3 | +titleSuffix: Azure Cognitive Services |
| 4 | +description: Get started with the Language Understanding (LUIS) client library for Python. Follow these steps to install the package and try out the example code for basic tasks. Language Understanding (LUIS) enables you to apply custom machine-learning intelligence to a user's conversational, natural language text to predict overall meaning, and pull out relevant, detailed information. |
| 5 | +services: cognitive-services |
| 6 | +author: diberry |
| 7 | +manager: nitinme |
| 8 | +ms.service: cognitive-services |
| 9 | +ms.subservice: language-understanding |
| 10 | +ms.topic: quickstart |
| 11 | +ms.date: 08/07/2019 |
| 12 | +ms.author: diberry |
| 13 | +--- |
| 14 | +# Quickstart: Language Understanding (LUIS) authoring client library for Python |
| 15 | + |
| 16 | +Get started with the Language Understanding (LUIS) authoring client library for python. Follow these steps to install the package and try out the example code for basic tasks. Language Understanding (LUIS) enables you to apply custom machine-learning intelligence to a user's conversational, natural language text to predict overall meaning, and pull out relevant, detailed information. |
| 17 | + |
| 18 | +Use the Language Understanding (LUIS) authoring client library for Python to: |
| 19 | + |
| 20 | +* Create an app. |
| 21 | +* Add intents, entities, and example utterances. |
| 22 | +* Add features, such as a phrase list. |
| 23 | +* Train and publish an app. |
| 24 | + |
| 25 | +[Reference documentation](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/index?view=azure-python) | [Library source code](https://github.com/Azure/azure-sdk-for-python/tree/master/sdk/cognitiveservices/azure-cognitiveservices-language-luis/azure/cognitiveservices/language/luis) | [Authoring Package (Pypi)](https://pypi.org/project/azure-cognitiveservices-language-luis/) | [Samples](https://github.com/Azure-Samples/cognitive-services-quickstart-code/blob/master/python/LUIS/application_quickstart.py) |
| 26 | + |
| 27 | +## Prerequisites |
| 28 | + |
| 29 | +* Language Understanding (LUIS) portal account: [Create one for free](https://www.luis.ai). |
| 30 | +* [Python 3.x](https://www.python.org/) |
| 31 | + |
| 32 | +## Setting up |
| 33 | + |
| 34 | +### Get your Language Understanding (LUIS) authoring key |
| 35 | + |
| 36 | +Get your [authoring key](luis-how-to-account-settings.md), and [create an environment variable](https://docs.microsoft.com/azure/cognitive-services/cognitive-services-apis-create-account#configure-an-environment-variable-for-authentication) for the key, named `LUIS_AUTHORING_KEY` and an environment variable for the region of the key, `LUIS_REGION`. |
| 37 | + |
| 38 | +### Install the Python library for LUIS |
| 39 | + |
| 40 | +Within the application directory, install the Language Understanding (LUIS) authoring client library for python with the following command: |
| 41 | + |
| 42 | +```console |
| 43 | +pip install azure-cognitiveservices-language-luis |
| 44 | +``` |
| 45 | + |
| 46 | +## Object model |
| 47 | + |
| 48 | +The Language Understanding (LUIS) authoring client is a [LUISAuthoringClient](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.luisauthoringclient?view=azure-python) object that authenticates to Azure, which contains your authoring key. |
| 49 | + |
| 50 | +Once the client is created, use this client to access functionality including: |
| 51 | + |
| 52 | +* Apps - [create](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.appsoperations?view=azure-python#add-application-create-object--custom-headers-none--raw-false----operation-config-), [delete](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.appsoperations?view=azure-python#delete-app-id--force-false--custom-headers-none--raw-false----operation-config-), [publish](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.appsoperations?view=azure-python#publish-app-id--version-id-none--is-staging-false--custom-headers-none--raw-false----operation-config-) |
| 53 | +* Example utterances - [add by batch](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.examplesoperations?view=azure-python#batch-app-id--version-id--example-label-object-array--custom-headers-none--raw-false----operation-config-), [delete by ID](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.examplesoperations?view=azure-python#delete-app-id--version-id--example-id--custom-headers-none--raw-false----operation-config-) |
| 54 | +* Features - manage [phrase lists](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.featuresoperations?view=azure-python#add-phrase-list-app-id--version-id--phraselist-create-object--custom-headers-none--raw-false----operation-config-) |
| 55 | +* Model - manage [intents](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.modeloperations?view=azure-python#add-intent-app-id--version-id--name-none--custom-headers-none--raw-false----operation-config-) and entities |
| 56 | +* Pattern - manage [patterns](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.patternoperations?view=azure-python#add-pattern-app-id--version-id--pattern-none--intent-none--custom-headers-none--raw-false----operation-config-) |
| 57 | +* Train - [train](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.trainoperations?view=azure-python#train-version-app-id--version-id--custom-headers-none--raw-false----operation-config-) the app and poll for [training status](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.trainoperations?view=azure-python#get-status-app-id--version-id--custom-headers-none--raw-false----operation-config-) |
| 58 | +* [Versions](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.versionsoperations?view=azure-python) - manage with clone, export, and delete |
| 59 | + |
| 60 | + |
| 61 | +## Code examples |
| 62 | + |
| 63 | +These code snippets show you how to do the following with the Language Understanding (LUIS) authoring client library for python: |
| 64 | + |
| 65 | +* [Create an app](#create-a-luis-app) |
| 66 | +* [Add entities](#create-entities-for-the-app) |
| 67 | +* [Add intents](#create-intent-for-the-app) |
| 68 | +* [Add example utterances](#add-example-utterance-to-intent) |
| 69 | +* [Train the app](#train-the-app) |
| 70 | +* [Publish the app](#publish-a-language-understanding-app) |
| 71 | + |
| 72 | +## Create a new python application |
| 73 | + |
| 74 | +Create a new Python application in your preferred editor or IDE. Then import the following libraries. |
| 75 | + |
| 76 | +[!code-python[Create a new Python application in your preferred editor or IDE.](~/cognitive-services-quickstart-code/python/LUIS/application_quickstart.py?name=Dependencies)] |
| 77 | + |
| 78 | +Create variables for your resource's Azure endpoint and key. If you created the environment variable after you launched the application, you will need to close and reopen the editor, IDE, or shell running it to access the variable. |
| 79 | + |
| 80 | +[!code-python[Create variables for your resource's Azure endpoint and key.](~/cognitive-services-quickstart-code/python/LUIS/application_quickstart.py?name=AuthorizationVariables)] |
| 81 | + |
| 82 | +## Authenticate the client |
| 83 | + |
| 84 | +Create an [CognitiveServicesCredentials](https://docs.microsoft.com/python/api/msrest/msrest.authentication.cognitiveservicescredentials?view=azure-python) object with your key, and use it with your endpoint to create an [LUISAuthoringClient](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.luisauthoringclient?view=azure-python) object. |
| 85 | + |
| 86 | +[!code-python[Create LUIS client object](~/cognitive-services-quickstart-code/python/LUIS/application_quickstart.py?name=Client)] |
| 87 | + |
| 88 | +## Create a LUIS app |
| 89 | + |
| 90 | +1. Create a LUIS app to contain the natural language processing (NLP) model holding intents, entities, and example utterances. |
| 91 | + |
| 92 | +1. Create a [AppsOperation](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.appsoperations?view=azure-python) object's [add](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.appsoperations?view=azure-python#add-application-create-object--custom-headers-none--raw-false----operation-config-) method to create the app. The name and language culture are required properties. |
| 93 | + |
| 94 | + [!code-python[Create LUIS client app](~/cognitive-services-quickstart-code/python/LUIS/application_quickstart.py?name=createApp)] |
| 95 | + |
| 96 | + |
| 97 | +## Create intent for the app |
| 98 | +The primary object in a LUIS app's model is the intent. The intent aligns's with a grouping of user utterance _intentions_. A user may ask a question, or make a statement looking for a particular _intended_ response from a bot (or other client application). Examples of intentions are booking a flight, asking about weather in a destination city, and asking about contact information for customer service. |
| 99 | + |
| 100 | +Use the [model.add_intent](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.modeloperations?view=azure-python#add-intent-app-id--version-id--name-none--custom-headers-none--raw-false----operation-config-) method with the name of the unique intent then pass the app ID, version ID, and new intent name. |
| 101 | + |
| 102 | +[!code-python[Create LUIS client app](~/cognitive-services-quickstart-code/python/LUIS/application_quickstart.py?name=addIntents)] |
| 103 | + |
| 104 | +## Create entities for the app |
| 105 | + |
| 106 | +While entities are not required, they are found in most apps. The entity extracts information from the user utterance, necessary to fullfil the user's intention. There are several types of [prebuilt](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.modeloperations?view=azure-python#add-prebuilt-app-id--version-id--prebuilt-extractor-names--custom-headers-none--raw-false----operation-config-) and custom entities, each with their own data transformation object (DTO) models. Common prebuilt entities to add to your app include [number](luis-reference-prebuilt-number.md), [datetimeV2](luis-reference-prebuilt-datetimev2.md), [geographyV2](luis-reference-prebuilt-geographyv2.md), [ordinal](luis-reference-prebuilt-ordinal.md). |
| 107 | + |
| 108 | +This **add_entities** method created a `Location` simple entity with two roles, a `Class` simple entity, a `Flight` composite entity and adds several prebuilt entities. |
| 109 | + |
| 110 | +It is important to know that entities are not marked with an intent. They can and usually do apply to many intents. Only example user utterances are marked for a specific, single intent. |
| 111 | + |
| 112 | +Creation methods for entities are part of the [ModelOperations](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.modeloperations?view=azure-python) class. Each entity type has its own data transformation object (DTO) model. |
| 113 | + |
| 114 | +[!code-python[Create LUIS client app](~/cognitive-services-quickstart-code/python/LUIS/application_quickstart.py?name=addEntities)] |
| 115 | + |
| 116 | +## Add example utterance to intent |
| 117 | + |
| 118 | +In order to determine an utterance's intention and extract entities, the app needs examples of utterances. The examples need to target a specific, single intent and should mark all custom entities. Prebuilt entities do not need to be marked. |
| 119 | + |
| 120 | +Add example utterances by creating a list of [ExampleLabelObject](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.models.examplelabelobject?view=azure-python) objects, one object for each example utterance. Each example should mark all entities with a dictionary of name/value pairs of entity name and entity value. The entity value should be exactly as it appears in the text of the example utterance. |
| 121 | + |
| 122 | +Call [examples.batch](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.examplesoperations?view=azure-python#batch-app-id--version-id--example-label-object-array--custom-headers-none--raw-false----operation-config-) with the app ID, version ID, and the list of examples. The call responds with a list of results. You need to check each example's result to make sure it was successfully added to the model. |
| 123 | + |
| 124 | +[!code-python[Add example utterances via a batch](~/cognitive-services-quickstart-code/python/LUIS/application_quickstart.py?name=addUtterances)] |
| 125 | + |
| 126 | +## Train the app |
| 127 | + |
| 128 | +Once the model is created, the LUIS app needs to be trained for this version of the model. A trained model can be used in a [container](luis-container-howto.md), or [published](luis-how-to-publish-app.md) to the staging or product slots. |
| 129 | + |
| 130 | +The [train.train_version](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.trainoperations?view=azure-python#train-version-app-id--version-id--custom-headers-none--raw-false----operation-config-) method needs the app ID and the version ID. |
| 131 | + |
| 132 | +A very small model, such as this quickstart shows, will train very quickly. For production-level applications, training the app should include a polling call to the [get_status](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.trainoperations?view=azure-python#get-status-app-id--version-id--custom-headers-none--raw-false----operation-config-) method to determine when or if the training succeeded. The response is a list of [ModelTrainingInfo](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.models.modeltraininginfo?view=azure-python) objects with a separate status for each object. All objects must be successful for the training to be considered complete. |
| 133 | + |
| 134 | +[!code-python[Train LUIS client app](~/cognitive-services-quickstart-code/python/LUIS/application_quickstart.py?name=train)] |
| 135 | + |
| 136 | +## Publish a Language Understanding app |
| 137 | + |
| 138 | +Publish the LUIS app using the [app.publish](https://docs.microsoft.com/python/api/azure-cognitiveservices-language-luis/azure.cognitiveservices.language.luis.authoring.operations.appsoperations?view=azure-python#publish-app-id--version-id-none--is-staging-false--custom-headers-none--raw-false----operation-config-) method. This publishes the current trained version to the specified slot at the endpoint. Your client application uses this endpoint to send user utterances for prediction of intent and entity extraction. |
| 139 | + |
| 140 | +[!code-python[Publish LUIS client app](~/cognitive-services-quickstart-code/python/LUIS/application_quickstart.py?name=publish)] |
| 141 | + |
| 142 | +## Run the application |
| 143 | + |
| 144 | +Run the application with the `python` command on your quickstart file. |
| 145 | + |
| 146 | +```console |
| 147 | +python quickstart-file.py |
| 148 | +``` |
| 149 | + |
| 150 | +## Clean up resources |
| 151 | + |
| 152 | +If you want to clean up and remove a Cognitive Services subscription, you can delete the resource or resource group. Deleting the resource group also deletes any other resources associated with it. |
| 153 | + |
| 154 | +* [Portal](https://docs.microsoft.com/azure/cognitive-services/cognitive-services-apis-create-account#clean-up-resources) |
| 155 | +* [Azure CLI](https://docs.microsoft.com/azure/cognitive-services/cognitive-services-apis-create-account-cli#clean-up-resources) |
| 156 | + |
| 157 | +## Next steps |
| 158 | + |
| 159 | +> [!div class="nextstepaction"] |
| 160 | +>[Build a LUIS app to determine user intentions](luis-quickstart-intents-only.md) |
| 161 | +
|
| 162 | +* [What is the Language Understanding (LUIS) API?](what-is-luis.md) |
| 163 | +* [What's new?](whats-new.md) |
| 164 | +* [Intents](luis-concept-intent.md), [entities](luis-concept-entity-types.md), and [example utterances](luis-concept-utterance.md), and [prebuilt entities](luis-reference-prebuilt-entities.md) |
| 165 | +* The source code for this sample can be found on [GitHub](https://github.com/Azure-Samples/cognitive-services-quickstart-code/blob/master/python/LUIS/application_quickstart.py). |
0 commit comments