Schnellstart: Verwenden der Textanalyse-Clientbibliothek und der REST-APIQuickstart: Use the Text Analytics client library and REST API
Dieser Artikel hilft Ihnen beim Einstieg in die Verwendung der Textanalyse-Clientbibliothek und der REST-API.Use this article to get started with the Text Analytics client library and REST API. Befolgen Sie diese Schritte, um die Codebeispiele für das Text Mining zu testen:Follow these steps to try out examples code for mining text:
- StimmungsanalyseSentiment analysis
- Opinion MiningOpinion mining
- SpracherkennungLanguage detection
- EntitätserkennungEntity recognition
- Erkennung personenbezogener InformationenPersonal Identifying Information recognition
- SchlüsselwortextraktionKey phrase extraction
Wichtig
- Die neueste stabile Version der Textanalyse-API ist
3.0
.The latest stable version of the Text Analytics API is3.0
.- Befolgen Sie nur die Anweisungen für die von Ihnen verwendete Version.Be sure to only follow the instructions for the version you are using.
- Im Code dieses Artikels werden der Einfachheit halber synchrone Methoden und ein ungeschützter Anmeldeinformationsspeicher verwendet.The code in this article uses synchronous methods and un-secured credentials storage for simplicity reasons. Für Produktionsszenarien wird aus Leistungs- und Skalierbarkeitsgründen die Verwendung der asynchronen Batchmethoden empfohlen.For production scenarios, we recommend using the batched asynchronous methods for performance and scalability. Informationen finden Sie in der Referenzdokumentation weiter unten.See the reference documentation below.
- Wenn Sie die Textanalyse für Gesundheit oder asynchrone Vorgänge verwenden möchten, sehen Sie sich auf GitHub die Beispiele für C#, Python oder Java an.If you want to use Text Analytics for health or Asynchronous operations, see the examples on Github for C#, Python or Java
v3.1-Referenzdokumentation | v3.1-Bibliotheksquellcode | v3.1-Paket (NuGet) | v3.1-Beispielev3.1 Reference documentation | v3.1 Library source code | v3.1 Package (NuGet) | v3.1 Samples
VoraussetzungenPrerequisites
- Azure-Abonnement – Erstellen eines kostenlosen KontosAzure subscription - Create one for free
- Visual Studio-IDEThe Visual Studio IDE
- Sobald Sie über Ihr Azure-Abonnement verfügen, erstellen Sie eine Textanalyseressource im Azure-Portal, um Ihren Schlüssel und Endpunkt zu erhalten.Once you have your Azure subscription, create a Text Analytics resource in the Azure portal to get your key and endpoint. Klicken Sie nach Abschluss der Bereitstellung auf Zu Ressource wechseln.After it deploys, click Go to resource.
- Sie benötigen den Schlüssel und den Endpunkt der von Ihnen erstellten Ressource, um Ihre Anwendung mit der Textanalyse-API zu verbinden.You will need the key and endpoint from the resource you create to connect your application to the Text Analytics API. Der Schlüssel und der Endpunkt werden weiter unten in der Schnellstartanleitung in den Code eingefügt.You'll paste your key and endpoint into the code below later in the quickstart.
- Sie können den kostenlosen Tarif (
F0
) verwenden, um den Dienst zu testen, und später für die Produktion auf einen kostenpflichtigen Tarif upgraden.You can use the free pricing tier (F0
) to try the service, and upgrade later to a paid tier for production.
- Sie benötigen eine Textanalyse-Ressource des Standard-Tarifs (S), um das Analyze-Feature nutzen zu können.To use the Analyze feature, you will need a Text Analytics resource with the standard (S) pricing tier.
EinrichtenSetting up
Erstellen einer neuen .NET Core-AnwendungCreate a new .NET Core application
Erstellen Sie über die Visual Studio-IDE eine neue .NET Core-Konsolenanwendung.Using the Visual Studio IDE, create a new .NET Core console app. Dadurch wird ein Projekt vom Typ „Hallo Welt“ mit einer einzelnen C#-Quelldatei (program.cs) erstellt.This will create a "Hello World" project with a single C# source file: program.cs.
Installieren Sie die Clientbibliothek, indem Sie im Projektmappen-Explorer mit der rechten Maustaste auf die Projektmappe klicken und NuGet-Pakete verwalten auswählen.Install the client library by right-clicking on the solution in the Solution Explorer and selecting Manage NuGet Packages. Wählen Sie im daraufhin geöffneten Paket-Manager die Option Durchsuchen aus, und suchen Sie nach Azure.AI.TextAnalytics
.In the package manager that opens select Browse and search for Azure.AI.TextAnalytics
. Aktivieren Sie das Kontrollkästchen include prerelase (Vorabversionen einbeziehen), wählen Sie die Version 5.1.0-beta.3
aus, und installieren Sie.Check the include prerelase box, select version 5.1.0-beta.3
, and then Install. Sie können auch die Paket-Manager-Konsole verwenden.You can also use the Package Manager Console.
Öffnen Sie die Datei program.cs, und fügen Sie die folgenden using
-Anweisungen hinzu:Open the program.cs file and add the following using
directives:
using Azure;
using System;
using System.Globalization;
using Azure.AI.TextAnalytics;
Erstellen Sie in der Program
-Klasse der Anwendung Variablen für den Schlüssel und Endpunkt Ihrer Ressource.In the application's Program
class, create variables for your resource's key and endpoint.
Wichtig
Öffnen Sie das Azure-Portal.Go to the Azure portal. Wenn die im Abschnitt Voraussetzungen erstellte Textanalyseressource erfolgreich bereitgestellt wurde, klicken Sie unter Nächste Schritte auf die Schaltfläche Zu Ressource wechseln.If the Text Analytics resource you created in the Prerequisites section deployed successfully, click the Go to Resource button under Next Steps. Schlüssel und Endpunkt finden Sie auf der Seite mit dem Schlüssel und dem Endpunkt der Ressource unter Ressourcenverwaltung.You can find your key and endpoint in the resource's key and endpoint page, under resource management.
Denken Sie daran, den Schlüssel aus Ihrem Code zu entfernen, wenn Sie fertig sind, und ihn niemals zu veröffentlichen.Remember to remove the key from your code when you're done, and never post it publicly. In der Produktionsumgebung sollten Sie eine sichere Methode zum Speichern Ihrer Anmeldeinformationen sowie zum Zugriff darauf verwenden.For production, consider using a secure way of storing and accessing your credentials. Beispielsweise Azure Key Vault.For example, Azure key vault.
private static readonly AzureKeyCredential credentials = new AzureKeyCredential("<replace-with-your-text-analytics-key-here>");
private static readonly Uri endpoint = new Uri("<replace-with-your-text-analytics-endpoint-here>");
Ersetzen Sie die Main
-Methode der Anwendung.Replace the application's Main
method. Die hier aufgerufenen Methoden definieren Sie später.You will define the methods called here later.
static void Main(string[] args)
{
var client = new TextAnalyticsClient(endpoint, credentials);
// You will implement these methods later in the quickstart.
SentimentAnalysisExample(client);
SentimentAnalysisWithOpinionMiningExample(client);
LanguageDetectionExample(client);
EntityRecognitionExample(client);
EntityLinkingExample(client);
RecognizePIIExample(client);
KeyPhraseExtractionExample(client);
Console.Write("Press any key to exit.");
Console.ReadKey();
}
ObjektmodellObject model
Der Textanalyse-Client ist ein Objekt vom Typ TextAnalyticsClient
, das sich mit Ihrem Schlüssel bei Azure authentifiziert und Funktionen bereitstellt, um Text als einzelne Zeichenfolgen oder als Batch zu akzeptieren.The Text Analytics client is a TextAnalyticsClient
object that authenticates to Azure using your key, and provides functions to accept text as single strings or as a batch. Sie können Text synchron oder asynchron an die API senden.You can send text to the API synchronously, or asynchronously. Das Antwortobjekt enthält die Analyseinformationen für die einzelnen gesendeten Dokumente.The response object will contain the analysis information for each document you send.
Wenn Sie Version 3.x
des Diensts verwenden, können Sie eine optionale TextAnalyticsClientOptions
-Instanz nutzen, um den Client mit verschiedenen Standardeinstellungen wie Standardsprache oder Länder-/Regionshinweis zu initialisieren.If you're using version 3.x
of the service, you can use an optional TextAnalyticsClientOptions
instance to initialize the client with various default settings (for example default language or country/region hint). Sie können für die Authentifizieren auch ein Azure Active Directory-Token verwenden.You can also authenticate using an Azure Active Directory token.
CodebeispieleCode examples
- StandpunktanalyseSentiment analysis
- Opinion MiningOpinion mining
- SprachenerkennungLanguage detection
- Erkennung benannter EntitätenNamed Entity Recognition
- EntitätsverknüpfungEntity linking
- SchlüsselbegriffserkennungKey phrase extraction
Authentifizieren des ClientsAuthenticate the client
Stellen Sie sicher, dass mit Ihrer zuvor erstellten Main-Methode ein neues Clientobjekt mit Ihrem Endpunkt und Ihren Anmeldeinformationen erstellt wird.Make sure your main method from earlier creates a new client object with your endpoint and credentials.
var client = new TextAnalyticsClient(endpoint, credentials);
StimmungsanalyseSentiment analysis
Erstellen Sie eine neue Funktion namens SentimentAnalysisExample()
, die den zuvor erstellten Client verwendet, und rufen Sie die zugehörige Funktion AnalyzeSentiment()
auf.Create a new function called SentimentAnalysisExample()
that takes the client that you created earlier, and call its AnalyzeSentiment()
function. Das zurückgegebene Objekt vom Typ Response<DocumentSentiment>
enthält die Stimmungsbezeichnung und den Stimmungswert des gesamten Eingabedokuments sowie eine Standpunktanalyse für jeden Satz (sofern erfolgreich).The returned Response<DocumentSentiment>
object will contain the sentiment label and score of the entire input document, as well as a sentiment analysis for each sentence if successful. Im Falle eines Fehlers wird ein Fehler vom Typ RequestFailedException
ausgelöst.If there was an error, it will throw a RequestFailedException
.
static void SentimentAnalysisExample(TextAnalyticsClient client)
{
string inputText = "I had the best day of my life. I wish you were there with me.";
DocumentSentiment documentSentiment = client.AnalyzeSentiment(inputText);
Console.WriteLine($"Document sentiment: {documentSentiment.Sentiment}\n");
foreach (var sentence in documentSentiment.Sentences)
{
Console.WriteLine($"\tText: \"{sentence.Text}\"");
Console.WriteLine($"\tSentence sentiment: {sentence.Sentiment}");
Console.WriteLine($"\tPositive score: {sentence.ConfidenceScores.Positive:0.00}");
Console.WriteLine($"\tNegative score: {sentence.ConfidenceScores.Negative:0.00}");
Console.WriteLine($"\tNeutral score: {sentence.ConfidenceScores.Neutral:0.00}\n");
}
}
OutputOutput
Document sentiment: Positive
Text: "I had the best day of my life."
Sentence sentiment: Positive
Positive score: 1.00
Negative score: 0.00
Neutral score: 0.00
Text: "I wish you were there with me."
Sentence sentiment: Neutral
Positive score: 0.21
Negative score: 0.02
Neutral score: 0.77
Opinion MiningOpinion mining
Erstellen Sie eine neue Funktion namens SentimentAnalysisWithOpinionMiningExample()
, die den zuvor erstellten Client verwendet, und rufen Sie die zugehörige Funktion AnalyzeSentimentBatch()
mit der Option AdditionalSentimentAnalyses.OpinionMining
auf.Create a new function called SentimentAnalysisWithOpinionMiningExample()
that takes the client that you created earlier, and call its AnalyzeSentimentBatch()
function with AdditionalSentimentAnalyses.OpinionMining
option. Das zurückgegebene AnalyzeSentimentResultCollection
-Objekt enthält die Auflistung von AnalyzeSentimentResult
, in der Response<DocumentSentiment>
darstellt ist.The returned AnalyzeSentimentResultCollection
object will contain the collection of AnalyzeSentimentResult
in which represents Response<DocumentSentiment>
. Der Unterschied zwischen SentimentAnalysis()
und SentimentAnalysisWithOpinionMiningExample()
besteht darin, dass das letztere in jedem Satz MinedOpinion
enthält, was einen analysierten Aspekt und die zugehörige(n) Meinung(en) anzeigt.The difference between SentimentAnalysis()
and SentimentAnalysisWithOpinionMiningExample()
is that the latter will contain MinedOpinion
in each sentence, which shows an analyzed aspect and the related opinion(s). Im Falle eines Fehlers wird ein Fehler vom Typ RequestFailedException
ausgelöst.If there was an error, it will throw a RequestFailedException
.
static void SentimentAnalysisWithOpinionMiningExample(TextAnalyticsClient client)
{
var documents = new List<string>
{
"The food and service were unacceptable, but the concierge were nice."
};
AnalyzeSentimentResultCollection reviews = client.AnalyzeSentimentBatch(documents, options: new AnalyzeSentimentOptions()
{
IncludeOpinionMining = true
});
foreach (AnalyzeSentimentResult review in reviews)
{
Console.WriteLine($"Document sentiment: {review.DocumentSentiment.Sentiment}\n");
Console.WriteLine($"\tPositive score: {review.DocumentSentiment.ConfidenceScores.Positive:0.00}");
Console.WriteLine($"\tNegative score: {review.DocumentSentiment.ConfidenceScores.Negative:0.00}");
Console.WriteLine($"\tNeutral score: {review.DocumentSentiment.ConfidenceScores.Neutral:0.00}\n");
foreach (SentenceSentiment sentence in review.DocumentSentiment.Sentences)
{
Console.WriteLine($"\tText: \"{sentence.Text}\"");
Console.WriteLine($"\tSentence sentiment: {sentence.Sentiment}");
Console.WriteLine($"\tSentence positive score: {sentence.ConfidenceScores.Positive:0.00}");
Console.WriteLine($"\tSentence negative score: {sentence.ConfidenceScores.Negative:0.00}");
Console.WriteLine($"\tSentence neutral score: {sentence.ConfidenceScores.Neutral:0.00}\n");
foreach (MinedOpinion minedOpinion in sentence.MinedOpinions)
{
Console.WriteLine($"\tAspect: {minedOpinion.Aspect.Text}, Value: {minedOpinion.Aspect.Sentiment}");
Console.WriteLine($"\tAspect positive score: {minedOpinion.Aspect.ConfidenceScores.Positive:0.00}");
Console.WriteLine($"\tAspect negative score: {minedOpinion.Aspect.ConfidenceScores.Negative:0.00}");
foreach (OpinionSentiment opinion in minedOpinion.Opinions)
{
Console.WriteLine($"\t\tRelated Opinion: {opinion.Text}, Value: {opinion.Sentiment}");
Console.WriteLine($"\t\tRelated Opinion positive score: {opinion.ConfidenceScores.Positive:0.00}");
Console.WriteLine($"\t\tRelated Opinion negative score: {opinion.ConfidenceScores.Negative:0.00}");
}
}
}
Console.WriteLine($"\n");
}
}
OutputOutput
Document sentiment: Positive
Positive score: 0.84
Negative score: 0.16
Neutral score: 0.00
Text: "The food and service were unacceptable, but the concierge were nice."
Sentence sentiment: Positive
Sentence positive score: 0.84
Sentence negative score: 0.16
Sentence neutral score: 0.00
Aspect: food, Value: Negative
Aspect positive score: 0.01
Aspect negative score: 0.99
Related Opinion: unacceptable, Value: Negative
Related Opinion positive score: 0.01
Related Opinion negative score: 0.99
Aspect: service, Value: Negative
Aspect positive score: 0.01
Aspect negative score: 0.99
Related Opinion: unacceptable, Value: Negative
Related Opinion positive score: 0.01
Related Opinion negative score: 0.99
Aspect: concierge, Value: Positive
Aspect positive score: 1.00
Aspect negative score: 0.00
Related Opinion: nice, Value: Positive
Related Opinion positive score: 1.00
Related Opinion negative score: 0.00
Press any key to exit.
SpracherkennungLanguage detection
Erstellen Sie eine neue Funktion namens LanguageDetectionExample()
, die den zuvor erstellten Client verwendet, und rufen Sie die zugehörige Funktion DetectLanguage()
auf.Create a new function called LanguageDetectionExample()
that takes the client that you created earlier, and call its DetectLanguage()
function. Das zurückgegebene Objekt vom Typ Response<DetectedLanguage>
enthält die erkannte Sprache sowie den zugehörigen Namen und ISO-6391-Code.The returned Response<DetectedLanguage>
object will contain the detected language along with its name and ISO-6391 code. Im Falle eines Fehlers wird ein Fehler vom Typ RequestFailedException
ausgelöst.If there was an error, it will throw a RequestFailedException
.
Tipp
In einigen Fällen ist es unter Umständen schwierig, die Sprachen basierend auf den Eingaben eindeutig zu bestimmen.In some cases it may be hard to disambiguate languages based on the input. Mithilfe des Parameters countryHint
können Sie einen zweistelligen Länder-/Regionscode angeben.You can use the countryHint
parameter to specify a 2-letter country/region code. Die API verwendet standardmäßig „US“ als Wert für „countryHint“. Wenn Sie dieses Verhalten entfernen möchten, können Sie diesen Parameter zurücksetzen, indem Sie seinen Wert auf eine leere Zeichenfolge (countryHint = ""
) festlegen.By default the API is using the "US" as the default countryHint, to remove this behavior you can reset this parameter by setting this value to empty string countryHint = ""
. Wenn Sie einen anderen Standardwert festlegen möchten, legen Sie die Eigenschaft TextAnalyticsClientOptions.DefaultCountryHint
fest, und übergeben Sie sie während der Initialisierung des Clients.To set a different default, set the TextAnalyticsClientOptions.DefaultCountryHint
property and pass it during the client's initialization.
static void LanguageDetectionExample(TextAnalyticsClient client)
{
DetectedLanguage detectedLanguage = client.DetectLanguage("Ce document est rédigé en Français.");
Console.WriteLine("Language:");
Console.WriteLine($"\t{detectedLanguage.Name},\tISO-6391: {detectedLanguage.Iso6391Name}\n");
}
OutputOutput
Language:
French, ISO-6391: fr
Erkennung benannter Entitäten (NER)Named Entity Recognition (NER)
Erstellen Sie eine neue Funktion namens EntityRecognitionExample()
, die den zuvor erstellten Client verwendet, rufen Sie die zugehörige Funktion RecognizeEntities()
auf, und durchlaufen Sie die Ergebnisse.Create a new function called EntityRecognitionExample()
that takes the client that you created earlier, call its RecognizeEntities()
function and iterate through the results. Das zurückgegebene Response<CategorizedEntityCollection>
-Objekt enthält die Sammlung der erkannten CategorizedEntity
-Entitäten.The returned Response<CategorizedEntityCollection>
object will contain the collection of detected entities CategorizedEntity
. Im Falle eines Fehlers wird ein Fehler vom Typ RequestFailedException
ausgelöst.If there was an error, it will throw a RequestFailedException
.
static void EntityRecognitionExample(TextAnalyticsClient client)
{
var response = client.RecognizeEntities("I had a wonderful trip to Seattle last week.");
Console.WriteLine("Named Entities:");
foreach (var entity in response.Value)
{
Console.WriteLine($"\tText: {entity.Text},\tCategory: {entity.Category},\tSub-Category: {entity.SubCategory}");
Console.WriteLine($"\t\tScore: {entity.ConfidenceScore:F2},\tLength: {entity.Length},\tOffset: {entity.Offset}\n");
}
}
OutputOutput
Named Entities:
Text: trip, Category: Event, Sub-Category:
Score: 0.61, Length: 4, Offset: 18
Text: Seattle, Category: Location, Sub-Category: GPE
Score: 0.82, Length: 7, Offset: 26
Text: last week, Category: DateTime, Sub-Category: DateRange
Score: 0.80, Length: 9, Offset: 34
EntitätsverknüpfungEntity linking
Erstellen Sie eine neue Funktion namens EntityLinkingExample()
, die den zuvor erstellten Client verwendet, rufen Sie die zugehörige Funktion RecognizeLinkedEntities()
auf, und durchlaufen Sie die Ergebnisse.Create a new function called EntityLinkingExample()
that takes the client that you created earlier, call its RecognizeLinkedEntities()
function and iterate through the results. Das zurückgegebene Response<LinkedEntityCollection>
-Objekt enthält die Sammlung der erkannten LinkedEntity
-Entitäten.The returned Response<LinkedEntityCollection>
object will contain the collection of detected entities LinkedEntity
. Im Falle eines Fehlers wird ein Fehler vom Typ RequestFailedException
ausgelöst.If there was an error, it will throw a RequestFailedException
. Da verknüpfte Entitäten eindeutig identifiziert werden, werden Vorkommen der gleichen Entität unter einem Objekt vom Typ LinkedEntity
als Liste von Objekten des Typs LinkedEntityMatch
gruppiert.Since linked entities are uniquely identified, occurrences of the same entity are grouped under a LinkedEntity
object as a list of LinkedEntityMatch
objects.
static void EntityLinkingExample(TextAnalyticsClient client)
{
var response = client.RecognizeLinkedEntities(
"Microsoft was founded by Bill Gates and Paul Allen on April 4, 1975, " +
"to develop and sell BASIC interpreters for the Altair 8800. " +
"During his career at Microsoft, Gates held the positions of chairman, " +
"chief executive officer, president and chief software architect, " +
"while also being the largest individual shareholder until May 2014.");
Console.WriteLine("Linked Entities:");
foreach (var entity in response.Value)
{
Console.WriteLine($"\tName: {entity.Name},\tID: {entity.DataSourceEntityId},\tURL: {entity.Url}\tData Source: {entity.DataSource}");
Console.WriteLine("\tMatches:");
foreach (var match in entity.Matches)
{
Console.WriteLine($"\t\tText: {match.Text}");
Console.WriteLine($"\t\tScore: {match.ConfidenceScore:F2}");
Console.WriteLine($"\t\tLength: {match.Length}");
Console.WriteLine($"\t\tOffset: {match.Offset}\n");
}
}
}
OutputOutput
Linked Entities:
Name: Microsoft, ID: Microsoft, URL: https://en.wikipedia.org/wiki/Microsoft Data Source: Wikipedia
Matches:
Text: Microsoft
Score: 0.55
Length: 9
Offset: 0
Text: Microsoft
Score: 0.55
Length: 9
Offset: 150
Name: Bill Gates, ID: Bill Gates, URL: https://en.wikipedia.org/wiki/Bill_Gates Data Source: Wikipedia
Matches:
Text: Bill Gates
Score: 0.63
Length: 10
Offset: 25
Text: Gates
Score: 0.63
Length: 5
Offset: 161
Name: Paul Allen, ID: Paul Allen, URL: https://en.wikipedia.org/wiki/Paul_Allen Data Source: Wikipedia
Matches:
Text: Paul Allen
Score: 0.60
Length: 10
Offset: 40
Name: April 4, ID: April 4, URL: https://en.wikipedia.org/wiki/April_4 Data Source: Wikipedia
Matches:
Text: April 4
Score: 0.32
Length: 7
Offset: 54
Name: BASIC, ID: BASIC, URL: https://en.wikipedia.org/wiki/BASIC Data Source: Wikipedia
Matches:
Text: BASIC
Score: 0.33
Length: 5
Offset: 89
Name: Altair 8800, ID: Altair 8800, URL: https://en.wikipedia.org/wiki/Altair_8800 Data Source: Wikipedia
Matches:
Text: Altair 8800
Score: 0.88
Length: 11
Offset: 116
Erkennung von personenbezogenen InformationenPersonally Identifiable Information recognition
Erstellen Sie eine neue Funktion namens RecognizePIIExample()
, die den zuvor erstellten Client verwendet, rufen Sie die zugehörige Funktion RecognizePiiEntities()
auf, und durchlaufen Sie die Ergebnisse.Create a new function called RecognizePIIExample()
that takes the client that you created earlier, call its RecognizePiiEntities()
function and iterate through the results. Die zurückgegebene PiiEntityCollection
stellt die Liste der erkannten PII-Entitäten dar.The returned PiiEntityCollection
represents the list of detected PII entities. Im Falle eines Fehlers wird ein Fehler vom Typ RequestFailedException
ausgelöst.If there was an error, it will throw a RequestFailedException
.
static void RecognizePIIExample(TextAnalyticsClient client)
{
string document = "A developer with SSN 859-98-0987 whose phone number is 800-102-1100 is building tools with our APIs.";
PiiEntityCollection entities = client.RecognizePiiEntities(document).Value;
Console.WriteLine($"Redacted Text: {entities.RedactedText}");
if (entities.Count > 0)
{
Console.WriteLine($"Recognized {entities.Count} PII entit{(entities.Count > 1 ? "ies" : "y")}:");
foreach (PiiEntity entity in entities)
{
Console.WriteLine($"Text: {entity.Text}, Category: {entity.Category}, SubCategory: {entity.SubCategory}, Confidence score: {entity.ConfidenceScore}");
}
}
else
{
Console.WriteLine("No entities were found.");
}
}
OutputOutput
Redacted Text: A developer with SSN *********** whose phone number is ************ is building tools with our APIs.
Recognized 2 PII entities:
Text: 859-98-0987, Category: U.S. Social Security Number (SSN), SubCategory: , Confidence score: 0.65
Text: 800-102-1100, Category: Phone Number, SubCategory: , Confidence score: 0.8
SchlüsselwortextraktionKey phrase extraction
Erstellen Sie eine neue Funktion namens KeyPhraseExtractionExample()
, die den zuvor erstellten Client verwendet, und rufen Sie die zugehörige Funktion ExtractKeyPhrases()
auf.Create a new function called KeyPhraseExtractionExample()
that takes the client that you created earlier, and call its ExtractKeyPhrases()
function. Das zurückgegebene Objekt vom Typ <Response<KeyPhraseCollection>
enthält die Liste erkannter Schlüsselbegriffe.The returned <Response<KeyPhraseCollection>
object will contain the list of detected key phrases. Im Falle eines Fehlers wird ein Fehler vom Typ RequestFailedException
ausgelöst.If there was an error, it will throw a RequestFailedException
.
static void KeyPhraseExtractionExample(TextAnalyticsClient client)
{
var response = client.ExtractKeyPhrases("My cat might need to see a veterinarian.");
// Printing key phrases
Console.WriteLine("Key phrases:");
foreach (string keyphrase in response.Value)
{
Console.WriteLine($"\t{keyphrase}");
}
}
OutputOutput
Key phrases:
cat
veterinarian
Asynchrones Verwenden der API mit dem Analyze-VorgangUse the API asynchronously with the Analyze operation
Achtung
Wenn Sie den Analysevorgang verwenden möchten, muss es sich bei Ihrer Azure-Ressource um eine Ressource im Standard-Tarif (S) handeln.To use the Analyze operation, make sure your Azure resource is using the S standard pricing tier.
Erstellen Sie eine neue Funktion namens AnalyzeOperationExample()
, die den zuvor erstellten Client verwendet, und rufen Sie die zugehörige Funktion StartAnalyzeOperationBatch()
auf.Create a new function called AnalyzeOperationExample()
that takes the client that you created earlier, and call its StartAnalyzeOperationBatch()
function. Das zurückgegebene AnalyzeOperation
-Objekt enthält das Operation
-Schnittstellenobjekt für AnalyzeOperationResult
.The returned AnalyzeOperation
object will contain the Operation
interface object for AnalyzeOperationResult
. Da es sich um einen zeitintensiven Vorgang handelt, muss await
in der operation.WaitForCompletionAsync()
-Methode für den Wert aktualisiert werden.As it is a Long Running Operation, await
on the operation.WaitForCompletionAsync()
for the value to be updated. Sobald WaitForCompletionAsync()
ausgeführt wurde, sollte die Sammlung in operation.Value
aktualisiert werden.Once the WaitForCompletionAsync()
is finishes, the collection should be updated in the operation.Value
. Im Falle eines Fehlers wird ein Fehler vom Typ RequestFailedException
ausgelöst.If there was an error, it will throw a RequestFailedException
.
static async Task AnalyzeOperationExample(TextAnalyticsClient client)
{
string inputText = "Microsoft was founded by Bill Gates and Paul Allen.";
var batchDocuments = new List<string> { inputText };
AnalyzeOperationOptions operationOptions = new AnalyzeOperationOptions()
{
EntitiesTaskParameters = new EntitiesTaskParameters(),
DisplayName = "Analyze Operation Quick Start Example"
};
AnalyzeOperation operation = client.StartAnalyzeOperationBatch(batchDocuments, operationOptions, "en");
await operation.WaitForCompletionAsync();
AnalyzeOperationResult resultCollection = operation.Value;
RecognizeEntitiesResultCollection entitiesResult = resultCollection.Tasks.EntityRecognitionTasks[0].Results;
Console.WriteLine("Analyze Operation Request Details");
Console.WriteLine($" Status: {resultCollection.Status}");
Console.WriteLine($" DisplayName: {resultCollection.DisplayName}");
Console.WriteLine("");
Console.WriteLine("Recognized Entities");
foreach (RecognizeEntitiesResult result in entitiesResult)
{
Console.WriteLine($" Recognized the following {result.Entities.Count} entities:");
foreach (CategorizedEntity entity in result.Entities)
{
Console.WriteLine($" Entity: {entity.Text}");
Console.WriteLine($" Category: {entity.Category}");
Console.WriteLine($" Offset: {entity.Offset}");
Console.WriteLine($" ConfidenceScore: {entity.ConfidenceScore}");
Console.WriteLine($" SubCategory: {entity.SubCategory}");
}
Console.WriteLine("");
}
}
Nachdem Sie das Beispiel zu Ihrer Anwendung hinzugefügt haben, können Sie es mithilfe von await
in der Methode main()
aufrufen.After you add this example to your application, call in your main()
method using await
.
await AnalyzeOperationExample(client).ConfigureAwait(false);
AusgabeOutput
Analyze Operation Request Details
Status: succeeded
DisplayName: Analyze Operation Quick Start Example
Recognized Entities
Recognized the following 3 entities:
Entity: Microsoft
Category: Organization
Offset: 0
ConfidenceScore: 0.83
SubCategory:
Entity: Bill Gates
Category: Person
Offset: 25
ConfidenceScore: 0.85
SubCategory:
Entity: Paul Allen
Category: Person
Offset: 40
ConfidenceScore: 0.9
SubCategory:
Sie können den Analyze-Vorgang auch verwenden, um personenbezogene Informationen zu erkennen und Schlüsselbegriffe zu extrahieren.You can also use the Analyze operation to detect PII and key phrase extraction. Das Analyze-Beispiel finden Sie auf GitHub.See the Analyze sample on GitHub.
Wichtig
- Die neueste stabile Version der Textanalyse-API ist
3.0
.The latest stable version of the Text Analytics API is3.0
. - Im Code dieses Artikels werden der Einfachheit halber synchrone Methoden und ein ungeschützter Anmeldeinformationsspeicher verwendet.The code in this article uses synchronous methods and un-secured credentials storage for simplicity reasons. Für Produktionsszenarien wird aus Leistungs- und Skalierbarkeitsgründen die Verwendung der asynchronen Batchmethoden empfohlen.For production scenarios, we recommend using the batched asynchronous methods for performance and scalability. Informationen finden Sie in der Referenzdokumentation weiter unten.See the reference documentation below. Wenn Sie die Textanalyse für Gesundheit oder asynchrone Vorgänge verwenden möchten, sehen Sie sich auf GitHub die Beispiele für C#, Python oder Java an.If you want to use Text Analytics for health or Asynchronous operations, see the examples on Github for C#, Python or Java
Referenzdokumentation | Quellcode der Bibliothek | Paket | BeispieleReference documentation | Library source code | Package | Samples
VoraussetzungenPrerequisites
- Azure-Abonnement – Erstellen eines kostenlosen KontosAzure subscription - Create one for free
- Java Development Kit (JDK), Version 8 oder höherJava Development Kit (JDK) with version 8 or above
- Sobald Sie über Ihr Azure-Abonnement verfügen, erstellen Sie eine Textanalyseressource im Azure-Portal, um Ihren Schlüssel und Endpunkt zu erhalten.Once you have your Azure subscription, create a Text Analytics resource in the Azure portal to get your key and endpoint. Klicken Sie nach Abschluss der Bereitstellung auf Zu Ressource wechseln.After it deploys, click Go to resource.
- Sie benötigen den Schlüssel und den Endpunkt der von Ihnen erstellten Ressource, um Ihre Anwendung mit der Textanalyse-API zu verbinden.You will need the key and endpoint from the resource you create to connect your application to the Text Analytics API. Der Schlüssel und der Endpunkt werden weiter unten in der Schnellstartanleitung in den Code eingefügt.You'll paste your key and endpoint into the code below later in the quickstart.
- Sie können den kostenlosen Tarif (
F0
) verwenden, um den Dienst zu testen, und später für die Produktion auf einen kostenpflichtigen Tarif upgraden.You can use the free pricing tier (F0
) to try the service, and upgrade later to a paid tier for production.
- Sie benötigen eine Textanalyse-Ressource des Standard-Tarifs (S), um das Analyze-Feature nutzen zu können.To use the Analyze feature, you will need a Text Analytics resource with the standard (S) pricing tier.
EinrichtenSetting up
Hinzufügen der ClientbibliothekAdd the client library
Erstellen Sie ein Maven-Projekt in Ihrer bevorzugten IDE oder Entwicklungsumgebung.Create a Maven project in your preferred IDE or development environment. Fügen Sie anschließend der Datei pom.xml Ihres Projekts die folgende Abhängigkeit hinzu.Then add the following dependency to your project's pom.xml file. Die Implementierungssyntax für andere Buildtools ist online verfügbar.You can find the implementation syntax for other build tools online.
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-ai-textanalytics</artifactId>
<version>5.1.0-beta.3</version>
</dependency>
</dependencies>
Erstellen Sie eine Java-Datei mit dem Namen TextAnalyticsSamples.java
.Create a Java file named TextAnalyticsSamples.java
. Öffnen Sie die Datei, und fügen Sie die folgenden import
-Anweisungen hinzu:Open the file and add the following import
statements:
import com.azure.core.credential.AzureKeyCredential;
import com.azure.ai.textanalytics.models.*;
import com.azure.ai.textanalytics.TextAnalyticsClientBuilder;
import com.azure.ai.textanalytics.TextAnalyticsClient;
Fügen Sie in der Java-Datei wie weiter unten gezeigt eine neue Klasse sowie den Schlüssel und den Endpunkt Ihrer Azure-Ressource hinzu.In the java file, add a new class and add your Azure resource's key and endpoint as shown below.
Wichtig
Öffnen Sie das Azure-Portal.Go to the Azure portal. Wenn die im Abschnitt Voraussetzungen erstellte Textanalyseressource erfolgreich bereitgestellt wurde, klicken Sie unter Nächste Schritte auf die Schaltfläche Zu Ressource wechseln.If the Text Analytics resource you created in the Prerequisites section deployed successfully, click the Go to Resource button under Next Steps. Schlüssel und Endpunkt finden Sie auf der Seite mit dem Schlüssel und dem Endpunkt der Ressource unter Ressourcenverwaltung.You can find your key and endpoint in the resource's key and endpoint page, under resource management.
Denken Sie daran, den Schlüssel aus Ihrem Code zu entfernen, wenn Sie fertig sind, und ihn niemals zu veröffentlichen.Remember to remove the key from your code when you're done, and never post it publicly. In der Produktionsumgebung sollten Sie eine sichere Methode zum Speichern Ihrer Anmeldeinformationen sowie zum Zugriff darauf verwenden.For production, consider using a secure way of storing and accessing your credentials. Beispielsweise Azure Key Vault.For example, Azure key vault.
public class TextAnalyticsSamples {
private static String KEY = "<replace-with-your-text-analytics-key-here>";
private static String ENDPOINT = "<replace-with-your-text-analytics-endpoint-here>";
}
Fügen Sie der Klasse die folgende main-Methode hinzu.Add the following main method to the class. Die hier aufgerufenen Methoden definieren Sie später.You will define the methods called here later.
public static void main(String[] args) {
//You will create these methods later in the quickstart.
TextAnalyticsClient client = authenticateClient(KEY, ENDPOINT);
sentimentAnalysisWithOpinionMiningExample(client)
detectLanguageExample(client);
recognizeEntitiesExample(client);
recognizeLinkedEntitiesExample(client);
recognizePiiEntitiesExample(client);
extractKeyPhrasesExample(client);
}
ObjektmodellObject model
Der Textanalyse-Client ist ein Objekt vom Typ TextAnalyticsClient
, das sich mit Ihrem Schlüssel bei Azure authentifiziert und Funktionen bereitstellt, um Text als einzelne Zeichenfolgen oder als Batch zu akzeptieren.The Text Analytics client is a TextAnalyticsClient
object that authenticates to Azure using your key, and provides functions to accept text as single strings or as a batch. Sie können Text synchron oder asynchron an die API senden.You can send text to the API synchronously, or asynchronously. Das Antwortobjekt enthält die Analyseinformationen für die einzelnen gesendeten Dokumente.The response object will contain the analysis information for each document you send.
CodebeispieleCode examples
- Authentifizieren des ClientsAuthenticate the client
- StandpunktanalyseSentiment Analysis
- Opinion MiningOpinion mining
- SprachenerkennungLanguage detection
- Erkennung benannter EntitätenNamed Entity recognition
- EntitätsverknüpfungEntity linking
- SchlüsselbegriffserkennungKey phrase extraction
Authentifizieren des ClientsAuthenticate the client
Erstellen Sie eine Methode, um das Objekt TextAnalyticsClient
mit dem Schlüssel und dem Endpunkt für Ihre Textanalyseressource zu instanziieren.Create a method to instantiate the TextAnalyticsClient
object with the key and endpoint for your Text Analytics resource. Dieses Beispiel ist für die Versionen 3.0 und 3.1 der API gleich.This example is the same for versions 3.0 and 3.1 of the API.
static TextAnalyticsClient authenticateClient(String key, String endpoint) {
return new TextAnalyticsClientBuilder()
.credential(new AzureKeyCredential(key))
.endpoint(endpoint)
.buildClient();
}
Rufen Sie in der main()
-Methode des Programms die Authentifizierungsmethode auf, um den Client zu instanziieren.In your program's main()
method, call the authentication method to instantiate the client.
StimmungsanalyseSentiment analysis
Hinweis
In Version 3.1
:In version 3.1
:
- Die Stimmungsanalyse schließt Opinion Mining als optionales Flag ein.Sentiment Analysis includes Opinion Mining analysis which is optional flag.
- Opinion Mining enthält die Stimmung auf Ansichts- und Meinungsebene.Opinion Mining contains aspect and opinion level sentiment.
Erstellen Sie eine neue Funktion namens sentimentAnalysisExample()
, die den zuvor erstellten Client verwendet, und rufen Sie die zugehörige Funktion analyzeSentiment()
auf.Create a new function called sentimentAnalysisExample()
that takes the client that you created earlier, and call its analyzeSentiment()
function. Das zurückgegebene Objekt AnalyzeSentimentResult
enthält documentSentiment
und sentenceSentiments
(sofern erfolgreich). Andernfalls enthält es eine Fehlermeldung (errorMessage
).The returned AnalyzeSentimentResult
object will contain documentSentiment
and sentenceSentiments
if successful, or an errorMessage
if not.
static void sentimentAnalysisExample(TextAnalyticsClient client)
{
// The text that need be analyzed.
String text = "I had the best day of my life. I wish you were there with me.";
DocumentSentiment documentSentiment = client.analyzeSentiment(text);
System.out.printf(
"Recognized document sentiment: %s, positive score: %s, neutral score: %s, negative score: %s.%n",
documentSentiment.getSentiment(),
documentSentiment.getConfidenceScores().getPositive(),
documentSentiment.getConfidenceScores().getNeutral(),
documentSentiment.getConfidenceScores().getNegative());
for (SentenceSentiment sentenceSentiment : documentSentiment.getSentences()) {
System.out.printf(
"Recognized sentence sentiment: %s, positive score: %s, neutral score: %s, negative score: %s.%n",
sentenceSentiment.getSentiment(),
sentenceSentiment.getConfidenceScores().getPositive(),
sentenceSentiment.getConfidenceScores().getNeutral(),
sentenceSentiment.getConfidenceScores().getNegative());
}
}
}
OutputOutput
Recognized document sentiment: positive, positive score: 1.0, neutral score: 0.0, negative score: 0.0.
Recognized sentence sentiment: positive, positive score: 1.0, neutral score: 0.0, negative score: 0.0.
Recognized sentence sentiment: neutral, positive score: 0.21, neutral score: 0.77, negative score: 0.02.
Opinion MiningOpinion mining
Zum Durchführen von Stimmungsanalyse mit Opinion Mining erstellen Sie eine neue Funktion mit dem Namen sentimentAnalysisWithOpinionMiningExample()
, die den von Ihnen zuvor erstellten Client akzeptiert, und rufen seine analyzeSentiment()
-Funktion mit dem Einstellungsoptionsobjekt AnalyzeSentimentOptions
auf.To perform sentiment analysis with opinion mining, create a new function called sentimentAnalysisWithOpinionMiningExample()
that takes the client that you created earlier, and call its analyzeSentiment()
function with setting option object AnalyzeSentimentOptions
. Das zurückgegebene Objekt AnalyzeSentimentResult
enthält documentSentiment
und sentenceSentiments
(sofern erfolgreich). Andernfalls enthält es eine Fehlermeldung (errorMessage
).The returned AnalyzeSentimentResult
object will contain documentSentiment
and sentenceSentiments
if successful, or an errorMessage
if not.
static void sentimentAnalysisWithOpinionMiningExample(TextAnalyticsClient client)
{
// The document that needs be analyzed.
String document = "Bad atmosphere. Not close to plenty of restaurants, hotels, and transit! Staff are not friendly and helpful.";
System.out.printf("Document = %s%n", document);
AnalyzeSentimentOptions options = new AnalyzeSentimentOptions().setIncludeOpinionMining(true);
final DocumentSentiment documentSentiment = client.analyzeSentiment(document, "en", options);
SentimentConfidenceScores scores = documentSentiment.getConfidenceScores();
System.out.printf(
"Recognized document sentiment: %s, positive score: %f, neutral score: %f, negative score: %f.%n",
documentSentiment.getSentiment(), scores.getPositive(), scores.getNeutral(), scores.getNegative());
documentSentiment.getSentences().forEach(sentenceSentiment -> {
SentimentConfidenceScores sentenceScores = sentenceSentiment.getConfidenceScores();
System.out.printf("\tSentence sentiment: %s, positive score: %f, neutral score: %f, negative score: %f.%n",
sentenceSentiment.getSentiment(), sentenceScores.getPositive(), sentenceScores.getNeutral(), sentenceScores.getNegative());
sentenceSentiment.getMinedOpinions().forEach(minedOpinions -> {
AspectSentiment aspectSentiment = minedOpinions.getAspect();
System.out.printf("\t\tAspect sentiment: %s, aspect text: %s%n", aspectSentiment.getSentiment(),
aspectSentiment.getText());
SentimentConfidenceScores aspectScores = aspectSentiment.getConfidenceScores();
System.out.printf("\t\tAspect positive score: %f, negative score: %f.%n",
aspectScores.getPositive(), aspectScores.getNegative());
for (OpinionSentiment opinionSentiment : minedOpinions.getOpinions()) {
System.out.printf("\t\t\t'%s' opinion sentiment because of \"%s\". Is the opinion negated: %s.%n",
opinionSentiment.getSentiment(), opinionSentiment.getText(), opinionSentiment.isNegated());
SentimentConfidenceScores opinionScores = opinionSentiment.getConfidenceScores();
System.out.printf("\t\t\tOpinion positive score: %f, negative score: %f.%n",
opinionScores.getPositive(), opinionScores.getNegative());
}
});
});
}
OutputOutput
Document = Bad atmosphere. Not close to plenty of restaurants, hotels, and transit! Staff are not friendly and helpful.
Recognized document sentiment: negative, positive score: 0.010000, neutral score: 0.140000, negative score: 0.850000.
Sentence sentiment: negative, positive score: 0.000000, neutral score: 0.000000, negative score: 1.000000.
Aspect sentiment: negative, aspect text: atmosphere
Aspect positive score: 0.010000, negative score: 0.990000.
'negative' opinion sentiment because of "bad". Is the opinion negated: false.
Opinion positive score: 0.010000, negative score: 0.990000.
Sentence sentiment: negative, positive score: 0.020000, neutral score: 0.440000, negative score: 0.540000.
Sentence sentiment: negative, positive score: 0.000000, neutral score: 0.000000, negative score: 1.000000.
Aspect sentiment: negative, aspect text: Staff
Aspect positive score: 0.000000, negative score: 1.000000.
'negative' opinion sentiment because of "friendly". Is the opinion negated: true.
Opinion positive score: 0.000000, negative score: 1.000000.
'negative' opinion sentiment because of "helpful". Is the opinion negated: true.
Opinion positive score: 0.000000, negative score: 1.000000.
Process finished with exit code 0
SpracherkennungLanguage detection
Erstellen Sie eine neue Funktion namens detectLanguageExample()
, die den zuvor erstellten Client verwendet, und rufen Sie die zugehörige Funktion detectLanguage()
auf.Create a new function called detectLanguageExample()
that takes the client that you created earlier, and call its detectLanguage()
function. Das zurückgegebene Objekt DetectLanguageResult
enthält eine primäre erkannte Sprache und eine Liste mit anderen erkannten Sprachen (sofern erfolgreich). Andernfalls enthält es eine Fehlermeldung (errorMessage
).The returned DetectLanguageResult
object will contain a primary language detected, a list of other languages detected if successful, or an errorMessage
if not. Dieses Beispiel ist für die Versionen 3.0 und 3.1 der API gleich.This example is the same for versions 3.0 and 3.1 of the API.
Tipp
In einigen Fällen ist es unter Umständen schwierig, die Sprachen basierend auf den Eingaben eindeutig zu bestimmen.In some cases it may be hard to disambiguate languages based on the input. Mithilfe des Parameters countryHint
können Sie einen zweistelligen Ländercode angeben.You can use the countryHint
parameter to specify a 2-letter country code. Die API verwendet standardmäßig „US“ als Wert für „countryHint“. Wenn Sie dieses Verhalten entfernen möchten, können Sie diesen Parameter zurücksetzen, indem Sie seinen Wert auf eine leere Zeichenfolge (countryHint = ""
) festlegen.By default the API is using the "US" as the default countryHint, to remove this behavior you can reset this parameter by setting this value to empty string countryHint = ""
. Wenn Sie einen anderen Standardwert festlegen möchten, legen Sie die Eigenschaft TextAnalyticsClientOptions.DefaultCountryHint
fest, und übergeben Sie sie während der Initialisierung des Clients.To set a different default, set the TextAnalyticsClientOptions.DefaultCountryHint
property and pass it during the client's initialization.
static void detectLanguageExample(TextAnalyticsClient client)
{
// The text that need be analyzed.
String text = "Ce document est rédigé en Français.";
DetectedLanguage detectedLanguage = client.detectLanguage(text);
System.out.printf("Detected primary language: %s, ISO 6391 name: %s, score: %.2f.%n",
detectedLanguage.getName(),
detectedLanguage.getIso6391Name(),
detectedLanguage.getConfidenceScore());
}
OutputOutput
Detected primary language: French, ISO 6391 name: fr, score: 1.00.
Erkennung benannter Entitäten (Named Entity Recognition, NER)Named Entity recognition (NER)
Hinweis
In Version 3.1
:In version 3.1
:
- Die Erkennung benannter Entitäten enthält separate Methoden zum Erkennen personenbezogener Informationen.NER includes separate methods for detecting personal information.
- Die Entitätsverknüpfung ist eine separate Anforderung.Entity linking is a separate request than NER.
Erstellen Sie eine neue Funktion namens recognizeEntitiesExample()
, die den zuvor erstellten Client verwendet, und rufen Sie die zugehörige Funktion recognizeEntities()
auf.Create a new function called recognizeEntitiesExample()
that takes the client that you created earlier, and call its recognizeEntities()
function. Das zurückgegebene Objekt CategorizedEntityCollection
enthält eine Liste mit Elementen vom Typ CategorizedEntity
(sofern erfolgreich). Andernfalls enthält es eine Fehlermeldung (errorMessage
).The returned CategorizedEntityCollection
object will contain a list of CategorizedEntity
if successful, or an errorMessage
if not.
static void recognizeEntitiesExample(TextAnalyticsClient client)
{
// The text that need be analyzed.
String text = "I had a wonderful trip to Seattle last week.";
for (CategorizedEntity entity : client.recognizeEntities(text)) {
System.out.printf(
"Recognized entity: %s, entity category: %s, entity sub-category: %s, score: %s, offset: %s, length: %s.%n",
entity.getText(),
entity.getCategory(),
entity.getSubcategory(),
entity.getConfidenceScore(),
entity.getOffset(),
entity.getLength());
}
}
OutputOutput
Recognized entity: trip, entity category: Event, entity sub-category: null, score: 0.61, offset: 8, length: 4.
Recognized entity: Seattle, entity category: Location, entity sub-category: GPE, score: 0.82, offset: 16, length: 7.
Recognized entity: last week, entity category: DateTime, entity sub-category: DateRange, score: 0.8, offset: 24, length: 9.
EntitätsverknüpfungEntity linking
Erstellen Sie eine neue Funktion namens recognizeLinkedEntitiesExample()
, die den zuvor erstellten Client verwendet, und rufen Sie die zugehörige Funktion recognizeLinkedEntities()
auf.Create a new function called recognizeLinkedEntitiesExample()
that takes the client that you created earlier, and call its recognizeLinkedEntities()
function. Das zurückgegebene Objekt LinkedEntityCollection
enthält eine Liste mit Elementen vom Typ LinkedEntity
(sofern erfolgreich). Andernfalls enthält es eine Fehlermeldung (errorMessage
).The returned LinkedEntityCollection
object will contain a list of LinkedEntity
if successful, or an errorMessage
if not. Da verknüpfte Entitäten eindeutig identifiziert werden, werden Vorkommen der gleichen Entität unter einem Objekt vom Typ LinkedEntity
als Liste von Objekten des Typs LinkedEntityMatch
gruppiert.Since linked entities are uniquely identified, occurrences of the same entity are grouped under a LinkedEntity
object as a list of LinkedEntityMatch
objects.
static void recognizeLinkedEntitiesExample(TextAnalyticsClient client)
{
// The text that need be analyzed.
String text = "Microsoft was founded by Bill Gates and Paul Allen on April 4, 1975, " +
"to develop and sell BASIC interpreters for the Altair 8800. " +
"During his career at Microsoft, Gates held the positions of chairman, " +
"chief executive officer, president and chief software architect, " +
"while also being the largest individual shareholder until May 2014.";
System.out.printf("Linked Entities:%n");
for (LinkedEntity linkedEntity : client.recognizeLinkedEntities(text)) {
System.out.printf("Name: %s, ID: %s, URL: %s, Data Source: %s.%n",
linkedEntity.getName(),
linkedEntity.getDataSourceEntityId(),
linkedEntity.getUrl(),
linkedEntity.getDataSource());
System.out.printf("Matches:%n");
for (LinkedEntityMatch linkedEntityMatch : linkedEntity.getMatches()) {
System.out.printf("Text: %s, Score: %.2f, Offset: %s, Length: %s%n",
linkedEntityMatch.getText(),
linkedEntityMatch.getConfidenceScore(),
linkedEntityMatch.getOffset(),
linkedEntityMatch.getLength());
}
}
}
OutputOutput
Linked Entities:
Name: Microsoft, ID: Microsoft, URL: https://en.wikipedia.org/wiki/Microsoft, Data Source: Wikipedia.
Matches:
Text: Microsoft, Score: 0.55, Offset: 9, Length: 0
Text: Microsoft, Score: 0.55, Offset: 9, Length: 150
Name: Bill Gates, ID: Bill Gates, URL: https://en.wikipedia.org/wiki/Bill_Gates, Data Source: Wikipedia.
Matches:
Text: Bill Gates, Score: 0.63, Offset: 10, Length: 25
Text: Gates, Score: 0.63, Offset: 5, Length: 161
Name: Paul Allen, ID: Paul Allen, URL: https://en.wikipedia.org/wiki/Paul_Allen, Data Source: Wikipedia.
Matches:
Text: Paul Allen, Score: 0.60, Offset: 10, Length: 40
Name: April 4, ID: April 4, URL: https://en.wikipedia.org/wiki/April_4, Data Source: Wikipedia.
Matches:
Text: April 4, Score: 0.32, Offset: 7, Length: 54
Name: BASIC, ID: BASIC, URL: https://en.wikipedia.org/wiki/BASIC, Data Source: Wikipedia.
Matches:
Text: BASIC, Score: 0.33, Offset: 5, Length: 89
Name: Altair 8800, ID: Altair 8800, URL: https://en.wikipedia.org/wiki/Altair_8800, Data Source: Wikipedia.
Matches:
Text: Altair 8800, Score: 0.88, Offset: 11, Length: 116
Erkennung von personenbezogenen InformationenPersonally Identifiable Information Recognition
Erstellen Sie eine neue Funktion namens recognizePiiEntitiesExample()
, die den zuvor erstellten Client verwendet, und rufen Sie die zugehörige Funktion recognizePiiEntities()
auf.Create a new function called recognizePiiEntitiesExample()
that takes the client that you created earlier, and call its recognizePiiEntities()
function. Das zurückgegebene Objekt PiiEntityCollection
enthält eine Liste mit Elementen vom Typ PiiEntity
(sofern erfolgreich). Andernfalls enthält es eine Fehlermeldung (errorMessage
).The returned PiiEntityCollection
object will contain a list of PiiEntity
if successful, or an errorMessage
if not. Es enthält außerdem den bearbeiteten Text, der aus dem Eingabetext besteht, in dem alle identifizierbaren Entitäten durch *****
ersetzt wurden.It will also contain the redacted text, which consists of the input text with all identifiable entities replaced with *****
.
static void recognizePiiEntitiesExample(TextAnalyticsClient client)
{
// The text that need be analyzed.
String document = "My SSN is 859-98-0987";
PiiEntityCollection piiEntityCollection = client.recognizePiiEntities(document);
System.out.printf("Redacted Text: %s%n", piiEntityCollection.getRedactedText());
piiEntityCollection.forEach(entity -> System.out.printf(
"Recognized Personally Identifiable Information entity: %s, entity category: %s, entity subcategory: %s,"
+ " confidence score: %f.%n",
entity.getText(), entity.getCategory(), entity.getSubcategory(), entity.getConfidenceScore()));
}
OutputOutput
Redacted Text: My SSN is ***********
Recognized Personally Identifiable Information entity: 859-98-0987, entity category: U.S. Social Security Number (SSN), entity subcategory: null, confidence score: 0.650000.
SchlüsselwortextraktionKey phrase extraction
Erstellen Sie eine neue Funktion namens extractKeyPhrasesExample()
, die den zuvor erstellten Client verwendet, und rufen Sie die zugehörige Funktion extractKeyPhrases()
auf.Create a new function called extractKeyPhrasesExample()
that takes the client that you created earlier, and call its extractKeyPhrases()
function. Das zurückgegebene Objekt ExtractKeyPhraseResult
enthält eine Liste mit Schlüsselbegriffen (sofern erfolgreich). Andernfalls enthält es eine Fehlermeldung (errorMessage
).The returned ExtractKeyPhraseResult
object will contain a list of key phrases if successful, or an errorMessage
if not. Dieses Beispiel ist für die Versionen 3.0 und 3.1 der API gleich.This example is the same for version 3.0 and 3.1 of the API.
static void extractKeyPhrasesExample(TextAnalyticsClient client)
{
// The text that need be analyzed.
String text = "My cat might need to see a veterinarian.";
System.out.printf("Recognized phrases: %n");
for (String keyPhrase : client.extractKeyPhrases(text)) {
System.out.printf("%s%n", keyPhrase);
}
}
OutputOutput
Recognized phrases:
cat
veterinarian
Asynchrones Verwenden der API mit dem Analyze-VorgangUse the API asynchronously with the Analyze operation
Achtung
Wenn Sie den Analysevorgang verwenden möchten, muss es sich bei Ihrer Azure-Ressource um eine Ressource im Standard-Tarif (S) handeln.To use the Analyze operation, make sure your Azure resource is using the S standard pricing tier.
Erstellen Sie die neue Funktion analyzeOperationExample()
, die die Funktion beginAnalyzeTasks()
aufruft.Create a new function called analyzeOperationExample()
, which calls the beginAnalyzeTasks()
function. Daraus resultiert ein zeitintensiver Vorgang, aus dem Ergebnisse abgerufen werden.The result will be a long running operation which will be polled for results.
static void analyzeOperationExample(TextAnalyticsClient client)
{
List<TextDocumentInput> documents = Arrays.asList(
new TextDocumentInput("0", "Microsoft was founded by Bill Gates and Paul Allen.")
);
SyncPoller<TextAnalyticsOperationResult, PagedIterable<AnalyzeTasksResult>> syncPoller =
client.beginAnalyzeTasks(documents,
new AnalyzeTasksOptions().setDisplayName("{tasks_display_name}")
.setEntitiesRecognitionTasks(Arrays.asList(new EntitiesTask())),
Context.NONE);
syncPoller.waitForCompletion();
PagedIterable<AnalyzeTasksResult> result = syncPoller.getFinalResult();
result.forEach(analyzeJobState -> {
System.out.printf("Job Display Name: %s, Job ID: %s.%n", analyzeJobState.getDisplayName(),
analyzeJobState.getJobId());
System.out.printf("Total tasks: %s, completed: %s, failed: %s, in progress: %s.%n",
analyzeJobState.getTotal(), analyzeJobState.getCompleted(), analyzeJobState.getFailed(),
analyzeJobState.getInProgress());
List<RecognizeEntitiesResultCollection> entityRecognitionTasks =
analyzeJobState.getEntityRecognitionTasks();
if (entityRecognitionTasks != null) {
entityRecognitionTasks.forEach(taskResult -> {
// Recognized entities for each of documents from a batch of documents
AtomicInteger counter = new AtomicInteger();
for (RecognizeEntitiesResult entitiesResult : taskResult) {
System.out.printf("%n%s%n", documents.get(counter.getAndIncrement()));
if (entitiesResult.isError()) {
// Erroneous document
System.out.printf("Cannot recognize entities. Error: %s%n",
entitiesResult.getError().getMessage());
} else {
// Valid document
entitiesResult.getEntities().forEach(entity -> System.out.printf(
"Recognized entity: %s, entity category: %s, entity subcategory: %s, "
+ "confidence score: %f.%n",
entity.getText(), entity.getCategory(), entity.getSubcategory(),
entity.getConfidenceScore()));
}
}
});
}
});
}
Nachdem Sie das Beispiel zu Ihrer Anwendung hinzugefügt haben, können Sie es in der Methode main()
aufrufen.After you add this example to your application, call it in your main()
method.
analyzeOperationExample(client);
AusgabeOutput
Job Display Name: {tasks_display_name}, Job ID: 84fd4db4-0734-47ec-b263-ac5451e83f2a_637432416000000000.
Total tasks: 1, completed: 1, failed: 0, in progress: 0.
Text = Microsoft was founded by Bill Gates and Paul Allen., Id = 0, Language = null
Recognized entity: Microsoft, entity category: Organization, entity subcategory: null, confidence score: 0.960000.
Recognized entity: Bill Gates, entity category: Person, entity subcategory: null, confidence score: 1.000000.
Recognized entity: Paul Allen, entity category: Person, entity subcategory: null, confidence score: 0.990000.
Sie können den Analyze-Vorgang auch verwenden, um personenbezogene Informationen zu erkennen und Schlüsselbegriffe zu extrahieren.You can also use the Analyze operation to detect PII and key phrase extraction. Das Analyze-Beispiel finden Sie auf GitHub.See the Analyze sample on GitHub.
Wichtig
- Die neueste stabile Version der Textanalyse-API ist
3.0
.The latest stable version of the Text Analytics API is3.0
.- Befolgen Sie nur die Anweisungen für die von Ihnen verwendete Version.Be sure to only follow the instructions for the version you are using.
- Im Code dieses Artikels werden der Einfachheit halber synchrone Methoden und ein ungeschützter Anmeldeinformationsspeicher verwendet.The code in this article uses synchronous methods and un-secured credentials storage for simplicity reasons. Für Produktionsszenarien wird aus Leistungs- und Skalierbarkeitsgründen die Verwendung der asynchronen Batchmethoden empfohlen.For production scenarios, we recommend using the batched asynchronous methods for performance and scalability. Informationen finden Sie in der Referenzdokumentation weiter unten.See the reference documentation below.
- Diese Version der Textanalyse-Clientbibliothek können Sie auch in Ihrem Browser ausführen.You can also run this version of the Text Analytics client library in your browser.
v3-Referenzdokumentation | Quellcode der v3-Bibliothek | v3-Paket (NPM) | v3-Beispielev3 Reference documentation | v3 Library source code | v3 Package (NPM) | v3 Samples
VoraussetzungenPrerequisites
- Azure-Abonnement – Erstellen eines kostenlosen KontosAzure subscription - Create one for free
- Die aktuelle Version von Node.js.The current version of Node.js.
- Sobald Sie über Ihr Azure-Abonnement verfügen, erstellen Sie eine Textanalyseressource im Azure-Portal, um Ihren Schlüssel und Endpunkt zu erhalten.Once you have your Azure subscription, create a Text Analytics resource in the Azure portal to get your key and endpoint. Klicken Sie nach Abschluss der Bereitstellung auf Zu Ressource wechseln.After it deploys, click Go to resource.
- Sie benötigen den Schlüssel und den Endpunkt der von Ihnen erstellten Ressource, um Ihre Anwendung mit der Textanalyse-API zu verbinden.You will need the key and endpoint from the resource you create to connect your application to the Text Analytics API. Der Schlüssel und der Endpunkt werden weiter unten in der Schnellstartanleitung in den Code eingefügt.You'll paste your key and endpoint into the code below later in the quickstart.
- Sie können den kostenlosen Tarif (
F0
) verwenden, um den Dienst zu testen, und später für die Produktion auf einen kostenpflichtigen Tarif upgraden.You can use the free pricing tier (F0
) to try the service, and upgrade later to a paid tier for production.
- Sie benötigen eine Textanalyse-Ressource des Standard-Tarifs (S), um das Analyze-Feature nutzen zu können.To use the Analyze feature, you will need a Text Analytics resource with the standard (S) pricing tier.
EinrichtenSetting up
Erstellen einer neuen Node.js-AnwendungCreate a new Node.js application
Erstellen Sie in einem Konsolenfenster (etwa cmd, PowerShell oder Bash) ein neues Verzeichnis für Ihre App, und rufen Sie es auf.In a console window (such as cmd, PowerShell, or Bash), create a new directory for your app, and navigate to it.
mkdir myapp
cd myapp
Führen Sie den Befehl npm init
aus, um eine Knotenanwendung mit der Datei package.json
zu erstellen.Run the npm init
command to create a node application with a package.json
file.
npm init
Installieren der ClientbibliothekInstall the client library
Installieren Sie die NPM-Pakete vom Typ @azure/ai-text-analytics
:Install the @azure/ai-text-analytics
NPM packages:
npm install --save @azure/ai-text-analytics@5.1.0-beta.3
Tipp
Möchten Sie sich sofort die gesamte Codedatei für die Schnellstartanleitung ansehen?Want to view the whole quickstart code file at once? Die Datei steht auf GitHub zur Verfügung. Dort finden Sie die Codebeispiele aus dieser Schnellstartanleitung.You can find it on GitHub, which contains the code examples in this quickstart.
Die Datei package.json
Ihrer App wird mit den Abhängigkeiten aktualisiert.Your app's package.json
file will be updated with the dependencies.
Erstellen Sie eine Datei namens index.js
, und fügen Sie Folgendes hinzu:Create a file named index.js
and add the following:
"use strict";
const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");
Erstellen Sie Variablen für den Azure-Endpunkt und -Schlüssel Ihrer Ressource.Create variables for your resource's Azure endpoint and key.
Wichtig
Öffnen Sie das Azure-Portal.Go to the Azure portal. Wenn die im Abschnitt Voraussetzungen erstellte Textanalyseressource erfolgreich bereitgestellt wurde, klicken Sie unter Nächste Schritte auf die Schaltfläche Zu Ressource wechseln.If the Text Analytics resource you created in the Prerequisites section deployed successfully, click the Go to Resource button under Next Steps. Schlüssel und Endpunkt finden Sie auf der Seite mit dem Schlüssel und dem Endpunkt der Ressource unter Ressourcenverwaltung.You can find your key and endpoint in the resource's key and endpoint page, under resource management.
Denken Sie daran, den Schlüssel aus Ihrem Code zu entfernen, wenn Sie fertig sind, und ihn niemals zu veröffentlichen.Remember to remove the key from your code when you're done, and never post it publicly. In der Produktionsumgebung sollten Sie eine sichere Methode zum Speichern Ihrer Anmeldeinformationen sowie zum Zugriff darauf verwenden.For production, consider using a secure way of storing and accessing your credentials. Beispielsweise Azure Key Vault.For example, Azure key vault.
const key = '<paste-your-text-analytics-key-here>';
const endpoint = '<paste-your-text-analytics-endpoint-here>';
ObjektmodellObject model
Der Textanalyseclient ist ein Objekt vom Typ TextAnalyticsClient
, das sich bei Azure mit Ihrem Schlüssel authentifiziert.The Text Analytics client is a TextAnalyticsClient
object that authenticates to Azure using your key. Der Client verfügt über verschiedene Methoden zum Analysieren von Text als einzelne Zeichenfolge oder als Batch.The client provides several methods for analyzing text, as a single string, or a batch.
Text wird als documents
-Liste an die API gesendet. Hierbei handelt es sich um dictionary
-Objekte, die je nach verwendeter Methode eine Kombination aus den Attributen id
, text
und language
enthalten.Text is sent to the API as a list of documents
, which are dictionary
objects containing a combination of id
, text
, and language
attributes depending on the method used. Das text
-Attribut speichert den zu analysierenden Text in der Ausgangssprache (language
), und id
kann ein beliebiger Wert sein.The text
attribute stores the text to be analyzed in the origin language
, and the id
can be any value.
Das Antwortobjekt ist eine Liste mit den Analyseinformationen für jedes Dokument.The response object is a list containing the analysis information for each document.
CodebeispieleCode examples
- ClientauthentifizierungClient Authentication
- StandpunktanalyseSentiment Analysis
- Opinion MiningOpinion mining
- SprachenerkennungLanguage detection
- Erkennung benannter EntitätenNamed Entity recognition
- EntitätsverknüpfungEntity linking
- Personenbezogene InformationenPersonally Identifiable Information
- SchlüsselbegriffserkennungKey phrase extraction
ClientauthentifizierungClient Authentication
Erstellen Sie ein neues Objekt vom Typ TextAnalyticsClient
mit Ihrem Schlüssel und Ihrem Endpunkt als Parameter.Create a new TextAnalyticsClient
object with your key and endpoint as parameters.
const textAnalyticsClient = new TextAnalyticsClient(endpoint, new AzureKeyCredential(key));
StimmungsanalyseSentiment analysis
Erstellen Sie ein Zeichenfolgenarray, das das zu analysierende Dokument enthält.Create an array of strings containing the document you want to analyze. Rufen Sie die Methode analyzeSentiment()
des Clients auf, und rufen Sie das zurückgegebene Objekt SentimentBatchResult
ab.Call the client's analyzeSentiment()
method and get the returned SentimentBatchResult
object. Durchlaufen Sie die Liste mit den Ergebnissen, und geben Sie die ID des jeweiligen Dokuments sowie die Stimmung auf Dokumentebene zusammen mit Zuverlässigkeitsbewertungen aus.Iterate through the list of results, and print each document's ID, document level sentiment with confidence scores. Das Ergebnis enthält die Stimmung auf Satzebene sowie Offsets, Länge und Zuverlässigkeitsbewertungen für jedes Dokument.For each document, result contains sentence level sentiment along with offsets, length, and confidence scores.
async function sentimentAnalysis(client){
const sentimentInput = [
"I had the best day of my life. I wish you were there with me."
];
const sentimentResult = await client.analyzeSentiment(sentimentInput);
sentimentResult.forEach(document => {
console.log(`ID: ${document.id}`);
console.log(`\tDocument Sentiment: ${document.sentiment}`);
console.log(`\tDocument Scores:`);
console.log(`\t\tPositive: ${document.confidenceScores.positive.toFixed(2)} \tNegative: ${document.confidenceScores.negative.toFixed(2)} \tNeutral: ${document.confidenceScores.neutral.toFixed(2)}`);
console.log(`\tSentences Sentiment(${document.sentences.length}):`);
document.sentences.forEach(sentence => {
console.log(`\t\tSentence sentiment: ${sentence.sentiment}`)
console.log(`\t\tSentences Scores:`);
console.log(`\t\tPositive: ${sentence.confidenceScores.positive.toFixed(2)} \tNegative: ${sentence.confidenceScores.negative.toFixed(2)} \tNeutral: ${sentence.confidenceScores.neutral.toFixed(2)}`);
});
});
}
sentimentAnalysis(textAnalyticsClient)
Führen Sie in Ihrem Konsolenfenster Ihren Code mit node index.js
aus.Run your code with node index.js
in your console window.
OutputOutput
ID: 0
Document Sentiment: positive
Document Scores:
Positive: 1.00 Negative: 0.00 Neutral: 0.00
Sentences Sentiment(2):
Sentence sentiment: positive
Sentences Scores:
Positive: 1.00 Negative: 0.00 Neutral: 0.00
Sentence sentiment: neutral
Sentences Scores:
Positive: 0.21 Negative: 0.02 Neutral: 0.77
Opinion MiningOpinion mining
Zum Durchführen von Stimmungsanalyse mit Opinion Mining erstellen Sie ein Array aus Zeichenfolgen, die das zu analysierende Dokument enthalten.In order to do sentiment analysis with opinion mining, create an array of strings containing the document you want to analyze. Rufen Sie die Methode analyzeSentiment()
des Clients mit hinzugefügtem Optionsflag includeOpinionMining: true
auf, und rufen Sie das zurückgegebene SentimentBatchResult
-Objekt ab.Call the client's analyzeSentiment()
method with adding option flag includeOpinionMining: true
and get the returned SentimentBatchResult
object. Durchlaufen Sie die Liste mit den Ergebnissen, und geben Sie die ID des jeweiligen Dokuments sowie die Stimmung auf Dokumentebene zusammen mit Zuverlässigkeitsbewertungen aus.Iterate through the list of results, and print each document's ID, document level sentiment with confidence scores. Für jedes Dokument enthält das Ergebnis nicht nur die Stimmung auf Satzebene wie oben sondern auch die Stimmung auf Ansichts- und Meinungsebene.For each document, result contains not only sentence level sentiment as above, but also aspect and opinion level sentiment.
async function sentimentAnalysisWithOpinionMining(client){
const sentimentInput = [
{
text: "The food and service were unacceptable, but the concierge were nice",
id: "0",
language: "en"
}
];
const sentimentResult = await client.analyzeSentiment(sentimentInput, { includeOpinionMining: true });
sentimentResult.forEach(document => {
console.log(`ID: ${document.id}`);
console.log(`\tDocument Sentiment: ${document.sentiment}`);
console.log(`\tDocument Scores:`);
console.log(`\t\tPositive: ${document.confidenceScores.positive.toFixed(2)} \tNegative: ${document.confidenceScores.negative.toFixed(2)} \tNeutral: ${document.confidenceScores.neutral.toFixed(2)}`);
console.log(`\tSentences Sentiment(${document.sentences.length}):`);
document.sentences.forEach(sentence => {
console.log(`\t\tSentence sentiment: ${sentence.sentiment}`)
console.log(`\t\tSentences Scores:`);
console.log(`\t\tPositive: ${sentence.confidenceScores.positive.toFixed(2)} \tNegative: ${sentence.confidenceScores.negative.toFixed(2)} \tNeutral: ${sentence.confidenceScores.neutral.toFixed(2)}`);
console.log("\tMined opinions");
for (const { aspect, opinions } of sentence.minedOpinions) {
console.log(`\t\tAspect text: ${aspect.text}`);
console.log(`\t\tAspect sentiment: ${aspect.sentiment}`);
console.log(`\t\tAspect Positive: ${aspect.confidenceScores.positive.toFixed(2)} \tNegative: ${aspect.confidenceScores.negative.toFixed(2)}`);
console.log("\t\tAspect opinions:");
for (const { text, sentiment, confidenceScores } of opinions) {
console.log(`\t\tOpinion text: ${text}`);
console.log(`\t\tOpinion sentiment: ${sentiment}`);
console.log(`\t\tOpinion Positive: ${confidenceScores.positive.toFixed(2)} \tNegative: ${confidenceScores.negative.toFixed(2)}`);
}
}
});
});
}
sentimentAnalysisWithOpinionMining(textAnalyticsClient)
Führen Sie in Ihrem Konsolenfenster Ihren Code mit node index.js
aus.Run your code with node index.js
in your console window.
OutputOutput
ID: 0
Document Sentiment: positive
Document Scores:
Positive: 0.84 Negative: 0.16 Neutral: 0.00
Sentences Sentiment(1):
Sentence sentiment: positive
Sentences Scores:
Positive: 0.84 Negative: 0.16 Neutral: 0.00
Mined opinions
Aspect text: food
Aspect sentiment: negative
Aspect Positive: 0.01 Negative: 0.99
Aspect opinions:
Opinion text: unacceptable
Opinion sentiment: negative
Opinion Positive: 0.01 Negative: 0.99
Aspect text: service
Aspect sentiment: negative
Aspect Positive: 0.01 Negative: 0.99
Aspect opinions:
Opinion text: unacceptable
Opinion sentiment: negative
Opinion Positive: 0.01 Negative: 0.99
Aspect text: concierge
Aspect sentiment: positive
Aspect Positive: 1.00 Negative: 0.00
Aspect opinions:
Opinion text: nice
Opinion sentiment: positive
Opinion Positive: 1.00 Negative: 0.00
SpracherkennungLanguage detection
Erstellen Sie ein Zeichenfolgenarray, das das zu analysierende Dokument enthält.Create an array of strings containing the document you want to analyze. Rufen Sie die Methode detectLanguage()
des Clients auf, und rufen Sie das zurückgegebene Ergebnis (DetectLanguageResultCollection
) ab.Call the client's detectLanguage()
method and get the returned DetectLanguageResultCollection
. Durchlaufen Sie dann die Ergebnisse, und geben Sie für jedes Dokument die ID sowie die entsprechende primäre Sprache aus.Then iterate through the results, and print each document's ID with respective primary language.
async function languageDetection(client) {
const languageInputArray = [
"Ce document est rédigé en Français."
];
const languageResult = await client.detectLanguage(languageInputArray);
languageResult.forEach(document => {
console.log(`ID: ${document.id}`);
console.log(`\tPrimary Language ${document.primaryLanguage.name}`)
});
}
languageDetection(textAnalyticsClient);
Führen Sie in Ihrem Konsolenfenster Ihren Code mit node index.js
aus.Run your code with node index.js
in your console window.
OutputOutput
ID: 0
Primary Language French
Erkennung benannter Entitäten (NER)Named Entity Recognition (NER)
Hinweis
In Version 3.1
:In version 3.1
:
- Die Entitätsverknüpfung ist eine separate Anforderung.Entity linking is a separate request than NER.
Erstellen Sie ein Zeichenfolgenarray, das das zu analysierende Dokument enthält.Create an array of strings containing the document you want to analyze. Rufen Sie die Methode recognizeEntities()
des Clients auf, und rufen Sie das Objekt RecognizeEntitiesResult
ab.Call the client's recognizeEntities()
method and get the RecognizeEntitiesResult
object. Durchlaufen Sie die Liste mit den Ergebnissen, und geben Entitätsname, Typ, Untertyp, Offset, Länge und Bewertung aus.Iterate through the list of results, and print the entity name, type, subtype, offset, length, and score.
async function entityRecognition(client){
const entityInputs = [
"Microsoft was founded by Bill Gates and Paul Allen on April 4, 1975, to develop and sell BASIC interpreters for the Altair 8800",
"La sede principal de Microsoft se encuentra en la ciudad de Redmond, a 21 kilómetros de Seattle."
];
const entityResults = await client.recognizeEntities(entityInputs);
entityResults.forEach(document => {
console.log(`Document ID: ${document.id}`);
document.entities.forEach(entity => {
console.log(`\tName: ${entity.text} \tCategory: ${entity.category} \tSubcategory: ${entity.subCategory ? entity.subCategory : "N/A"}`);
console.log(`\tScore: ${entity.confidenceScore}`);
});
});
}
entityRecognition(textAnalyticsClient);
Führen Sie in Ihrem Konsolenfenster Ihren Code mit node index.js
aus.Run your code with node index.js
in your console window.
OutputOutput
Document ID: 0
Name: Microsoft Category: Organization Subcategory: N/A
Score: 0.29
Name: Bill Gates Category: Person Subcategory: N/A
Score: 0.78
Name: Paul Allen Category: Person Subcategory: N/A
Score: 0.82
Name: April 4, 1975 Category: DateTime Subcategory: Date
Score: 0.8
Name: 8800 Category: Quantity Subcategory: Number
Score: 0.8
Document ID: 1
Name: 21 Category: Quantity Subcategory: Number
Score: 0.8
Name: Seattle Category: Location Subcategory: GPE
Score: 0.25
EntitätsverknüpfungEntity Linking
Erstellen Sie ein Zeichenfolgenarray, das das zu analysierende Dokument enthält.Create an array of strings containing the document you want to analyze. Rufen Sie die Methode recognizeLinkedEntities()
des Clients auf, und rufen Sie das Objekt RecognizeLinkedEntitiesResult
ab.Call the client's recognizeLinkedEntities()
method and get the RecognizeLinkedEntitiesResult
object. Durchlaufen Sie die Liste mit den Ergebnissen, und geben Entitätsname, ID, Datenquelle, URL und Treffer aus.Iterate through the list of results, and print the entity name, ID, data source, url, and matches. Jedes Objekt im Array matches
enthält Offset, Länge und Bewertung für den Treffer.Every object in matches
array will contain offset, length, and score for that match.
async function linkedEntityRecognition(client){
const linkedEntityInput = [
"Microsoft was founded by Bill Gates and Paul Allen on April 4, 1975, to develop and sell BASIC interpreters for the Altair 8800. During his career at Microsoft, Gates held the positions of chairman, chief executive officer, president and chief software architect, while also being the largest individual shareholder until May 2014."
];
const entityResults = await client.recognizeLinkedEntities(linkedEntityInput);
entityResults.forEach(document => {
console.log(`Document ID: ${document.id}`);
document.entities.forEach(entity => {
console.log(`\tName: ${entity.name} \tID: ${entity.dataSourceEntityId} \tURL: ${entity.url} \tData Source: ${entity.dataSource}`);
console.log(`\tMatches:`)
entity.matches.forEach(match => {
console.log(`\t\tText: ${match.text} \tScore: ${match.confidenceScore.toFixed(2)}`);
})
});
});
}
linkedEntityRecognition(textAnalyticsClient);
Führen Sie in Ihrem Konsolenfenster Ihren Code mit node index.js
aus.Run your code with node index.js
in your console window.
OutputOutput
Document ID: 0
Name: Altair 8800 ID: Altair 8800 URL: https://en.wikipedia.org/wiki/Altair_8800 Data Source: Wikipedia
Matches:
Text: Altair 8800 Score: 0.88
Name: Bill Gates ID: Bill Gates URL: https://en.wikipedia.org/wiki/Bill_Gates Data Source: Wikipedia
Matches:
Text: Bill Gates Score: 0.63
Text: Gates Score: 0.63
Name: Paul Allen ID: Paul Allen URL: https://en.wikipedia.org/wiki/Paul_Allen Data Source: Wikipedia
Matches:
Text: Paul Allen Score: 0.60
Name: Microsoft ID: Microsoft URL: https://en.wikipedia.org/wiki/Microsoft Data Source: Wikipedia
Matches:
Text: Microsoft Score: 0.55
Text: Microsoft Score: 0.55
Name: April 4 ID: April 4 URL: https://en.wikipedia.org/wiki/April_4 Data Source: Wikipedia
Matches:
Text: April 4 Score: 0.32
Name: BASIC ID: BASIC URL: https://en.wikipedia.org/wiki/BASIC Data Source: Wikipedia
Matches:
Text: BASIC Score: 0.33
Erkennung von personenbezogenen Informationen (Personally Identifying Information, PII)Personally Identifying Information (PII) Recognition
Erstellen Sie ein Zeichenfolgenarray, das das zu analysierende Dokument enthält.Create an array of strings containing the document you want to analyze. Rufen Sie die Methode recognizePiiEntities()
des Clients auf, und rufen Sie das Objekt RecognizePIIEntitiesResult
ab.Call the client's recognizePiiEntities()
method and get the RecognizePIIEntitiesResult
object. Durchlaufen Sie die Liste mit den Ergebnissen, und geben Entitätsname, Typ und Bewertung aus.Iterate through the list of results, and print the entity name, type, and score.
async function piiRecognition(client) {
const documents = [
"The employee's phone number is (555) 555-5555."
];
const results = await client.recognizePiiEntities(documents, "en");
for (const result of results) {
if (result.error === undefined) {
console.log("Redacted Text: ", result.redactedText);
console.log(" -- Recognized PII entities for input", result.id, "--");
for (const entity of result.entities) {
console.log(entity.text, ":", entity.category, "(Score:", entity.confidenceScore, ")");
}
} else {
console.error("Encountered an error:", result.error);
}
}
}
piiRecognition(textAnalyticsClient)
Führen Sie in Ihrem Konsolenfenster Ihren Code mit node index.js
aus.Run your code with node index.js
in your console window.
OutputOutput
Redacted Text: The employee's phone number is **************.
-- Recognized PII entities for input 0 --
(555) 555-5555 : Phone Number (Score: 0.8 )
SchlüsselwortextraktionKey phrase extraction
Erstellen Sie ein Zeichenfolgenarray, das das zu analysierende Dokument enthält.Create an array of strings containing the document you want to analyze. Rufen Sie die Methode extractKeyPhrases()
des Clients auf, und rufen Sie das zurückgegebene Objekt ExtractKeyPhrasesResult
ab.Call the client's extractKeyPhrases()
method and get the returned ExtractKeyPhrasesResult
object. Durchlaufen Sie die Ergebnisse, und geben Sie die ID und alle erkannten Schlüsselbegriffe aus.Iterate through the results and print each document's ID, and any detected key phrases.
async function keyPhraseExtraction(client){
const keyPhrasesInput = [
"My cat might need to see a veterinarian.",
];
const keyPhraseResult = await client.extractKeyPhrases(keyPhrasesInput);
keyPhraseResult.forEach(document => {
console.log(`ID: ${document.id}`);
console.log(`\tDocument Key Phrases: ${document.keyPhrases}`);
});
}
keyPhraseExtraction(textAnalyticsClient);
Führen Sie in Ihrem Konsolenfenster Ihren Code mit node index.js
aus.Run your code with node index.js
in your console window.
OutputOutput
ID: 0
Document Key Phrases: cat,veterinarian
Asynchrones Verwenden der API mit dem Analyze-VorgangUse the API asynchronously with the Analyze operation
Achtung
Sie benötigen eine Textanalyse-Ressource des Standard-Tarifs (S), um Analyze-Vorgänge durchführen zu können.To use Analyze operations, you must use a Text Analytics resource with the standard (S) pricing tier.
Erstellen Sie die neue Funktion analyze_example()
, die die Funktion beginAnalyze()
aufruft.Create a new function called analyze_example()
, which calls the beginAnalyze()
function. Daraus resultiert ein zeitintensiver Vorgang, aus dem Ergebnisse abgerufen werden.The result will be a long running operation which will be polled for results.
const documents = [
"Microsoft was founded by Bill Gates and Paul Allen.",
];
async function analyze_example(client) {
console.log("== Analyze Sample ==");
const tasks = {
entityRecognitionTasks: [{ modelVersion: "latest" }]
};
const poller = await client.beginAnalyze(documents, tasks);
const resultPages = await poller.pollUntilDone();
for await (const page of resultPages) {
const entitiesResults = page.entitiesRecognitionResults![0];
for (const doc of entitiesResults) {
console.log(`- Document ${doc.id}`);
if (!doc.error) {
console.log("\tEntities:");
for (const entity of doc.entities) {
console.log(`\t- Entity ${entity.text} of type ${entity.category}`);
}
} else {
console.error(" Error:", doc.error);
}
}
}
}
analyze_example(textAnalyticsClient);
AusgabeOutput
== Analyze Sample ==
- Document 0
Entities:
- Entity Microsoft of type Organization
- Entity Bill Gates of type Person
- Entity Paul Allen of type Person
Sie können den Analyze-Vorgang auch verwenden, um personenbezogene Informationen zu erkennen und Schlüsselbegriffe zu extrahieren.You can also use the Analyze operation to detect PII and key phrase extraction. Die Analyze-Beispiele für JavaScript und TypeScript finden Sie auf GitHub.See the Analyze samples for JavaScript and TypeScript on GitHub.
Ausführen der AnwendungRun the application
Führen Sie die Anwendung mit dem Befehl node
für die Schnellstartdatei aus.Run the application with the node
command on your quickstart file.
node index.js
Wichtig
- Die neueste stabile Version der Textanalyse-API ist
3.0
.The latest stable version of the Text Analytics API is3.0
.- Befolgen Sie nur die Anweisungen für die von Ihnen verwendete Version.Be sure to only follow the instructions for the version you are using.
- Im Code dieses Artikels werden der Einfachheit halber synchrone Methoden und ein ungeschützter Anmeldeinformationsspeicher verwendet.The code in this article uses synchronous methods and un-secured credentials storage for simplicity reasons. Für Produktionsszenarien wird aus Leistungs- und Skalierbarkeitsgründen die Verwendung der asynchronen Batchmethoden empfohlen.For production scenarios, we recommend using the batched asynchronous methods for performance and scalability. Informationen finden Sie in der Referenzdokumentation weiter unten.See the reference documentation below. Wenn Sie die Textanalyse für Gesundheit oder asynchrone Vorgänge verwenden möchten, sehen Sie sich auf GitHub die Beispiele für C#, Python oder Java an.If you want to use Text Analytics for health or Asynchronous operations, see the examples on Github for C#, Python or Java
v3.1-Referenzdokumentation | v3.1-Bibliotheksquellcode | v3.1-Paket (PiPy) | v3.1-Beispielev3.1 Reference documentation | v3.1 Library source code | v3.1 Package (PiPy) | v3.1 Samples
VoraussetzungenPrerequisites
- Azure-Abonnement – Erstellen eines kostenlosen KontosAzure subscription - Create one for free
- Python 3.xPython 3.x
- Sobald Sie über Ihr Azure-Abonnement verfügen, erstellen Sie eine Textanalyseressource im Azure-Portal, um Ihren Schlüssel und Endpunkt zu erhalten.Once you have your Azure subscription, create a Text Analytics resource in the Azure portal to get your key and endpoint. Klicken Sie nach Abschluss der Bereitstellung auf Zu Ressource wechseln.After it deploys, click Go to resource.
- Sie benötigen den Schlüssel und den Endpunkt der von Ihnen erstellten Ressource, um Ihre Anwendung mit der Textanalyse-API zu verbinden.You will need the key and endpoint from the resource you create to connect your application to the Text Analytics API. Der Schlüssel und der Endpunkt werden weiter unten in der Schnellstartanleitung in den Code eingefügt.You'll paste your key and endpoint into the code below later in the quickstart.
- Sie können den kostenlosen Tarif (
F0
) verwenden, um den Dienst zu testen, und später für die Produktion auf einen kostenpflichtigen Tarif upgraden.You can use the free pricing tier (F0
) to try the service, and upgrade later to a paid tier for production.
- Sie benötigen eine Textanalyse-Ressource des Standard-Tarifs (S), um das Analyze-Feature nutzen zu können.To use the Analyze feature, you will need a Text Analytics resource with the standard (S) pricing tier.
EinrichtenSetting up
Installieren der ClientbibliothekInstall the client library
Nach der Installation von Python, können Sie die Clientbibliothek mit Folgendem installieren:After installing Python, you can install the client library with:
pip install azure-ai-textanalytics --pre
Tipp
Möchten Sie sich sofort die gesamte Codedatei für die Schnellstartanleitung ansehen?Want to view the whole quickstart code file at once? Die Datei steht auf GitHub zur Verfügung. Dort finden Sie die Codebeispiele aus dieser Schnellstartanleitung.You can find it on GitHub, which contains the code examples in this quickstart.
Erstellen einer neuen Python-AnwendungCreate a new python application
Erstellen Sie eine neue Python-Datei, und erstellen Sie Variablen für den Azure-Endpunkt und den Abonnementschlüssel Ihrer Ressource.Create a new Python file and create variables for your resource's Azure endpoint and subscription key.
Wichtig
Öffnen Sie das Azure-Portal.Go to the Azure portal. Wenn die im Abschnitt Voraussetzungen erstellte Textanalyseressource erfolgreich bereitgestellt wurde, klicken Sie unter Nächste Schritte auf die Schaltfläche Zu Ressource wechseln.If the Text Analytics resource you created in the Prerequisites section deployed successfully, click the Go to Resource button under Next Steps. Schlüssel und Endpunkt finden Sie auf der Seite mit dem Schlüssel und dem Endpunkt der Ressource unter Ressourcenverwaltung.You can find your key and endpoint in the resource's key and endpoint page, under resource management.
Denken Sie daran, den Schlüssel aus Ihrem Code zu entfernen, wenn Sie fertig sind, und ihn niemals zu veröffentlichen.Remember to remove the key from your code when you're done, and never post it publicly. In der Produktionsumgebung sollten Sie eine sichere Methode zum Speichern Ihrer Anmeldeinformationen sowie zum Zugriff darauf verwenden.For production, consider using a secure way of storing and accessing your credentials. Beispielsweise Azure Key Vault.For example, Azure key vault.
key = "<paste-your-text-analytics-key-here>"
endpoint = "<paste-your-text-analytics-endpoint-here>"
ObjektmodellObject model
Der Textanalyseclient ist ein Objekt vom Typ TextAnalyticsClient
, das sich bei Azure authentifiziert.The Text Analytics client is a TextAnalyticsClient
object that authenticates to Azure. Der Client bietet verschiedene Methoden, um Text zu analysieren.The client provides several methods for analyzing text.
Bei der Verarbeitung wird Text an die API in Form einer Liste von documents
gesendet, die ihrerseits entweder eine Zeichenfolgenliste, eine Liste in einer wörterbuchähnlichen Darstellung oder eine Liste von TextDocumentInput/DetectLanguageInput
sind.When processing text is sent to the API as a list of documents
, which is either as a list of string, a list of dict-like representation, or as a list of TextDocumentInput/DetectLanguageInput
. Ein dict-like
-Objekt enthält eine Kombination aus id
, text
und language/country_hint
.A dict-like
object contains a combination of id
, text
, and language/country_hint
. Das text
-Attribut speichert den zu analysierenden Text in der Ausgangssprache (country_hint
), und id
kann ein beliebiger Wert sein.The text
attribute stores the text to be analyzed in the origin country_hint
, and the id
can be any value.
Das Antwortobjekt ist eine Liste mit den Analyseinformationen für jedes Dokument.The response object is a list containing the analysis information for each document.
CodebeispieleCode examples
Diese Codeausschnitte veranschaulichen, wie die folgenden Aufgaben mit der Textanalyse-Clientbibliothek für Python durchgeführt werden:These code snippets show you how to do the following tasks with the Text Analytics client library for Python:
- Authentifizieren des ClientsAuthenticate the client
- StandpunktanalyseSentiment Analysis
- Opinion MiningOpinion mining
- SprachenerkennungLanguage detection
- Erkennung benannter EntitätenNamed Entity recognition
- Erkennung von personenbezogenen InformationenPersonally Identifiable Information recognition
- EntitätsverknüpfungEntity linking
- SchlüsselbegriffserkennungKey phrase extraction
Authentifizieren des ClientsAuthenticate the client
Erstellen Sie eine Funktion, um das Objekt TextAnalyticsClient
mit dem oben erstellten Schlüssel (key
) und Endpunkt (endpoint
) zu instanziieren.Create a function to instantiate the TextAnalyticsClient
object with your key
AND endpoint
created above. Erstellen Sie anschließend einen neuen Client.Then create a new client.
from azure.ai.textanalytics import TextAnalyticsClient
from azure.core.credentials import AzureKeyCredential
def authenticate_client():
ta_credential = AzureKeyCredential(key)
text_analytics_client = TextAnalyticsClient(
endpoint=endpoint,
credential=ta_credential)
return text_analytics_client
client = authenticate_client()
StimmungsanalyseSentiment analysis
Erstellen Sie eine neue Funktion namens sentiment_analysis_example()
, die den Client als Argument akzeptiert und anschließend die Funktion analyze_sentiment()
aufruft.Create a new function called sentiment_analysis_example()
that takes the client as an argument, then calls the analyze_sentiment()
function. Das zurückgegebene Antwortobjekt enthält die Stimmungsbezeichnung und den Stimmungswert des gesamten Eingabedokuments sowie eine Standpunktanalyse für jeden Satz.The returned response object will contain the sentiment label and score of the entire input document, as well as a sentiment analysis for each sentence.
def sentiment_analysis_example(client):
documents = ["I had the best day of my life. I wish you were there with me."]
response = client.analyze_sentiment(documents=documents)[0]
print("Document Sentiment: {}".format(response.sentiment))
print("Overall scores: positive={0:.2f}; neutral={1:.2f}; negative={2:.2f} \n".format(
response.confidence_scores.positive,
response.confidence_scores.neutral,
response.confidence_scores.negative,
))
for idx, sentence in enumerate(response.sentences):
print("Sentence: {}".format(sentence.text))
print("Sentence {} sentiment: {}".format(idx+1, sentence.sentiment))
print("Sentence score:\nPositive={0:.2f}\nNeutral={1:.2f}\nNegative={2:.2f}\n".format(
sentence.confidence_scores.positive,
sentence.confidence_scores.neutral,
sentence.confidence_scores.negative,
))
sentiment_analysis_example(client)
OutputOutput
Document Sentiment: positive
Overall scores: positive=1.00; neutral=0.00; negative=0.00
Sentence: I had the best day of my life.
Sentence 1 sentiment: positive
Sentence score:
Positive=1.00
Neutral=0.00
Negative=0.00
Sentence: I wish you were there with me.
Sentence 2 sentiment: neutral
Sentence score:
Positive=0.21
Neutral=0.77
Negative=0.02
Opinion MiningOpinion mining
Zum Durchführen von Stimmungsanalyse mit Opinion Mining erstellen Sie eine neue Funktion mit dem Namen sentiment_analysis_with_opinion_mining_example()
, die den Client als Argument annimmt und dann die Funktion analyze_sentiment()
mit dem Optionsflag show_opinion_mining=True
aufruft.In order to do sentiment analysis with opinion mining, create a new function called sentiment_analysis_with_opinion_mining_example()
that takes the client as an argument, then calls the analyze_sentiment()
function with option flag show_opinion_mining=True
. Das zurückgegebene Antwortobjekt enthält nicht nur die Stimmungsbezeichnung und den Stimmungswert des gesamten Eingabedokuments mit einer Stimmungsanalyse für jeden Satz, sondern außerdem die Standpunktanalyse auf Ansichts- und Meinungsebene.The returned response object will contain not only the sentiment label and score of the entire input document with sentiment analysis for each sentence, but also aspect and opinion level sentiment analysis.
def sentiment_analysis_with_opinion_mining_example(client):
documents = [
"The food and service were unacceptable, but the concierge were nice"
]
result = client.analyze_sentiment(documents, show_opinion_mining=True)
doc_result = [doc for doc in result if not doc.is_error]
positive_reviews = [doc for doc in doc_result if doc.sentiment == "positive"]
negative_reviews = [doc for doc in doc_result if doc.sentiment == "negative"]
positive_mined_opinions = []
mixed_mined_opinions = []
negative_mined_opinions = []
for document in doc_result:
print("Document Sentiment: {}".format(document.sentiment))
print("Overall scores: positive={0:.2f}; neutral={1:.2f}; negative={2:.2f} \n".format(
document.confidence_scores.positive,
document.confidence_scores.neutral,
document.confidence_scores.negative,
))
for sentence in document.sentences:
print("Sentence: {}".format(sentence.text))
print("Sentence sentiment: {}".format(sentence.sentiment))
print("Sentence score:\nPositive={0:.2f}\nNeutral={1:.2f}\nNegative={2:.2f}\n".format(
sentence.confidence_scores.positive,
sentence.confidence_scores.neutral,
sentence.confidence_scores.negative,
))
for mined_opinion in sentence.mined_opinions:
aspect = mined_opinion.aspect
print("......'{}' aspect '{}'".format(aspect.sentiment, aspect.text))
print("......Aspect score:\n......Positive={0:.2f}\n......Negative={1:.2f}\n".format(
aspect.confidence_scores.positive,
aspect.confidence_scores.negative,
))
for opinion in mined_opinion.opinions:
print("......'{}' opinion '{}'".format(opinion.sentiment, opinion.text))
print("......Opinion score:\n......Positive={0:.2f}\n......Negative={1:.2f}\n".format(
opinion.confidence_scores.positive,
opinion.confidence_scores.negative,
))
print("\n")
print("\n")
sentiment_analysis_with_opinion_mining_example(client)
OutputOutput
Document Sentiment: positive
Overall scores: positive=0.84; neutral=0.00; negative=0.16
Sentence: The food and service were unacceptable, but the concierge were nice
Sentence sentiment: positive
Sentence score:
Positive=0.84
Neutral=0.00
Negative=0.16
......'negative' aspect 'food'
......Aspect score:
......Positive=0.01
......Negative=0.99
......'negative' opinion 'unacceptable'
......Opinion score:
......Positive=0.01
......Negative=0.99
......'negative' aspect 'service'
......Aspect score:
......Positive=0.01
......Negative=0.99
......'negative' opinion 'unacceptable'
......Opinion score:
......Positive=0.01
......Negative=0.99
......'positive' aspect 'concierge'
......Aspect score:
......Positive=1.00
......Negative=0.00
......'positive' opinion 'nice'
......Opinion score:
......Positive=1.00
......Negative=0.00
Press any key to continue . . .
SpracherkennungLanguage detection
Erstellen Sie eine neue Funktion namens language_detection_example()
, die den Client als Argument akzeptiert und anschließend die Funktion detect_language()
aufruft.Create a new function called language_detection_example()
that takes the client as an argument, then calls the detect_language()
function. Das zurückgegebene Antwortobjekt enthält die erkannte Sprache in primary_language
(sofern erfolgreich). Andernfalls enthält es eine Fehlermeldung (error
).The returned response object will contain the detected language in primary_language
if successful, and an error
if not.
Tipp
In einigen Fällen ist es unter Umständen schwierig, die Sprachen basierend auf den Eingaben eindeutig zu bestimmen.In some cases it may be hard to disambiguate languages based on the input. Mithilfe des Parameters country_hint
können Sie einen zweistelligen Ländercode angeben.You can use the country_hint
parameter to specify a 2-letter country code. Die API verwendet standardmäßig „US“ als Wert für „countryHint“. Wenn Sie dieses Verhalten entfernen möchten, können Sie diesen Parameter zurücksetzen, indem Sie seinen Wert auf eine leere Zeichenfolge (country_hint : ""
) festlegen.By default the API is using the "US" as the default countryHint, to remove this behavior you can reset this parameter by setting this value to empty string country_hint : ""
.
def language_detection_example(client):
try:
documents = ["Ce document est rédigé en Français."]
response = client.detect_language(documents = documents, country_hint = 'us')[0]
print("Language: ", response.primary_language.name)
except Exception as err:
print("Encountered exception. {}".format(err))
language_detection_example(client)
OutputOutput
Language: French
Erkennung benannter Entitäten (Named Entity Recognition, NER)Named Entity recognition (NER)
Hinweis
In Version 3.1
:In version 3.1
:
- Die Entitätsverknüpfung ist eine separate Anforderung.Entity linking is a separate request than NER.
Erstellen Sie eine neue Funktion namens entity_recognition_example
, die den Client als Argument akzeptiert und anschließend die Funktion recognize_entities()
aufruft und die Ergebnisse durchläuft.Create a new function called entity_recognition_example
that takes the client as an argument, then calls the recognize_entities()
function and iterates through the results. Das zurückgegebene Antwortobjekt enthält die Liste erkannter Entitäten in entity
(sofern erfolgreich). Andernfalls enthält es eine Fehlermeldung (error
).The returned response object will contain the list of detected entities in entity
if successful, and an error
if not. Geben Sie für die erkannten Entitäten jeweils die Kategorie und Unterkategorie aus (sofern vorhanden).For each detected entity, print its Category and Sub-Category if exists.
def entity_recognition_example(client):
try:
documents = ["I had a wonderful trip to Seattle last week."]
result = client.recognize_entities(documents = documents)[0]
print("Named Entities:\n")
for entity in result.entities:
print("\tText: \t", entity.text, "\tCategory: \t", entity.category, "\tSubCategory: \t", entity.subcategory,
"\n\tConfidence Score: \t", round(entity.confidence_score, 2), "\tLength: \t", entity.length, "\tOffset: \t", entity.offset, "\n")
except Exception as err:
print("Encountered exception. {}".format(err))
entity_recognition_example(client)
OutputOutput
Named Entities:
Text: trip Category: Event SubCategory: None
Confidence Score: 0.61 Length: 4 Offset: 18
Text: Seattle Category: Location SubCategory: GPE
Confidence Score: 0.82 Length: 7 Offset: 26
Text: last week Category: DateTime SubCategory: DateRange
Confidence Score: 0.8 Length: 9 Offset: 34
EntitätsverknüpfungEntity Linking
Erstellen Sie eine neue Funktion namens entity_linking_example()
, die den Client als Argument akzeptiert und anschließend die Funktion recognize_linked_entities()
aufruft und die Ergebnisse durchläuft.Create a new function called entity_linking_example()
that takes the client as an argument, then calls the recognize_linked_entities()
function and iterates through the results. Das zurückgegebene Antwortobjekt enthält die Liste erkannter Entitäten in entities
(sofern erfolgreich). Andernfalls enthält es eine Fehlermeldung (error
).The returned response object will contain the list of detected entities in entities
if successful, and an error
if not. Da verknüpfte Entitäten eindeutig identifiziert werden, werden Vorkommen der gleichen Entität unter einem Objekt vom Typ entity
als Liste von Objekten des Typs match
gruppiert.Since linked entities are uniquely identified, occurrences of the same entity are grouped under a entity
object as a list of match
objects.
def entity_linking_example(client):
try:
documents = ["""Microsoft was founded by Bill Gates and Paul Allen on April 4, 1975,
to develop and sell BASIC interpreters for the Altair 8800.
During his career at Microsoft, Gates held the positions of chairman,
chief executive officer, president and chief software architect,
while also being the largest individual shareholder until May 2014."""]
result = client.recognize_linked_entities(documents = documents)[0]
print("Linked Entities:\n")
for entity in result.entities:
print("\tName: ", entity.name, "\tId: ", entity.data_source_entity_id, "\tUrl: ", entity.url,
"\n\tData Source: ", entity.data_source)
print("\tMatches:")
for match in entity.matches:
print("\t\tText:", match.text)
print("\t\tConfidence Score: {0:.2f}".format(match.confidence_score))
print("\t\tOffset: {}".format(match.offset))
print("\t\tLength: {}".format(match.length))
except Exception as err:
print("Encountered exception. {}".format(err))
entity_linking_example(client)
OutputOutput
Linked Entities:
Name: Microsoft Id: Microsoft Url: https://en.wikipedia.org/wiki/Microsoft
Data Source: Wikipedia
Matches:
Text: Microsoft
Confidence Score: 0.55
Offset: 0
Length: 9
Text: Microsoft
Confidence Score: 0.55
Offset: 168
Length: 9
Name: Bill Gates Id: Bill Gates Url: https://en.wikipedia.org/wiki/Bill_Gates
Data Source: Wikipedia
Matches:
Text: Bill Gates
Confidence Score: 0.63
Offset: 25
Length: 10
Text: Gates
Confidence Score: 0.63
Offset: 179
Length: 5
Name: Paul Allen Id: Paul Allen Url: https://en.wikipedia.org/wiki/Paul_Allen
Data Source: Wikipedia
Matches:
Text: Paul Allen
Confidence Score: 0.60
Offset: 40
Length: 10
Name: April 4 Id: April 4 Url: https://en.wikipedia.org/wiki/April_4
Data Source: Wikipedia
Matches:
Text: April 4
Confidence Score: 0.32
Offset: 54
Length: 7
Name: BASIC Id: BASIC Url: https://en.wikipedia.org/wiki/BASIC
Data Source: Wikipedia
Matches:
Text: BASIC
Confidence Score: 0.33
Offset: 98
Length: 5
Name: Altair 8800 Id: Altair 8800 Url: https://en.wikipedia.org/wiki/Altair_8800
Data Source: Wikipedia
Matches:
Text: Altair 8800
Confidence Score: 0.88
Offset: 125
Length: 11
Erkennung von personenbezogenen InformationenPersonally Identifiable Information recognition
Erstellen Sie eine neue Funktion namens pii_recognition_example
, die den Client als Argument akzeptiert und anschließend die Funktion recognize_pii_entities()
aufruft und die Ergebnisse durchläuft.Create a new function called pii_recognition_example
that takes the client as an argument, then calls the recognize_pii_entities()
function and iterates through the results. Das zurückgegebene Antwortobjekt enthält die Liste erkannter Entitäten in entity
(sofern erfolgreich). Andernfalls enthält es eine Fehlermeldung (error
).The returned response object will contain the list of detected entities in entity
if successful, and an error
if not. Geben Sie für die erkannten Entitäten jeweils die Kategorie und Unterkategorie aus (sofern vorhanden).For each detected entity, print its Category and Sub-Category if exists.
def pii_recognition_example(client):
documents = [
"The employee's SSN is 859-98-0987.",
"The employee's phone number is 555-555-5555."
]
response = client.recognize_pii_entities(documents, language="en")
result = [doc for doc in response if not doc.is_error]
for doc in result:
print("Redacted Text: {}".format(doc.redacted_text))
for entity in doc.entities:
print("Entity: {}".format(entity.text))
print("\tCategory: {}".format(entity.category))
print("\tConfidence Score: {}".format(entity.confidence_score))
print("\tOffset: {}".format(entity.offset))
print("\tLength: {}".format(entity.length))
pii_recognition_example(client)
OutputOutput
Redacted Text: The employee's SSN is ***********.
Entity: 859-98-0987
Category: U.S. Social Security Number (SSN)
Confidence Score: 0.65
Offset: 22
Length: 11
Redacted Text: The employee's phone number is ************.
Entity: 555-555-5555
Category: Phone Number
Confidence Score: 0.8
Offset: 31
Length: 12
SchlüsselwortextraktionKey phrase extraction
Erstellen Sie eine neue Funktion namens key_phrase_extraction_example()
, die den Client als Argument akzeptiert und anschließend die Funktion extract_key_phrases()
aufruft.Create a new function called key_phrase_extraction_example()
that takes the client as an argument, then calls the extract_key_phrases()
function. Das Ergebnis enthält bei erfolgreicher Ausführung die Liste der erkannten Schlüsselbegriffe in key_phrases
und andernfalls error
.The result will contain the list of detected key phrases in key_phrases
if successful, and an error
if not. Geben Sie alle erkannten Schlüsselbegriffe aus.Print any detected key phrases.
def key_phrase_extraction_example(client):
try:
documents = ["My cat might need to see a veterinarian."]
response = client.extract_key_phrases(documents = documents)[0]
if not response.is_error:
print("\tKey Phrases:")
for phrase in response.key_phrases:
print("\t\t", phrase)
else:
print(response.id, response.error)
except Exception as err:
print("Encountered exception. {}".format(err))
key_phrase_extraction_example(client)
OutputOutput
Key Phrases:
cat
veterinarian
Asynchrones Verwenden der API mit dem Analyze-VorgangUse the API asynchronously with the Analyze operation
Achtung
Wenn Sie den Analysevorgang verwenden möchten, muss es sich bei Ihrer Azure-Ressource um eine Ressource im Standard-Tarif (S) handeln.To use the Analyze operation, make sure your Azure resource is using the S standard pricing tier.
Erstellen Sie eine neue Funktion namens analyze_example()
, die den Client als Argument akzeptiert und anschließend die Funktion begin_analyze()
aufruft.Create a new function called analyze_example()
that takes the client as an argument, then calls the begin_analyze()
function. Daraus resultiert ein zeitintensiver Vorgang, aus dem Ergebnisse abgerufen werden.The result will be a long running operation which will be polled for results.
def analyze_example(client):
documents = [
"Microsoft was founded by Bill Gates and Paul Allen."
]
poller = text_analytics_client.begin_analyze(
documents,
display_name="Sample Text Analysis",
entities_recognition_tasks=[EntitiesRecognitionTask()]
)
result = poller.result()
for page in result:
for task in page.entities_recognition_results:
print("Results of Entities Recognition task:")
docs = [doc for doc in task.results if not doc.is_error]
for idx, doc in enumerate(docs):
print("\nDocument text: {}".format(documents[idx]))
for entity in doc.entities:
print("Entity: {}".format(entity.text))
print("...Category: {}".format(entity.category))
print("...Confidence Score: {}".format(entity.confidence_score))
print("...Offset: {}".format(entity.offset))
print("------------------------------------------")
analyze_example(client)
AusgabeOutput
Results of Entities Recognition task:
Document text: Microsoft was founded by Bill Gates and Paul Allen.
Entity: Microsoft
...Category: Organization
...Confidence Score: 0.83
...Offset: 0
Entity: Bill Gates
...Category: Person
...Confidence Score: 0.85
...Offset: 25
Entity: Paul Allen
...Category: Person
...Confidence Score: 0.9
...Offset: 40
------------------------------------------
Sie können den Analyze-Vorgang auch verwenden, um personenbezogene Informationen zu erkennen und Schlüsselbegriffe zu extrahieren.You can also use the Analyze operation to detect PII and key phrase extraction. Das Analyze-Beispiel finden Sie auf GitHub.See the Analyze sample on GitHub.
Wichtig
- Die neueste stabile Version der Textanalyse-API ist
3.0
.The latest stable version of the Text Analytics API is3.0
.- Befolgen Sie nur die Anweisungen für die von Ihnen verwendete Version.Be sure to only follow the instructions for the version you are using.
VoraussetzungenPrerequisites
- Aktuelle Version von cURL.The current version of cURL.
- Sobald Sie über Ihr Azure-Abonnement verfügen, erstellen Sie eine Textanalyseressource im Azure-Portal, um Ihren Schlüssel und Endpunkt zu erhalten.Once you have your Azure subscription, create a Text Analytics resource in the Azure portal to get your key and endpoint. Klicken Sie nach Abschluss der Bereitstellung auf Zu Ressource wechseln.After it deploys, click Go to resource.
- Sie benötigen den Schlüssel und den Endpunkt der von Ihnen erstellten Ressource, um Ihre Anwendung mit der Textanalyse-API zu verbinden.You will need the key and endpoint from the resource you create to connect your application to the Text Analytics API. Der Schlüssel und der Endpunkt werden weiter unten in der Schnellstartanleitung in den Code eingefügt.You'll paste your key and endpoint into the code below later in the quickstart.
- Sie können den kostenlosen Tarif (
F0
) verwenden, um den Dienst zu testen, und später für die Produktion auf einen kostenpflichtigen Tarif upgraden.You can use the free pricing tier (F0
) to try the service, and upgrade later to a paid tier for production.
Hinweis
- In den folgenden Bash-Beispielen wird das Zeilenfortsetzungszeichen
\
verwendet.The following BASH examples use the\
line continuation character. Verwenden Sie dieses Zeichen, falls in Ihrer Konsole oder Ihrem Terminal ein anderes Zeilenfortsetzungszeichen genutzt wird.If your console or terminal uses a different line continuation character, use that character. - Sprachspezifische Beispiele finden Sie auf GitHub.You can find language specific samples on GitHub.
- Navigieren Sie zum Azure-Portal, und suchen Sie den Schlüssel und den Endpunkt für die unter „Voraussetzungen“ erstellte Textanalyseressource.Go to the Azure portal and find the key and endpoint for the Text Analytics resource you created in the prerequisites. Sie befinden sich auf der Seite mit dem Schlüssel und Endpunkt der Ressource unter Ressourcenverwaltung.They will be located on the resource's key and endpoint page, under resource management. Ersetzen Sie dann die Zeichenfolgen im unten angegebenen Code durch Ihren Schlüssel und Endpunkt.Then replace the strings in the code below with your key and endpoint. Sie benötigen die folgenden Informationen, um die Textanalyse-API aufzurufen:To call the Text Analytics API, you need the following information:
parameterparameter | BESCHREIBUNGDescription |
---|---|
-X POST <endpoint> |
Gibt den Endpunkt für den Zugriff auf die API anSpecifies your endpoint for accessing the API. |
-H Content-Type: application/json |
Der Inhaltstyp zum Senden von JSON-DatenThe content type for sending JSON data. |
-H "Ocp-Apim-Subscription-Key:<key> |
Gibt den Schlüssel für den Zugriff auf die API anSpecifies the key for accessing the API. |
-d <documents> |
Die JSON-Datei, die die zu sendenden Dokumente enthältThe JSON containing the documents you want to send. |
Die folgenden cURL-Befehle werden über eine Bash-Shell ausgeführt.The following cURL commands are executed from a BASH shell. Fügen Sie in diese Befehle Ihren Ressourcennamen und Ressourcenschlüssel sowie Ihre JSON-Werte ein.Edit these commands with your own resource name, resource key, and JSON values.
StandpunktanalyseSentiment Analysis
- Kopieren Sie den Befehl in einen Text-Editor.Copy the command into a text editor.
- Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:Make the following changes in the command where needed:
- Ersetzen Sie den Wert
<your-text-analytics-key-here>
durch Ihren Schlüssel.Replace the value<your-text-analytics-key-here>
with your key. - Ersetzen Sie den ersten Teil der Anforderungs-URL (
<your-text-analytics-endpoint-here>
) durch Ihre Endpunkt-URL.Replace the first part of the request URL<your-text-analytics-endpoint-here>
with the your own endpoint URL.
- Ersetzen Sie den Wert
- Öffnen Sie ein Eingabeaufforderungsfenster.Open a command prompt window.
- Fügen Sie den Befehl aus dem Text-Editor in das Eingabeaufforderungsfenster ein, und führen Sie den Befehl aus.Paste the command from the text editor into the command prompt window, and then run the command.
Hinweis
Im folgenden Beispiel wird mithilfe des Parameters opinionMining=true
eine Anforderung für das Opinion-Mining-Feature der Standpunktanalyse eingefügt. Diese liefert genaue Informationen zu den Meinungen bezüglich bestimmter Aspekte im Text (z. B. zu Produkt- oder Dienstattributen).The below example includes a request for the Opinion Mining feature of Sentiment Analysis using the opinionMining=true
parameter, which provides granular information about the opinions related to aspects (such as the attributes of products or services) in text.
curl -X POST https://<your-text-analytics-endpoint-here>/text/analytics/v3.1-preview.3/sentiment?opinionMining=true \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-text-analytics-key-here>" \
-d '{ documents: [{ id: "1", text: "The customer service here is really good."}]}'
JSON-AntwortJSON response
{
"documents":[
{
"id":"1",
"sentiment":"positive",
"confidenceScores":{
"positive":1.0,
"neutral":0.0,
"negative":0.0
},
"sentences":[
{
"sentiment":"positive",
"confidenceScores":{
"positive":1.0,
"neutral":0.0,
"negative":0.0
},
"offset":0,
"length":41,
"text":"The customer service here is really good.",
"aspects":[
{
"sentiment":"positive",
"confidenceScores":{
"positive":1.0,
"negative":0.0
},
"offset":4,
"length":16,
"text":"customer service",
"relations":[
{
"relationType":"opinion",
"ref":"#/documents/0/sentences/0/opinions/0"
}
]
}
],
"opinions":[
{
"sentiment":"positive",
"confidenceScores":{
"positive":1.0,
"negative":0.0
},
"offset":36,
"length":4,
"text":"good",
"isNegated":false
}
]
}
],
"warnings":[
]
}
],
"errors":[
],
"modelVersion":"2020-04-01"
}
SpracherkennungLanguage detection
- Kopieren Sie den Befehl in einen Text-Editor.Copy the command into a text editor.
- Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:Make the following changes in the command where needed:
- Ersetzen Sie den Wert
<your-text-analytics-key-here>
durch Ihren Schlüssel.Replace the value<your-text-analytics-key-here>
with your key. - Ersetzen Sie den ersten Teil der Anforderungs-URL (
<your-text-analytics-endpoint-here>
) durch Ihre Endpunkt-URL.Replace the first part of the request URL<your-text-analytics-endpoint-here>
with the your own endpoint URL.
- Ersetzen Sie den Wert
- Öffnen Sie ein Eingabeaufforderungsfenster.Open a command prompt window.
- Fügen Sie den Befehl aus dem Text-Editor in das Eingabeaufforderungsfenster ein, und führen Sie den Befehl aus.Paste the command from the text editor into the command prompt window, and then run the command.
curl -X POST https://<your-text-analytics-endpoint-here>/text/analytics/v3.1-preview.3/languages/ \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-text-analytics-key-here>" \
-d '{ documents: [{ id: "1", text: "This is a document written in English."}]}'
JSON-AntwortJSON response
{
"documents":[
{
"id":"1",
"detectedLanguage":{
"name":"English",
"iso6391Name":"en",
"confidenceScore":0.99
},
"warnings":[
]
}
],
"errors":[
],
"modelVersion":"2020-09-01"
}
Erkennung benannter Entitäten (NER)Named Entity Recognition (NER)
- Kopieren Sie den Befehl in einen Text-Editor.Copy the command into a text editor.
- Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:Make the following changes in the command where needed:
- Ersetzen Sie den Wert
<your-text-analytics-key-here>
durch Ihren Schlüssel.Replace the value<your-text-analytics-key-here>
with your key. - Ersetzen Sie den ersten Teil der Anforderungs-URL (
<your-text-analytics-endpoint-here>
) durch Ihre Endpunkt-URL.Replace the first part of the request URL<your-text-analytics-endpoint-here>
with the your own endpoint URL.
- Ersetzen Sie den Wert
- Öffnen Sie ein Eingabeaufforderungsfenster.Open a command prompt window.
- Fügen Sie den Befehl aus dem Text-Editor in das Eingabeaufforderungsfenster ein, und führen Sie den Befehl aus.Paste the command from the text editor into the command prompt window, and then run the command.
curl -X POST https://<your-text-analytics-endpoint-here>/text/analytics/v3.1-preview.3/entities/recognition/general \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-text-analytics-key-here>" \
-d '{ documents: [{ id: "1", language:"en", text: "I had a wonderful trip to Seattle last week."}]}'
JSON-AntwortJSON response
{
"documents":[
{
"id":"1",
"entities":[
{
"text":"trip",
"category":"Event",
"offset":18,
"length":4,
"confidenceScore":0.61
},
{
"text":"Seattle",
"category":"Location",
"subcategory":"GPE",
"offset":26,
"length":7,
"confidenceScore":0.82
},
{
"text":"last week",
"category":"DateTime",
"subcategory":"DateRange",
"offset":34,
"length":9,
"confidenceScore":0.8
}
],
"warnings":[
]
}
],
"errors":[
],
"modelVersion":"2020-04-01"
}
Erkennen personenbezogener InformationenDetecting personally identifying information
- Kopieren Sie den Befehl in einen Text-Editor.Copy the command into a text editor.
- Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:Make the following changes in the command where needed:
- Ersetzen Sie den Wert
<your-text-analytics-key-here>
durch Ihren Schlüssel.Replace the value<your-text-analytics-key-here>
with your key. - Ersetzen Sie den ersten Teil der Anforderungs-URL (
<your-text-analytics-endpoint-here>
) durch Ihre Endpunkt-URL.Replace the first part of the request URL<your-text-analytics-endpoint-here>
with the your own endpoint URL.
- Ersetzen Sie den Wert
- Öffnen Sie ein Eingabeaufforderungsfenster.Open a command prompt window.
- Fügen Sie den Befehl aus dem Text-Editor in das Eingabeaufforderungsfenster ein, und führen Sie den Befehl aus.Paste the command from the text editor into the command prompt window, and then run the command.
curl -X POST https://your-text-analytics-endpoint-here>/text/analytics/v3.1-preview.3/entities/recognition/pii \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-text-analytics-key-here>" \
-d '{ documents: [{ id: "1", language:"en", text: "Call our office at 312-555-1234, or send an email to support@contoso.com"}]}'
JSON-AntwortJSON response
{
"documents":[
{
"redactedText":"Insurance policy for *** on file 123-12-1234 is here by approved.",
"id":"1",
"entities":[
{
"text":"SSN",
"category":"Organization",
"offset":21,
"length":3,
"confidenceScore":0.45
}
],
"warnings":[
]
}
],
"errors":[
],
"modelVersion":"2020-07-01"
}
EntitätsverknüpfungEntity linking
- Kopieren Sie den Befehl in einen Text-Editor.Copy the command into a text editor.
- Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:Make the following changes in the command where needed:
- Ersetzen Sie den Wert
<your-text-analytics-key-here>
durch Ihren Schlüssel.Replace the value<your-text-analytics-key-here>
with your key. - Ersetzen Sie den ersten Teil der Anforderungs-URL (
<your-text-analytics-endpoint-here>
) durch Ihre Endpunkt-URL.Replace the first part of the request URL<your-text-analytics-endpoint-here>
with the your own endpoint URL.
- Ersetzen Sie den Wert
- Öffnen Sie ein Eingabeaufforderungsfenster.Open a command prompt window.
- Fügen Sie den Befehl aus dem Text-Editor in das Eingabeaufforderungsfenster ein, und führen Sie den Befehl aus.Paste the command from the text editor into the command prompt window, and then run the command.
curl -X POST https://<your-text-analytics-endpoint-here>/text/analytics/v3.1-preview.3/entities/linking \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-text-analytics-key-here>" \
-d '{ documents: [{ id: "1", language:"en", text: "Microsoft was founded by Bill Gates and Paul Allen on April 4, 1975."}]}'
JSON-AntwortJSON response
{
"documents":[
{
"id":"1",
"entities":[
{
"bingId":"a093e9b9-90f5-a3d5-c4b8-5855e1b01f85",
"name":"Microsoft",
"matches":[
{
"text":"Microsoft",
"offset":0,
"length":9,
"confidenceScore":0.48
}
],
"language":"en",
"id":"Microsoft",
"url":"https://en.wikipedia.org/wiki/Microsoft",
"dataSource":"Wikipedia"
},
{
"bingId":"0d47c987-0042-5576-15e8-97af601614fa",
"name":"Bill Gates",
"matches":[
{
"text":"Bill Gates",
"offset":25,
"length":10,
"confidenceScore":0.52
}
],
"language":"en",
"id":"Bill Gates",
"url":"https://en.wikipedia.org/wiki/Bill_Gates",
"dataSource":"Wikipedia"
},
{
"bingId":"df2c4376-9923-6a54-893f-2ee5a5badbc7",
"name":"Paul Allen",
"matches":[
{
"text":"Paul Allen",
"offset":40,
"length":10,
"confidenceScore":0.54
}
],
"language":"en",
"id":"Paul Allen",
"url":"https://en.wikipedia.org/wiki/Paul_Allen",
"dataSource":"Wikipedia"
},
{
"bingId":"52535f87-235e-b513-54fe-c03e4233ac6e",
"name":"April 4",
"matches":[
{
"text":"April 4",
"offset":54,
"length":7,
"confidenceScore":0.38
}
],
"language":"en",
"id":"April 4",
"url":"https://en.wikipedia.org/wiki/April_4",
"dataSource":"Wikipedia"
}
],
"warnings":[
]
}
],
"errors":[
],
"modelVersion":"2020-02-01"
}
SchlüsselwortextraktionKey phrase extraction
- Kopieren Sie den Befehl in einen Text-Editor.Copy the command into a text editor.
- Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:Make the following changes in the command where needed:
- Ersetzen Sie den Wert
<your-text-analytics-key-here>
durch Ihren Schlüssel.Replace the value<your-text-analytics-key-here>
with your key. - Ersetzen Sie den ersten Teil der Anforderungs-URL (
<your-text-analytics-endpoint-here>
) durch Ihre Endpunkt-URL.Replace the first part of the request URL<your-text-analytics-endpoint-here>
with the your own endpoint URL.
- Ersetzen Sie den Wert
- Öffnen Sie ein Eingabeaufforderungsfenster.Open a command prompt window.
- Fügen Sie den Befehl aus dem Text-Editor in das Eingabeaufforderungsfenster ein, und führen Sie den Befehl aus.Paste the command from the text editor into the command prompt window, and then run the command.
curl -X POST https://<your-text-analytics-endpoint-here>/text/analytics/v3.1-preview.3/keyPhrases \
-H "Content-Type: application/json" \
-H "Ocp-Apim-Subscription-Key: <your-text-analytics-key-here>" \
-d '{ documents: [{ id: "1", language:"en", text: "Hello world. This is some input text that I love."}]}'
{
"documents":[
{
"id":"1",
"keyPhrases":[
"wonderful trip",
"Seattle",
"week"
],
"warnings":[
]
}
],
"errors":[
],
"modelVersion":"2020-07-01"
}
Bereinigen von RessourcenClean up resources
Wenn Sie ein Cognitive Services-Abonnement bereinigen und entfernen möchten, können Sie die Ressource oder die Ressourcengruppe löschen.If you want to clean up and remove a Cognitive Services subscription, you can delete the resource or resource group. Wenn Sie die Ressourcengruppe löschen, werden auch alle anderen Ressourcen gelöscht, die ihr zugeordnet sind.Deleting the resource group also deletes any other resources associated with it.