Analyze Text
Azure Language supports analysis of text, including language detection, sentiment analysis, key phrase extraction, and entity recognition.
For example, suppose a travel agency wants to process hotel reviews that have been submitted to the company’s web site. By using the Azure AI Language, they can determine the language each review is written in, the sentiment (positive, neutral, or negative) of the reviews, key phrases that might indicate the main topics discussed in the review, and named entities, such as places, landmarks, or people mentioned in the reviews.
Provision an Azure AI Language resource
If you don’t already have one in your subscription, you’ll need to provision an Azure AI Language service resource in your Azure subscription.
- Open the Azure portal at
https://portal.azure.com
, and sign in using the Microsoft account associated with your Azure subscription. - Select Create a resource.
- In the search field, search for Language service. Then, in the results, select Create under Language Service.
- Select Continue to create your resource.
- Provision the resource using the following settings:
- Subscription: Your Azure subscription.
- Resource group: Choose or create a resource group.
- Region:Choose any available region
- Name: Enter a unique name.
- Pricing tier: Select F0 (free), or S (standard) if F is not available.
- Responsible AI Notice: Agree.
- Select Review + create, then select Create to provision the resource.
- Wait for deployment to complete, and then go to the deployed resource.
- View the Keys and Endpoint page in the Resource Management section. You will need the information on this page later in the exercise.
Clone the repository for this course
You’ll develop your code using Cloud Shell from the Azure Portal. The code files for your app have been provided in a GitHub repo.
Tip: If you have already cloned the mslearn-ai-language repo recently, you can skip this task. Otherwise, follow these steps to clone it to your development environment.
-
In the Azure Portal, use the [>_] button to the right of the search bar at the top of the page to create a new Cloud Shell in the Azure portal, selecting a PowerShell environment. The cloud shell provides a command line interface in a pane at the bottom of the Azure portal.
Note: If you have previously created a cloud shell that uses a Bash environment, switch it to PowerShell.
-
In the cloud shell toolbar, in the Settings menu, select Go to Classic version (this is required to use the code editor).
Tip: As you paste commands into the cloudshell, the ouput may take up a large amount of the screen buffer. You can clear the screen by entering the
cls
command to make it easier to focus on each task. -
In the PowerShell pane, enter the following commands to clone the GitHub repo for this exercise:
rm -r mslearn-ai-language -f git clone https://github.com/microsoftlearning/mslearn-ai-language mslearn-ai-language
-
After the repo has been cloned, navigate to the folder containing the application code files:
cd mslearn-ai-language/Labfiles/01-analyze-text
Configure your application
Applications for both C# and Python have been provided, as well as a sample text file you’ll use to test the summarization. Both apps feature the same functionality. First, you’ll complete some key parts of the application to enable it to use your Azure AI Language resource.
- Run the command
cd C-Sharp/text-analysis
orcd Python/text-analysis
depending on your language preference. Each folder contains the language-specific files for an app into which you’re you’re going to integrate Azure AI Language text analytics functionality. -
Install the Azure AI Language Text Analytics SDK package by running the appropriate command for your language preference. For the Python exercise, also install the
dotenv
package:C#:
dotnet add package Azure.AI.TextAnalytics --version 5.3.0
Python:
python -m venv labenv ./labenv/bin/Activate.ps1 pip install -r requirements.txt azure-ai-textanalytics==5.3.0
-
Using the
ls
command, you can view the contents of the text-analysis folder, and note that it contains a file for configuration settings:- C#: appsettings.json
- Python: .env
-
Enter the following command to edit the configuration file that has been provided:
C#
code appsettings.json
Python
code .env
The file is opened in a code editor.
- Update the configuration values to include the endpoint and a key from the Azure Language resource you created (available on the Keys and Endpoint page for your Azure AI Language resource in the Azure portal)
- After you’ve replaced the placeholders, within the code editor, use the CTRL+S command or Right-click > Save to save your changes and then use the CTRL+Q command or Right-click > Quit to close the code editor while keeping the cloud shell command line open.
-
Note that the text-analysis folder contains a code file for the client application:
- C#: Program.cs
- Python: text-analysis.py
Open the code file and at the top, under the existing namespace references, find the comment Import namespaces. Then, under this comment, add the following language-specific code to import the namespaces you will need to use the Text Analytics SDK:
C#: Programs.cs
// import namespaces using Azure; using Azure.AI.TextAnalytics;
Python: text-analysis.py
# import namespaces from azure.core.credentials import AzureKeyCredential from azure.ai.textanalytics import TextAnalyticsClient
-
In the Main function, note that code to load the Azure AI Language service endpoint and key from the configuration file has already been provided. Then find the comment Create client using endpoint and key, and add the following code to create a client for the Text Analysis API:
C#: Programs.cs
// Create client using endpoint and key AzureKeyCredential credentials = new AzureKeyCredential(aiSvcKey); Uri endpoint = new Uri(aiSvcEndpoint); TextAnalyticsClient aiClient = new TextAnalyticsClient(endpoint, credentials);
Python: text-analysis.py
# Create client using endpoint and key credential = AzureKeyCredential(ai_key) ai_client = TextAnalyticsClient(endpoint=ai_endpoint, credential=credential)
-
Save your changes and close the code editor,then enter the following command to run the program:
- C#:
dotnet run
- Python:
python text-analysis.py
Tip: You can maximize the panel size to see more of the console text.
- C#:
- Observe the output as the code should run without error, displaying the contents of each review text file in the reviews folder. The application successfully creates a client for the Text Analytics API but doesn’t make use of it. We’ll fix that in the next section.
Add code to detect language
Now that you have created a client for the API, let’s use it to detect the language in which each review is written.
-
Open the code file again and find the comment Get language in the Main function for your program. Then, under this comment, add the code necessary to detect the language in each review document:
C#: Programs.cs
// Get language DetectedLanguage detectedLanguage = aiClient.DetectLanguage(text); Console.WriteLine($"\nLanguage: {detectedLanguage.Name}");
Python: text-analysis.py
# Get language detectedLanguage = ai_client.detect_language(documents=[text])[0] print('\nLanguage: {}'.format(detectedLanguage.primary_language.name))
Note: In this example, each review is analyzed individually, resulting in a separate call to the service for each file. An alternative approach is to create a collection of documents and pass them to the service in a single call. In both approaches, the response from the service consists of a collection of documents; which is why in the Python code above, the index of the first (and only) document in the response ([0]) is specified.
- Save your changes. Then close the code editor and re-run the program.
- Observe the output, noting that this time the language for each review is identified.
Add code to evaluate sentiment
Sentiment analysis is a commonly used technique to classify text as positive or negative (or possible neutral or mixed). It’s commonly used to analyze social media posts, product reviews, and other items where the sentiment of the text may provide useful insights.
-
In the Main function for your program, find the comment Get sentiment. Then, under this comment, add the code necessary to detect the sentiment of each review document:
C#: Program.cs
// Get sentiment DocumentSentiment sentimentAnalysis = aiClient.AnalyzeSentiment(text); Console.WriteLine($"\nSentiment: {sentimentAnalysis.Sentiment}");
Python: text-analysis.py
# Get sentiment sentimentAnalysis = ai_client.analyze_sentiment(documents=[text])[0] print("\nSentiment: {}".format(sentimentAnalysis.sentiment))
- Save your changes. Then close the code editor and re-run the program.
- Observe the output, noting that the sentiment of the reviews is detected.
Add code to identify key phrases
It can be useful to identify key phrases in a body of text to help determine the main topics that it discusses.
-
In the Main function for your program, find the comment Get key phrases. Then, under this comment, add the code necessary to detect the key phrases in each review document:
C#: Program.cs
// Get key phrases KeyPhraseCollection phrases = aiClient.ExtractKeyPhrases(text); if (phrases.Count > 0) { Console.WriteLine("\nKey Phrases:"); foreach(string phrase in phrases) { Console.WriteLine($"\t{phrase}"); } }
Python: text-analysis.py
# Get key phrases phrases = ai_client.extract_key_phrases(documents=[text])[0].key_phrases if len(phrases) > 0: print("\nKey Phrases:") for phrase in phrases: print('\t{}'.format(phrase))
- Save your changes. Then close the code editor and re-run the program.
- Observe the output, noting that each document contains key phrases that give some insights into what the review is about.
Add code to extract entities
Often, documents or other bodies of text mention people, places, time periods, or other entities. The text Analytics API can detect multiple categories (and subcategories) of entity in your text.
-
In the Main function for your program, find the comment Get entities. Then, under this comment, add the code necessary to identify entities that are mentioned in each review:
C#: Program.cs
// Get entities CategorizedEntityCollection entities = aiClient.RecognizeEntities(text); if (entities.Count > 0) { Console.WriteLine("\nEntities:"); foreach(CategorizedEntity entity in entities) { Console.WriteLine($"\t{entity.Text} ({entity.Category})"); } }
Python: text-analysis.py
# Get entities entities = ai_client.recognize_entities(documents=[text])[0].entities if len(entities) > 0: print("\nEntities") for entity in entities: print('\t{} ({})'.format(entity.text, entity.category))
- Save your changes. Then close the code editor and re-run the program.
- Observe the output, noting the entities that have been detected in the text.
Add code to extract linked entities
In addition to categorized entities, the Text Analytics API can detect entities for which there are known links to data sources, such as Wikipedia.
-
In the Main function for your program, find the comment Get linked entities. Then, under this comment, add the code necessary to identify linked entities that are mentioned in each review:
C#: Program.cs
// Get linked entities LinkedEntityCollection linkedEntities = aiClient.RecognizeLinkedEntities(text); if (linkedEntities.Count > 0) { Console.WriteLine("\nLinks:"); foreach(LinkedEntity linkedEntity in linkedEntities) { Console.WriteLine($"\t{linkedEntity.Name} ({linkedEntity.Url})"); } }
Python: text-analysis.py
# Get linked entities entities = ai_client.recognize_linked_entities(documents=[text])[0].entities if len(entities) > 0: print("\nLinks") for linked_entity in entities: print('\t{} ({})'.format(linked_entity.name, linked_entity.url))
- Save your changes. Then close the code editor and re-run the program.
- Observe the output, noting the linked entities that are identified.
Clean up resources
If you’re finished exploring the Azure AI Language service, you can delete the resources you created in this exercise. Here’s how:
-
Open the Azure portal at
https://portal.azure.com
, and sign in using the Microsoft account associated with your Azure subscription. -
Browse to the Azure AI Language resource you created in this lab.
-
On the resource page, select Delete and follow the instructions to delete the resource.
More information
For more information about using Azure AI Language, see the documentation.