Klientská knihovna Azure Analýza textu pro JavaScript – verze 5.1.0

Azure TextAnalytics je cloudová služba, která poskytuje pokročilé zpracování přirozeného jazyka pro nezpracovaný text a zahrnuje šest hlavních funkcí:

Poznámka: Tato sada SDK cílí na rozhraní API služby Azure Analýza textu verze 3.1.0.

  • 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ů
  • Rozpoznávání propojených entit
  • Analýza zdravotní péče
  • 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 Analýza textu pro JavaScript pomocí npmpříkazu :

npm install @azure/ai-text-analytics

Vytvoření a ověření TextAnalyticsClient

K vytvoření objektu klienta pro přístup k rozhraní API Analýza textu budete potřebovat endpoint prostředek Analýza textu a credential. Klient Analýza 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 analýzy textu najdete na webu Azure Portal nebo pomocí následujícího fragmentu kódu Azure CLI :

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

Použití klíče rozhraní API

Pomocí webu Azure Portal přejděte k prostředku Analýza textu 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 { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");

const client = new TextAnalyticsClient("<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 Analýza textu přiřazením "Cognitive Services User" role k instančnímu objektu (poznámka: Jiné role , jako "Owner" jsou, neudělí potřebná oprávnění, stačí spustit "Cognitive Services User" příklady a vzorový kód).

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 { TextAnalyticsClient } = require("@azure/ai-text-analytics");
const { DefaultAzureCredential } = require("@azure/identity");

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

Klíčové koncepty

Klient textových analytických nástrojů

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

Vstup

Dokument představuje jednu jednotku vstupu, kterou mají analyzovat prediktivní modely ve službě Analýza textu. Operace na TextAnalyticsClient 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á TextAnalyticsClient 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ů. Kolekce může také volitelně obsahovat informace o vstupní dávce a způsobu zpracování v statistics poli.

Výsledek, například AnalyzeSentimentResult, je výsledkem operace Analýza textu, která obsahuje předpověď nebo předpovědi o jednom textovém 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, TextAnalyticsErrorResultž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í TextAnalyticsError 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.analyzeSentiment(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.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);
}

Tato funkce byla zavedena v TypeScriptu 3.2, takže uživatelé TypeScriptu 3.1 musí přetypovat výsledné hodnoty na odpovídající variantu úspěchu následujícím způsobem:

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

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

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 { 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();

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 { 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();

Rozpoznávání entit PII

Existuje samostatný koncový bod a operace pro rozpoznává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. Jeho použití je velmi podobné standardnímu rozpoznávání entit výše:

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();

Rozpoznávání propojených entit

Propojená entita je entita, která existuje v znalostní báze (například Wikipedia). Operace recognizeLinkedEntities může rozluštit entity určením toho, na který záznam v znalostní báze pravděpodobně odkazují (například slovo "Mars" v textu 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 { 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();

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 { 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();

Rozpozná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 Analýza textu použije model vyladěný pro neznámou zemi původu.

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();

Analýza zdravotnických entit

Analýza zdravotnictví identifikuje zdravotnické subjekty. Například vstupní text "Předepsané 100mg ibuprofen, užíná dvakrát denně", služba vrátí "100mg" kategorizován jako Dávkování, "ibuprofen" jako DrugName a "dvakrát denně" jako Frekvence.

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();

Analýza akcí

Funkce Analyzovat akce umožňuje použití více analýz (pojmenovaných akcí) najednou.

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();

Ř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 samples .

Přispívání

Pokud chcete přispívat do této knihovny, přečtěte si prosím průvodce přispívání , kde se dozvíte více o tom, jak sestavit a otestovat kód.

Imprese