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 is 3.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

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

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 is 3.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

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

Erstellen Sie eine Methode, um das Objekt TextAnalyticsClientmit 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 is 3.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.

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

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 is 3.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

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

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 is 3.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

  1. Kopieren Sie den Befehl in einen Text-Editor.Copy the command into a text editor.
  2. Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:Make the following changes in the command where needed:
    1. Ersetzen Sie den Wert <your-text-analytics-key-here> durch Ihren Schlüssel.Replace the value <your-text-analytics-key-here> with your key.
    2. 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.
  3. Öffnen Sie ein Eingabeaufforderungsfenster.Open a command prompt window.
  4. 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

  1. Kopieren Sie den Befehl in einen Text-Editor.Copy the command into a text editor.
  2. Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:Make the following changes in the command where needed:
    1. Ersetzen Sie den Wert <your-text-analytics-key-here> durch Ihren Schlüssel.Replace the value <your-text-analytics-key-here> with your key.
    2. 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.
  3. Öffnen Sie ein Eingabeaufforderungsfenster.Open a command prompt window.
  4. 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)

  1. Kopieren Sie den Befehl in einen Text-Editor.Copy the command into a text editor.
  2. Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:Make the following changes in the command where needed:
    1. Ersetzen Sie den Wert <your-text-analytics-key-here> durch Ihren Schlüssel.Replace the value <your-text-analytics-key-here> with your key.
    2. 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.
  3. Öffnen Sie ein Eingabeaufforderungsfenster.Open a command prompt window.
  4. 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

  1. Kopieren Sie den Befehl in einen Text-Editor.Copy the command into a text editor.
  2. Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:Make the following changes in the command where needed:
    1. Ersetzen Sie den Wert <your-text-analytics-key-here> durch Ihren Schlüssel.Replace the value <your-text-analytics-key-here> with your key.
    2. 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.
  3. Öffnen Sie ein Eingabeaufforderungsfenster.Open a command prompt window.
  4. 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

  1. Kopieren Sie den Befehl in einen Text-Editor.Copy the command into a text editor.
  2. Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:Make the following changes in the command where needed:
    1. Ersetzen Sie den Wert <your-text-analytics-key-here> durch Ihren Schlüssel.Replace the value <your-text-analytics-key-here> with your key.
    2. 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.
  3. Öffnen Sie ein Eingabeaufforderungsfenster.Open a command prompt window.
  4. 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

  1. Kopieren Sie den Befehl in einen Text-Editor.Copy the command into a text editor.
  2. Nehmen Sie die folgenden Änderungen im Befehl vor, falls dies erforderlich ist:Make the following changes in the command where needed:
    1. Ersetzen Sie den Wert <your-text-analytics-key-here> durch Ihren Schlüssel.Replace the value <your-text-analytics-key-here> with your key.
    2. 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.
  3. Öffnen Sie ein Eingabeaufforderungsfenster.Open a command prompt window.
  4. 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.

Nächste SchritteNext steps