Klientská knihovna Azure Text Analysis pro JavaScript – verze 6.0.0-beta.1

Azure Cognitive Service for Language je cloudová služba, která poskytuje pokročilé zpracování přirozeného jazyka pro nezpracovaný text a zahrnuje následující hlavní funkce:

Poznámka: Tato sada SDK cílí na službu Azure Cognitive Service pro rozhraní API jazyka verze 2022-04-01-preview.

  • Rozpoznávání jazyka
  • Analýza mínění
  • Extrakce klíčových frází
  • Rozpoznávání pojmenovaných entit
  • Rozpoznávání identifikovatelných osobních údajů
  • Entity Linking
  • Analýza zdravotní péče
  • Extrahovaná sumarizace
  • Vlastní rozpoznávání entit
  • Vlastní klasifikace dokumentů
  • Podpora více akcí na dokument

Klientská knihovna slouží k:

  • Zjistit, v jakém jazyce je napsaný vstupní text.
  • Zjistěte, co si zákazníci myslí o vaší značce nebo tématu tím, že analyzujete nezpracovaný text, který obsahuje stopy o pozitivním nebo negativním mínění.
  • Automatická extrakce klíčových frází a rychlé zjištění hlavních bodů.
  • Identifikujte a kategorizujte entity v textu jako osoby, místa, organizace, datum a čas, množství, procenta, měny, zdravotnictví a další.
  • Proveďte několik z výše uvedených úloh najednou.

Klíčové odkazy:

Začínáme

Aktuálně podporovaná prostředí

  • LtS verze Node.js
  • Nejnovější verze prohlížečů Safari, Chrome, Edge a Firefox.

Další podrobnosti najdete v našich zásadách podpory .

Požadavky

Pokud používáte Azure CLI, nahraďte <your-resource-group-name> a <your-resource-name> vlastními jedinečnými názvy:

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

Nainstalujte balíček @azure/ai-text-analytics.

Nainstalujte klientskou knihovnu Azure Text Analysis pro JavaScript pomocí příkazu npm:

npm install @azure/ai-text-analytics

Vytvoření a ověření TextAnalysisClient

K vytvoření objektu klienta pro přístup k rozhraní LANGUAGE API budete potřebovat endpoint prostředek jazyka a credential. Klient analýzy textu může k ověření použít přihlašovací údaje Azure Active Directory nebo přihlašovací údaje klíče rozhraní API.

Koncový bod pro váš prostředek jazyka najdete na webu Azure Portal nebo pomocí fragmentu kódu Azure CLI níže:

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

Použití klíče rozhraní API

Pomocí webu Azure Portal přejděte k prostředku jazyka a načtěte klíč rozhraní API nebo použijte následující fragment kódu Azure CLI :

Poznámka: Někdy se klíč rozhraní API označuje jako klíč předplatného nebo klíč rozhraní API předplatného.

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

Jakmile budete mít klíč rozhraní API a koncový bod, můžete pomocí AzureKeyCredential třídy ověřit klienta následujícím způsobem:

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

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

Použití přihlašovacích údajů Azure Active Directory

Ve většině příkladů se používá ověřování pomocí klíče rozhraní API klienta, ale ověření můžete provést také v Azure Active Directory pomocí knihovny Azure Identity. Pokud chcete použít zprostředkovatele DefaultAzureCredential uvedeného níže nebo jiné zprostředkovatele přihlašovacích údajů poskytnuté se sadou Azure SDK, nainstalujte @azure/identity balíček :

npm install @azure/identity

Budete také muset zaregistrovat novou aplikaci AAD a udělit přístup k jazyku přiřazením "Cognitive Services User" role k vašemu instančnímu objektu (poznámka: jiné role, jako "Owner" jsou, neudělí potřebná oprávnění, stačí pouze "Cognitive Services User" ke spuštění příkladů a vzorového kódu).

Nastavte hodnoty ID klienta, ID tenanta a tajného klíče klienta aplikace AAD jako proměnné prostředí: AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_CLIENT_SECRET.

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

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

Klíčové koncepty

TextAnalysisClient

TextAnalysisClient je primární rozhraní pro vývojáře, kteří používají klientskou knihovnu pro analýzu textu. Prozkoumejte metody tohoto objektu klienta, abyste porozuměli různým funkcím služby Language, ke které máte přístup.

Vstup

Dokument představuje jednu jednotku vstupu, kterou mají analyzovat prediktivní modely ve službě Language. Operace na TextAnalysisClient přebírají kolekci vstupů, které se mají analyzovat jako dávka. Metody operací mají přetížení, která umožňují, aby vstupy byly reprezentovány jako řetězce nebo jako objekty s připojenými metadaty.

Každý dokument může být například předán jako řetězec v poli, např.

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

nebo pokud chcete předat dokument id pro jednotlivé položky nebo languagecountryHint/, mohou být uvedeny jako seznam TextDocumentInput nebo DetectLanguageInput v závislosti na operaci;

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!" },
];

Projděte si omezení služby pro vstup, včetně omezení délky dokumentu, maximální velikosti dávky a podporovaných kódování textu.

Návratová hodnota

Vrácená hodnota odpovídající jednomu dokumentu je buď úspěšný výsledek, nebo objekt chyby. Každá TextAnalysisClient metoda vrací heterogenní pole výsledků a chyb, které odpovídají vstupům podle indexu. Textový vstup a jeho výsledek budou mít stejný index v kolekci vstupů a výsledků.

Výsledek, například SentimentAnalysisResult, je výsledkem operace Jazyk, která obsahuje předpověď nebo předpovědi týkající se jednoho textového vstupu. Typ výsledku operace může také volitelně obsahovat informace o vstupním dokumentu a způsobu jeho zpracování.

Objekt error označuje, TextAnalysisErrorResultže služba zjistila chybu při zpracování dokumentu, a obsahuje informace o chybě.

Zpracování chyb dokumentu

V kolekci vrácené operací se chyby odlišují od úspěšných error odpovědí přítomností vlastnosti, která obsahuje vnitřní TextAnalysisError objekt, pokud došlo k chybě. Pro úspěšné výsledné objekty je tato vlastnost vždyundefined.

Pokud chcete například vyfiltrovat všechny chyby, můžete použít následující filter:

const results = await client.analyze("SentimentAnalysis", documents);
const onlySuccessful = results.filter((result) => result.error === undefined);

Poznámka: Uživatelé TypeScriptu můžou těžit z lepší kontroly typů objektů výsledků a chyb, pokud compilerOptions.strictNullChecks je v konfiguraci nastavená tsconfig.json na true . Příklad:

const [result] = await client.analyze("SentimentAnalysis", ["Hello world!"]);

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

  console.log(result.error);
}

Příklady

Analýza mínění

Analyzujte mínění textu a zjistěte, jestli je pozitivní, negativní, neutrální nebo smíšený, včetně analýzy mínění pro jednotlivé věty a skóre spolehlivosti.

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

const client = new TextAnalysisClient("<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.analyze("SentimentAnalysis", 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();

Pokud chcete získat podrobnější informace o názorech týkajících se aspektů produktu nebo služby, označované také jako analýza mínění založené na aspektech ve zpracování přirozeného jazyka (NLP), podívejte se na ukázku analýzy mínění s dolováním názorů tady.

Rozpoznávání entit

Rozpoznávat a kategorizovat entity v textu jako osoby, místa, organizace, data a časy, množství, měny atd.

Parametr language je volitelný. Pokud není zadaný, použije se výchozí anglický model.

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

const client = new TextAnalysisClient("<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.analyze("EntityRecognition", 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();

Rozpoznávání entit PII

K rozpoznání identifikovatelných osobních údajů (PII) v textu, jako jsou čísla sociálního pojištění, informace o bankovním účtu, čísla platebních karet atd. existuje samostatná akce. Jeho použití je velmi podobné standardnímu rozpoznávání entit výše:

const { TextAnalysisClient, AzureKeyCredential } = require("@azure/ai-text-analytics");
const client = new TextAnalysisClient("<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.analyze("PiiEntityRecognition", 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();

Entity Linking

Propojená entita je entita, která existuje v znalostní báze (například Wikipedia). Akce EntityLinking může rozluštit entity tím, že určí, na který záznam v znalostní báze pravděpodobně odkazují (například v části textu slovo "Mars" odkazuje na planetu nebo na římského boha války). Propojené entity obsahují přidružené adresy URL k znalostní báze, která poskytuje definici entity.

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

const client = new TextAnalysisClient("<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.analyze("EntityLinking", 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();

Extrakce klíčových frází

Extrakce klíčových frází identifikuje hlavní body v dokumentu. Například vstupní text "Jídlo bylo chutné a tam byl skvělý personál", služba vrátí "jídlo" a "báječný personál".

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

const client = new TextAnalysisClient("<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.analyze("KeyPhraseExtraction", 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();

Rozpoznávání jazyka

Určení jazyka části textu

Parametr countryHint je volitelný, ale může službě pomoct při poskytování správného výstupu, pokud je země původu známá. Pokud je zadán, měl by být nastaven na ISO-3166 Alpha-2 dvoupísmenný kód země (například "nás" pro USA nebo "jp" pro Japonsko) nebo na hodnotu "none". Pokud parametr není zadaný, použije se výchozí "us" model (USA). Pokud neznáte zemi původu dokumentu, měl by se použít parametr "none" a služba Language použije model vyladěný pro neznámou zemi původu.

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

const client = new TextAnalysisClient("<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.analyze("LanguageDetection", 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();

Analýza zdravotní péče

Analýza zdravotní péče identifikuje zdravotnické subjekty. Například při zadávání textu "Předepisuje se 100mgmg, brát dvakrát denně", vrátí služba "100mg" kategorizovaný jako Dávkování, "latence" jako DrugName a "dvakrát denně" jako Frequency.

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

const client = new TextAnalysisClient("<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 actions: AnalyzeBatchAction[] = [
    {
      kind: "Healthcare",
    },
  ];
  const poller = await client.beginAnalyzeBatch(actions, documents, "en");
  const results = await poller.pollUntilDone();
  for await (const actionResult of results) {
    if (actionResult.kind !== "Healthcare") {
      throw new Error(`Expected a healthcare results but got: ${actionResult.kind}`);
    }
    if (actionResult.error) {
      const { code, message } = actionResult.error;
      throw new Error(`Unexpected error (${code}): ${message}`);
    }
    for (const result of actionResult.results) {
      console.log(`- Document ${result.id}`);
      if (result.error) {
        const { code, message } = result.error;
        throw new Error(`Unexpected error (${code}): ${message}`);
      }
      console.log("\tRecognized Entities:");
      for (const entity of result.entities) {
        console.log(`\t- Entity "${entity.text}" of type ${entity.category}`);
        if (entity.dataSources.length > 0) {
          console.log("\t and it can be referenced in the following data sources:");
          for (const ds of entity.dataSources) {
            console.log(`\t\t- ${ds.name} with Entity ID: ${ds.entityId}`);
          }
        }
      }
    }
  }
}

main();

Extrahovaná sumarizace

Extrahovaná sumarizace identifikuje věty, které shrnují článek, do kterého patří.

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

const client = new TextAnalysisClient("<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 actions: AnalyzeBatchAction[] = [
    {
      kind: "ExtractiveSummarization",
      maxSentenceCount: 2,
    },
  ];
  const poller = await client.beginAnalyzeBatch(actions, documents, "en");
  const results = await poller.pollUntilDone();

  for await (const actionResult of results) {
    if (actionResult.kind !== "ExtractiveSummarization") {
      throw new Error(`Expected extractive summarization results but got: ${actionResult.kind}`);
    }
    if (actionResult.error) {
      const { code, message } = actionResult.error;
      throw new Error(`Unexpected error (${code}): ${message}`);
    }
    for (const result of actionResult.results) {
      console.log(`- Document ${result.id}`);
      if (result.error) {
        const { code, message } = result.error;
        throw new Error(`Unexpected error (${code}): ${message}`);
      }
      console.log("Summary:");
      console.log(result.sentences.map((sentence) => sentence.text).join("\n"));
    }
  }
}

main();

Vlastní rozpoznávání entit

Rozpoznávání a kategorizace entit v textu jako entit pomocí vlastních modelů detekce entit vytvořených pomocí nástroje Azure Language Studio

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

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

const documents = [
  "We love this trail and make the trip every year. The views are breathtaking and well worth the hike! Yesterday was foggy though, so we missed the spectacular views. We tried again today and it was amazing. Everyone in my family liked the trail although it was too challenging for the less athletic among us.",
  "Last week we stayed at Hotel Foo to celebrate our anniversary. The staff knew about our anniversary so they helped me organize a little surprise for my partner. The room was clean and with the decoration I requested. It was perfect!",
];

async function main() {
  const actions: AnalyzeBatchAction[] = [
    {
      kind: "CustomEntityRecognition",
      deploymentName,
      projectName,
    },
  ];
  const poller = await client.beginAnalyzeBatch(actions, documents, "en");
  for await (const actionResult of results) {
    if (actionResult.kind !== "CustomEntityRecognition") {
      throw new Error(`Expected a CustomEntityRecognition results but got: ${actionResult.kind}`);
    }
    if (actionResult.error) {
      const { code, message } = actionResult.error;
      throw new Error(`Unexpected error (${code}): ${message}`);
    }
    for (const result of actionResult.results) {
      console.log(`- Document ${result.id}`);
      if (result.error) {
        const { code, message } = result.error;
        throw new Error(`Unexpected error (${code}): ${message}`);
      }
      console.log("\tRecognized Entities:");
      for (const entity of result.entities) {
        console.log(`\t- Entity "${entity.text}" of type ${entity.category}`);
      }
    }
  }
}

main();

Vlastní klasifikace bez přípony

Klasifikujte dokumenty pomocí vlastních modelů bez přípon vytvořených pomocí nástroje Azure Language Studio.

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

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

const documents = [
  "The plot begins with a large group of characters where everyone thinks that the two main ones should be together but foolish things keep them apart. Misunderstandings, miscommunication, and confusion cause a series of humorous situations.",
];

async function main() {
  const actions: AnalyzeBatchAction[] = [
    {
      kind: "CustomSingleLabelClassification",
      deploymentName,
      projectName,
    },
  ];
  const poller = await client.beginAnalyzeBatch(actions, documents, "en");
  const results = await poller.pollUntilDone();

  for await (const actionResult of results) {
    if (actionResult.kind !== "CustomSingleLabelClassification") {
      throw new Error(
        `Expected a CustomSingleLabelClassification results but got: ${actionResult.kind}`
      );
    }
    if (actionResult.error) {
      const { code, message } = actionResult.error;
      throw new Error(`Unexpected error (${code}): ${message}`);
    }
    for (const result of actionResult.results) {
      console.log(`- Document ${result.id}`);
      if (result.error) {
        const { code, message } = result.error;
        throw new Error(`Unexpected error (${code}): ${message}`);
      }
      console.log(`\tClassification: ${result.classification.category}`);
    }
  }
}

main();

Vlastní klasifikace s více popisky

Klasifikujte dokumenty pomocí vlastních modelů s více popisky vytvořených pomocí nástroje Azure Language Studio.

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

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

const documents = [
  "The plot begins with a large group of characters where everyone thinks that the two main ones should be together but foolish things keep them apart. Misunderstandings, miscommunication, and confusion cause a series of humorous situations.",
];

async function main() {
  const actions: AnalyzeBatchAction[] = [
    {
      kind: "CustomMultiLabelClassification",
      deploymentName,
      projectName,
    },
  ];
  const poller = await client.beginAnalyzeBatch(actions, documents, "en");
  const results = await poller.pollUntilDone();

  for await (const actionResult of results) {
    if (actionResult.kind !== "CustomMultiLabelClassification") {
      throw new Error(
        `Expected a CustomMultiLabelClassification results but got: ${actionResult.kind}`
      );
    }
    if (actionResult.error) {
      const { code, message } = actionResult.error;
      throw new Error(`Unexpected error (${code}): ${message}`);
    }
    for (const result of actionResult.results) {
      console.log(`- Document ${result.id}`);
      if (result.error) {
        const { code, message } = result.error;
        throw new Error(`Unexpected error (${code}): ${message}`);
      }
      console.log(`\tClassification:`);
      for (const classification of result.classifications) {
        console.log(`\t\t-category: ${classification.category}`);
      }
    }
  }
}

main();

Dávkování akcí

Použije více akcí na každý vstupní dokument v jedné žádosti o služby.

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

const client = new TextAnalysisClient("<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: AnalyzeBatchAction[] = [
    {
      kind: "EntityRecognition",
      modelVersion: "latest",
    },
    {
      kind: "PiiEntityRecognition",
      modelVersion: "latest",
    },
    {
      kind: "KeyPhraseExtraction",
      modelVersion: "latest",
    },
  ];
  const poller = await client.beginAnalyzeBatch(actions, documents, "en");
  const actionResults = await poller.pollUntilDone();
  for await (const actionResult of actionResults) {
    if (actionResult.error) {
      const { code, message } = actionResult.error;
      throw new Error(`Unexpected error (${code}): ${message}`);
    }
    switch (actionResult.kind) {
      case "KeyPhraseExtraction": {
        for (const doc of actionResult.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);
          }
        }
        break;
      }
      case "EntityRecognition": {
        for (const doc of actionResult.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);
          }
        }
        break;
      }
      case "PiiEntityRecognition": {
        for (const doc of actionResult.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);
          }
        }
        break;
      }
      default: {
        throw new Error(`Unexpected action results: ${actionResult.kind}`);
      }
    }
  }
}

main();

Řešení potíží

protokolování

Povolení protokolování může pomoct odhalit užitečné informace o selháních. Pokud chcete zobrazit protokol požadavků a odpovědí HTTP, nastavte proměnnou AZURE_LOG_LEVEL prostředí na info. Případně je možné protokolování povolit za běhu voláním setLogLevel v :@azure/logger

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

setLogLevel("info");

Podrobnější pokyny k povolení protokolů najdete v dokumentaci k balíčkům @azure/protokolovacího nástroje.

Další kroky

Podrobné příklady použití této knihovny najdete v adresáři ukázek .

Přispívání

Pokud chcete přispívat do této knihovny, přečtěte si příručku pro přispívání , kde najdete další informace o tom, jak sestavit a otestovat kód.

Imprese