Delen via


Azure Text Analytics-clientbibliotheek voor JavaScript - versie 5.1.0

Azure TextAnalytics is een cloudservice die geavanceerde verwerking van natuurlijke taal voor onbewerkte tekst biedt en zes hoofdfuncties bevat:

Opmerking: Deze SDK is gericht op Azure Text Analytics service-API versie 3.1.0.

  • Taaldetectie
  • Sentimentanalyse
  • Sleuteltermextractie
  • Herkenning van benoemde entiteiten
  • Herkenning van persoonsgegevens
  • Herkenning van gekoppelde entiteiten
  • Gezondheidszorganalyse
  • Ondersteuning voor meerdere acties per document

Gebruik de clientbibliotheek voor het volgende:

  • Detecteren in welke taalinvoertekst is geschreven.
  • Bepaal wat klanten van uw merk of onderwerp vinden door onbewerkte tekst te analyseren op aanwijzingen over positief of negatief gevoel.
  • Extraheer automatisch sleuteltermen om snel de hoofdpunten te identificeren.
  • Identificeer en categoriseer entiteiten in uw tekst als personen, plaatsen, organisaties, datum/tijd, hoeveelheden, percentages, valuta's, specifieke gezondheidszorg en meer.
  • Voer meerdere van de bovenstaande taken tegelijk uit.

Belangrijke koppelingen:

Aan de slag

Momenteel ondersteunde omgevingen

Zie ons ondersteuningsbeleid voor meer informatie.

Vereisten

Als u de Azure CLI gebruikt, vervangt u en <your-resource-name> door <your-resource-group-name> uw eigen unieke namen:

az cognitiveservices account create --kind TextAnalytics --resource-group <your-resource-group-name> --name <your-resource-name> --sku <your-sku-name> --location <your-location>

Installeer het pakket @azure/ai-text-analytics

Installeer de Azure Text Analytics-clientbibliotheek voor JavaScript met npm:

npm install @azure/ai-text-analytics

Een maken en verifiëren TextAnalyticsClient

Als u een clientobject wilt maken voor toegang tot de Text Analytics-API, hebt u de endpoint van uw Text Analytics resource en een credentialnodig. De Text Analytics-client kan Azure Active Directory-referenties of een API-sleutelreferentie gebruiken om te verifiëren.

U vindt het eindpunt voor uw text analytics-resource in Azure Portal of met behulp van het Azure CLI-fragment hieronder:

az cognitiveservices account show --name <your-resource-name> --resource-group <your-resource-group-name> --query "endpoint"

Een API-sleutel gebruiken

Gebruik de Azure-portal om naar uw Text Analytics-resource te bladeren en een API-sleutel op te halen, of gebruik het Onderstaande Azure CLI-fragment:

Opmerking: Soms wordt de API-sleutel een 'abonnementssleutel' of 'abonnements-API-sleutel' genoemd.

az cognitiveservices account keys list --resource-group <your-resource-group-name> --name <your-resource-name>

Zodra u een API-sleutel en eindpunt hebt, kunt u de AzureKeyCredential klasse als volgt gebruiken om de client te verifiëren:

const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");

const client = new TextAnalyticsClient("<endpoint>", new AzureKeyCredential("<API key>"));

Een Azure Active Directory-referentie gebruiken

Verificatie van client-API-sleutels wordt in de meeste voorbeelden gebruikt, maar u kunt zich ook verifiëren met Azure Active Directory met behulp van de Azure Identity-bibliotheek. Als u de hieronder weergegeven DefaultAzureCredential-provider of andere referentieproviders wilt gebruiken die bij de Azure SDK worden geleverd, installeert u het @azure/identity pakket:

npm install @azure/identity

U moet ook een nieuwe AAD-toepassing registreren en toegang verlenen tot Text Analytics door de "Cognitive Services User" rol toe te wijzen aan uw service-principal (opmerking: andere rollen, zoals "Owner" die niet de benodigde machtigingen verlenen, zijn alleen "Cognitive Services User" voldoende om de voorbeelden en de voorbeeldcode uit te voeren).

Stel de waarden van de client-id, tenant-id en clientgeheim van de AAD-toepassing in als omgevingsvariabelen: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET.

const { TextAnalyticsClient } = require("@azure/ai-text-analytics");
const { DefaultAzureCredential } = require("@azure/identity");

const client = new TextAnalyticsClient("<endpoint>", new DefaultAzureCredential());

Belangrijkste concepten

TextAnalyticsClient

TextAnalyticsClientis de primaire interface voor ontwikkelaars die de Text Analytics clientbibliotheek gebruiken. Verken de methoden voor dit clientobject om inzicht te krijgen in de verschillende functies van de Text Analytics-service waartoe u toegang hebt.

Invoer

Een document vertegenwoordigt één invoereenheid die moet worden geanalyseerd door de voorspellende modellen in de Text Analytics-service. Bewerkingen op TextAnalyticsClient nemen een verzameling invoer die als een batch moet worden geanalyseerd. De bewerkingsmethoden hebben overbelastingen waardoor de invoer kan worden weergegeven als tekenreeksen of als objecten met gekoppelde metagegevens.

Elk document kan bijvoorbeeld worden doorgegeven als een tekenreeks in een matrix, bijvoorbeeld

const documents = [
  "I hated the movie. It was so slow!",
  "The movie made it into my top ten favorites.",
  "What a great movie!"
];

of, als u een document id per item of languagecountryHint/wilt doorgeven, kunnen deze worden opgegeven als een lijst van of DetectLanguageInput afhankelijk van TextDocumentInput de bewerking;

const textDocumentInputs = [
  { id: "1", language: "en", text: "I hated the movie. It was so slow!" },
  { id: "2", language: "en", text: "The movie made it into my top ten favorites." },
  { id: "3", language: "en", text: "What a great movie!" }
];

Zie servicebeperkingen voor de invoer, waaronder limieten voor documentlengte, maximale batchgrootte en ondersteunde tekstcoderingen.

Retourwaarde

De geretourneerde waarde die overeenkomt met één document is een geslaagd resultaat of een foutobject. Elke TextAnalyticsClient methode retourneert een heterogene matrix van resultaten en fouten die overeenkomen met de invoer per index. Een tekstinvoer en het resultaat hebben dezelfde index in de invoer- en resultaatverzamelingen. De verzameling kan eventueel ook informatie bevatten over de invoerbatch en hoe deze in het statistics veld is verwerkt.

Een resultaat, zoals AnalyzeSentimentResult, is het resultaat van een Text Analytics bewerking, die een voorspelling of voorspellingen over één tekstinvoer bevat. Het resultaattype van een bewerking kan desgewenst ook informatie bevatten over het invoerdocument en hoe het is verwerkt.

Het foutobject , TextAnalyticsErrorResult, geeft aan dat de service een fout heeft opgetreden tijdens het verwerken van het document en bevat informatie over de fout.

Afhandeling van documentfouten

In de verzameling die door een bewerking wordt geretourneerd, worden fouten onderscheiden van geslaagde antwoorden door de aanwezigheid van de error eigenschap, die het binnenste TextAnalyticsError object bevat als er een fout is opgetreden. Voor geslaagde resultaatobjecten is deze eigenschap altijdundefined.

Als u bijvoorbeeld alle fouten wilt filteren, kunt u het volgende filtergebruiken:

const results = await client.analyzeSentiment(documents);
const onlySuccessful = results.filter((result) => result.error === undefined);

Opmerking: TypeScript-gebruikers kunnen profiteren van een betere typecontrole van resultaat- en foutobjecten als compilerOptions.strictNullChecks is ingesteld op true in de tsconfig.json configuratie. Bijvoorbeeld:

const [result] = await client.analyzeSentiment(["Hello world!"]);

if (result.error !== undefined) {
  // In this if block, TypeScript will be sure that the type of `result` is
  // `TextAnalyticsError` if compilerOptions.strictNullChecks is enabled in
  // the tsconfig.json

  console.log(result.error);
}

Deze mogelijkheid is geïntroduceerd in TypeScript 3.2, dus gebruikers van TypeScript 3.1 moeten resultaatwaarden als volgt naar hun overeenkomstige succesvariant casten:

const [result] = await client.detectLanguage(["Hello world!"]);

if (result.error === undefined) {
  const { primaryLanguage } = result as DetectLanguageSuccessResult;
}

Voorbeelden

Sentiment analyseren

Het gevoel van tekst analyseren om te bepalen of deze positief, negatief, neutraal of gemengd is, inclusief sentimentanalyse per zin en betrouwbaarheidsscores.

const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");

const client = new TextAnalyticsClient("<endpoint>", new AzureKeyCredential("<API key>"));

const documents = [
  "I did not like the restaurant. The food was too spicy.",
  "The restaurant was decorated beautifully. The atmosphere was unlike any other restaurant I've been to.",
  "The food was yummy. :)"
];

async function main() {
  const results = await client.analyzeSentiment(documents);

  for (const result of results) {
    if (result.error === undefined) {
      console.log("Overall sentiment:", result.sentiment);
      console.log("Scores:", result.confidenceScores);
    } else {
      console.error("Encountered an error:", result.error);
    }
  }
}

main();

Voor gedetailleerdere informatie over de meningen met betrekking tot aspecten van een product/service, ook wel bekend als Aspect-based Sentiment Analysis in Natural Language Processing (NLP), bekijkt u hier een voorbeeld van sentimentanalyse met meninganalyse.

Entiteiten herkennen

Entiteiten in tekst herkennen en categoriseren als personen, plaatsen, organisaties, datums/tijden, hoeveelheden, valuta's, enzovoort.

De language parameter is optioneel. Als dit niet is opgegeven, wordt het standaard Engelse model gebruikt.

const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");

const client = new TextAnalyticsClient("<endpoint>", new AzureKeyCredential("<API key>"));

const documents = [
  "Microsoft was founded by Bill Gates and Paul Allen.",
  "Redmond is a city in King County, Washington, United States, located 15 miles east of Seattle.",
  "Jeff bought three dozen eggs because there was a 50% discount."
];

async function main() {
  const results = await client.recognizeEntities(documents, "en");

  for (const result of results) {
    if (result.error === undefined) {
      console.log(" -- Recognized 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);
    }
  }
}

main();

PII-entiteiten herkennen

Er is een afzonderlijk eindpunt en een afzonderlijke bewerking voor het herkennen van persoonsgegevens (PII) in tekst, zoals burgerservicenummers, bankrekeninggegevens, creditcardnummers, enzovoort. Het gebruik ervan is vergelijkbaar met de bovenstaande standaardentiteitsherkenning:

const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");
const client = new TextAnalyticsClient("<endpoint>", new AzureKeyCredential("<API key>"));
const documents = [
  "The employee's SSN is 555-55-5555.",
  "The employee's phone number is (555) 555-5555."
];
async function main() {
  const results = await client.recognizePiiEntities(documents, "en");
  for (const result of results) {
    if (result.error === undefined) {
      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);
    }
  }
}
main();

Gekoppelde entiteiten herkennen

Een 'gekoppelde' entiteit is een entiteit die bestaat in een Knowledge Base (zoals Wikipedia). De recognizeLinkedEntities bewerking kan entiteiten ondubbelzinnig maken door te bepalen naar welke vermelding in een Knowledge Base ze waarschijnlijk verwijzen (bijvoorbeeld, verwijst het woord 'Mars' in een stuk tekst naar de planeet of naar de Romeinse oorlogsgod). Gekoppelde entiteiten bevatten gekoppelde URL's naar de Knowledge Base die de definitie van de entiteit biedt.

const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");

const client = new TextAnalyticsClient("<endpoint>", new AzureKeyCredential("<API key>"));

const documents = [
  "Microsoft was founded by Bill Gates and Paul Allen.",
  "Easter Island, a Chilean territory, is a remote volcanic island in Polynesia.",
  "I use Azure Functions to develop my product."
];

async function main() {
  const results = await client.recognizeLinkedEntities(documents, "en");

  for (const result of results) {
    if (result.error === undefined) {
      console.log(" -- Recognized linked entities for input", result.id, "--");
      for (const entity of result.entities) {
        console.log(entity.name, "(URL:", entity.url, ", Source:", entity.dataSource, ")");
        for (const match of entity.matches) {
          console.log(
            "  Occurrence:",
            '"' + match.text + '"',
            "(Score:",
            match.confidenceScore,
            ")"
          );
        }
      }
    } else {
      console.error("Encountered an error:", result.error);
    }
  }
}

main();

Sleuteltermen ophalen

Sleuteltermextractie identificeert de belangrijkste gesprekspunten in een document. Als u bijvoorbeeld invoertekst 'Het eten was heerlijk en er was geweldig personeel', retourneert de service 'eten' en 'geweldig personeel'.

const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");

const client = new TextAnalyticsClient("<endpoint>", new AzureKeyCredential("<API key>"));

const documents = [
  "Redmond is a city in King County, Washington, United States, located 15 miles east of Seattle.",
  "I need to take my cat to the veterinarian.",
  "I will travel to South America in the summer."
];

async function main() {
  const results = await client.extractKeyPhrases(documents, "en");

  for (const result of results) {
    if (result.error === undefined) {
      console.log(" -- Extracted key phrases for input", result.id, "--");
      console.log(result.keyPhrases);
    } else {
      console.error("Encountered an error:", result.error);
    }
  }
}

main();

Taal detecteren

Bepaal de taal van een stuk tekst.

De countryHint parameter is optioneel, maar kan de service helpen bij het leveren van de juiste uitvoer als het land van oorsprong bekend is. Indien opgegeven, moet deze worden ingesteld op een ISO-3166 Alpha-2-landcode van twee letters (zoals 'us' voor de Verenigde Staten of 'jp' voor Japan) of op de waarde "none". Als de parameter niet is opgegeven, wordt het standaardmodel "us" (Verenigde Staten) gebruikt. Als u het land van oorsprong van het document niet weet, moet de parameter "none" worden gebruikt en past de Text Analytics-service een model toe dat is afgestemd op een onbekend land van oorsprong.

const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");

const client = new TextAnalyticsClient("<endpoint>", new AzureKeyCredential("<API key>"));

const documents = [
  "This is written in English.",
  "Il documento scritto in italiano.",
  "Dies ist in deutscher Sprache verfasst."
];

async function main() {
  const results = await client.detectLanguage(documents, "none");

  for (const result of results) {
    if (result.error === undefined) {
      const { primaryLanguage } = result;
      console.log(
        "Input #",
        result.id,
        "identified as",
        primaryLanguage.name,
        "( ISO6391:",
        primaryLanguage.iso6391Name,
        ", Score:",
        primaryLanguage.confidenceScore,
        ")"
      );
    } else {
      console.error("Encountered an error:", result.error);
    }
  }
}

main();

Gezondheidszorgentiteiten analyseren

Gezondheidszorganalyse identificeert gezondheidszorgentiteiten. Bijvoorbeeld, opgegeven invoertekst 'Voorgeschreven 100mg ibuprofen, tweemaal daags' retourneert de service '100mg' gecategoriseerd als dosering, 'ibuprofen' als MedicationName en 'tweemaal daags' als Frequentie.

const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");

const client = new TextAnalyticsClient("<endpoint>", new AzureKeyCredential("<API key>"));

const documents = [
  "Prescribed 100mg ibuprofen, taken twice daily.",
  "Patient does not suffer from high blood pressure."
];

async function main() {
  const poller = await client.beginAnalyzeHealthcareEntities(documents);
  const results = await poller.pollUntilDone();

  for await (const result of results) {
    console.log(`- Document ${result.id}`);
    if (!result.error) {
      console.log("\tRecognized Entities:");
      for (const entity of result.entities) {
        console.log(`\t- Entity ${entity.text} of type ${entity.category}`);
      }
    } else console.error("\tError:", result.error);
  }
}

main();

Acties analyseren

Acties analyseren maakt de toepassing van meerdere analyses (benoemde acties) tegelijk mogelijk.

const { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");

const client = new TextAnalyticsClient("<endpoint>", new AzureKeyCredential("<API key>"));

const documents = [
  "Microsoft was founded by Bill Gates and Paul Allen.",
  "The employee's SSN is 555-55-5555.",
  "Easter Island, a Chilean territory, is a remote volcanic island in Polynesia.",
  "I use Azure Functions to develop my product."
];

async function main() {
  const actions = {
    recognizeEntitiesActions: [{ modelVersion: "latest" }],
    recognizePiiEntitiesActions: [{ modelVersion: "latest" }],
    extractKeyPhrasesActions: [{ modelVersion: "latest" }]
  };
  const poller = await client.beginAnalyzeActions(documents, actions);
  const resultPages = await poller.pollUntilDone();
  for await (const page of resultPages) {
    const keyPhrasesAction = page.extractKeyPhrasesResults[0];
    if (!keyPhrasesAction.error) {
      for (const doc of keyPhrasesAction.results) {
        console.log(`- Document ${doc.id}`);
        if (!doc.error) {
          console.log("\tKey phrases:");
          for (const phrase of doc.keyPhrases) {
            console.log(`\t- ${phrase}`);
          }
        } else {
          console.error("\tError:", doc.error);
        }
      }
    }

    const entitiesAction = page.recognizeEntitiesResults[0];
    if (!entitiesAction.error) {
      for (const doc of entitiesAction.results) {
        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("\tError:", doc.error);
        }
      }
    }

    const piiEntitiesAction = page.recognizePiiEntitiesResults[0];
    if (!piiEntitiesAction.error) {
      for (const doc of piiEntitiesAction.results) {
        console.log(`- Document ${doc.id}`);
        if (!doc.error) {
          console.log("\tPii Entities:");
          for (const entity of doc.entities) {
            console.log(`\t- Entity ${entity.text} of type ${entity.category}`);
          }
        } else {
          console.error("\tError:", doc.error);
        }
      }
    }
  }
}

main();

Problemen oplossen

Logboekregistratie

Het inschakelen van logboekregistratie kan helpen bij het ontdekken van nuttige informatie over fouten. Als u een logboek met HTTP-aanvragen en -antwoorden wilt zien, stelt u de AZURE_LOG_LEVEL omgevingsvariabele in op info. U kunt logboekregistratie ook tijdens runtime inschakelen door aan te roepen setLogLevel in de @azure/logger:

import { setLogLevel } from "@azure/logger";

setLogLevel("info");

Voor meer gedetailleerde instructies over het inschakelen van logboeken kunt u de @azure-/loggerpakketdocumenten bekijken.

Volgende stappen

Bekijk de map met voorbeelden voor gedetailleerde voorbeelden van het gebruik van deze bibliotheek.

Bijdragen

Als u een bijdrage wilt leveren aan deze bibliotheek, leest u de handleiding voor bijdragen voor meer informatie over het bouwen en testen van de code.

Weergaven