Megosztás a következőn keresztül:


Azure Text Analytics JavaScript ügyfélkódtár – 5.1.0-s verzió

Az Azure TextAnalytics egy felhőalapú szolgáltatás, amely fejlett természetes nyelvi feldolgozást biztosít nyers szövegeken keresztül, és hat fő funkciót tartalmaz:

Megjegyzés: Ez az SDK az Azure Text Analytics service API 3.1.0-s verzióját célozza meg.

  • Nyelvfelismerés
  • Hangulatelemzés
  • Kulcskifejezések kinyerése
  • Megnevezett entitások felismerése
  • Személyazonosításra alkalmas adatok elismerése
  • Csatolt entitások felismerése
  • Egészségügyi elemzés
  • Dokumentumonként több művelet támogatása

Az ügyfélkódtár használatával:

  • A szövegbeviteli szöveg észlelése.
  • A pozitív vagy negatív hangulatra utaló jelek nyers szövegének elemzésével meghatározhatja, hogy az ügyfelek mit gondolnak az Ön márkájáról vagy témájáról.
  • Automatikusan kinyeri a kulcskifejezéseket, ezzel gyorsan azonosítva a szöveg mondanivalójának fő pontjait.
  • Azonosíthatja és kategorizálhatja a szövegben szereplő entitásokat személyek, helyek, szervezetek, dátum/idő, mennyiségek, százalékok, pénznemek, egészségügyi szolgáltatások és egyebek szerint.
  • A fenti feladatok közül egyszerre több végrehajtása.

Főbb hivatkozások:

Első lépések

Jelenleg támogatott környezetek

További részletekért tekintse meg támogatási szabályzatunkat .

Előfeltételek

Ha az Azure CLI-t használja, cserélje le <your-resource-group-name> a és <your-resource-name> nevet a saját egyedi nevére:

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

Telepítse a(z) @azure/ai-text-analytics csomagot

Telepítse a JavaScripthez készült Azure Text Analytics ügyfélkódtárat a következővelnpm:

npm install @azure/ai-text-analytics

Hozzon létre és hitelesítsen egy TextAnalyticsClient

Ahhoz, hogy létrehozhasson egy ügyfélobjektumot a Text Analytics API eléréséhez, szüksége lesz a endpoint Text Analytics erőforrásra és egy credential. Az Text Analytics-ügyfél azure Active Directory-hitelesítő adatokat vagy API-kulcs hitelesítő adatait használhatja a hitelesítéshez.

A szövegelemzési erőforrás végpontját az Azure Portalon vagy az alábbi Azure CLI-kódrészlettel találja meg:

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

API-kulcs használata

Az Azure Portalon keresse meg a Text Analytics erőforrást, és kérjen le egy API-kulcsot, vagy használja az alábbi Azure CLI-kódrészletet:

Megjegyzés: Néha az API-kulcsot "előfizetői azonosítónak" vagy "előfizetési API-kulcsnak" is nevezik.

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

Miután rendelkezik API-kulccsal és végpontokkal, a AzureKeyCredential osztály használatával hitelesítheti az ügyfelet az alábbiak szerint:

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

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

Azure Active Directory-hitelesítő adatok használata

A legtöbb példában ügyfél API-kulcsos hitelesítést használunk, de az Azure Active Directoryval is végezhet hitelesítést az Azure Identity Library használatával. Az alább látható DefaultAzureCredential szolgáltató vagy az Azure SDK-hoz biztosított egyéb hitelesítőadat-szolgáltatók használatához telepítse a @azure/identity csomagot:

npm install @azure/identity

Új AAD-alkalmazást is regisztrálnia kell, és hozzáférést kell adnia a Text Analytics a szerepkörnek a "Cognitive Services User" szolgáltatásnévhez való hozzárendelésével (megjegyzés: más szerepkörök, például "Owner" nem biztosítják a szükséges engedélyeket, csak "Cognitive Services User" elegendő a példák és a mintakód futtatásához).

Állítsa be az AAD-alkalmazás ügyfél-azonosítójának, bérlőazonosítójának és titkos ügyfélkulcsának értékeit környezeti változóként: 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());

Fő fogalmak

TextAnalyticsClient

TextAnalyticsClienta Text Analytics ügyfélkódtárat használó fejlesztők elsődleges felülete. Az ügyfélobjektum metódusainak megismerése az Text Analytics szolgáltatás különböző elérhető funkcióinak megismeréséhez.

Bevitel

A dokumentumok egyetlen bemeneti egységet jelölnek, amelyet a prediktív modellek elemeznek a Text Analytics szolgáltatásban. TextAnalyticsClient A műveletek kötegként elemezendő bemenetek gyűjteményét hajtják végre. A műveleti metódusok túlterheléssel rendelkeznek, amelyek lehetővé teszik, hogy a bemenetek sztringekként vagy csatolt metaadatokat tartalmazó objektumokként jelenjenek meg.

Például minden dokumentum átadható sztringként egy tömbben, például:

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

vagy ha egy elemenkénti dokumentumot vagy dokumentumot idlanguagecountryHint/szeretne átadni, azok a művelet listájában TextDocumentInput vagy DetectLanguageInput attól függően adhatóak meg;

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

Tekintse meg a bemenet szolgáltatási korlátozásait , beleértve a dokumentum hosszának korlátozásait, a köteg maximális méretét és a támogatott szövegkódolásokat.

Visszatérési érték

Az egyetlen dokumentumnak megfelelő visszatérési érték vagy sikeres eredmény vagy hibaobjektum. Minden TextAnalyticsClient metódus egy heterogén eredmény- és hibatömböt ad vissza, amely megfelel az index által megadott bemeneteknek. A szövegbevitel és annak eredménye ugyanazzal az indexszel fog rendelkezni a bemenetben és az eredménygyűjteményekben. A gyűjtemény opcionálisan információkat is tartalmazhat a bemeneti kötegről és a mező feldolgozásának statistics módjáról.

Az eredmény (például AnalyzeSentimentResult) egy Text Analytics művelet eredménye, amely egyetlen szöveges bemenetre vonatkozó előrejelzést vagy előrejelzéseket tartalmaz. A műveletek eredménytípusa opcionálisan információkat is tartalmazhat a bemeneti dokumentumról és a feldolgozás módjáról.

A hibaobjektum () azt jelzi, TextAnalyticsErrorResulthogy a szolgáltatás hibát észlelt a dokumentum feldolgozása során, és információkat tartalmaz a hibáról.

Dokumentumhibák kezelése

A művelet által visszaadott gyűjteményben a hibákat a tulajdonság jelenléte különbözteti meg a error sikeres válaszoktól, amely hiba esetén a belső TextAnalyticsError objektumot tartalmazza. Sikeres eredményobjektumok esetén ez a tulajdonság mindigundefined az.

Az összes hiba kiszűréséhez például használhatja a következőt filter:

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

Megjegyzés: A TypeScript-felhasználók jobban kihasználhatják az eredmény- és hibaobjektumok típusellenőrzését, ha compilerOptions.strictNullChecks a tsconfig.json konfigurációban be van állítvatrue. Például:

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

Ezt a képességet a TypeScript 3.2-ben vezették be, így a TypeScript 3.1 felhasználóinak az alábbi módon kell eredményértékeket leadniuk a megfelelő sikervariánsukra:

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

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

Példák

Hangulat elemzése

Elemezze a szöveg hangulatát annak megállapításához, hogy pozitív, negatív, semleges vagy vegyes-e, beleértve a mondatonkénti hangulatelemzést és a megbízhatósági pontszámokat.

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

Ha részletesebb információkat szeretne kapni egy termék/szolgáltatás aspektusaival kapcsolatos véleményekről, más néven aspektusalapú hangulatelemzés a természetes nyelvi feldolgozásban (NLP), tekintse meg az itt található véleménybányászattal kapcsolatos véleményelemzési mintát.

Entitások felismerése

A szövegben szereplő entitások felismerése és kategorizálása személyként, helyként, szervezetként, dátumként/időpontként, mennyiségként, pénznemként stb.

A language paraméter megadása nem kötelező. Ha nincs megadva, a rendszer az alapértelmezett angol modellt használja.

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-entitások felismerése

Van egy külön végpont és művelet a személyazonosításra alkalmas adatok (PII) szövegben való felismerésére, például társadalombiztosítási számok, bankszámlaadatok, hitelkártyaszámok stb. Használata nagyon hasonló a fenti standard entitásfelismeréshez:

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

Csatolt entitások felismerése

A "csatolt" entitás olyan entitás, amely egy tudásbázis (például a Wikipédiában) létezik. A recognizeLinkedEntities művelet egyértelműsítheti az entitásokat azáltal, hogy meghatározza, hogy egy tudásbázis mely bejegyzésére hivatkoznak (például egy szövegben a "Mars" szó a bolygóra vagy a római háború istenére utal). A csatolt entitások az entitás definícióját biztosító tudásbázis társított URL-címeit tartalmazzák.

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

Kulcsszavak keresése

A kulcskifejezések kinyerése azonosítja a dokumentum fő beszélgetési pontjait. Például a "Az étel finom volt, és csodálatos személyzet volt", a szolgáltatás "ételt" és "csodálatos személyzetet" ad vissza.

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

Nyelvfelismerés

Egy szöveg nyelvének meghatározása.

A countryHint paraméter nem kötelező, de segíthet a szolgáltatásnak a megfelelő kimenet biztosításában, ha a származási ország ismert. Ha meg van adva, akkor egy ISO-3166 Alpha-2 kétbetűs országkódra (például "us" értékre kell állítani a japán Egyesült Államok vagy "jp" értékre) vagy értékre"none". Ha a paraméter nincs megadva, akkor a rendszer az alapértelmezett "us" (Egyesült Államok) modellt használja. Ha nem ismeri a dokumentum származási országát, akkor a paramétert "none" kell használni, és a Text Analytics szolgáltatás egy ismeretlen származási országra hangolt modellt alkalmaz.

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

Egészségügyi entitások elemzése

Az egészségügyi elemzés azonosítja az egészségügyi entitásokat. Például az "Előírt 100mg ibuprofen, naponta kétszer" beviteli szöveg alapján a szolgáltatás "100mg" besorolást ad vissza Adagolás, az "ibuprofen" a MedicationName, a "kétszer naponta" pedig Gyakoriság.

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

Műveletek elemzése

Az elemzési műveletek egyszerre több elemzés (elnevezett művelet) alkalmazását teszik lehetővé.

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

Hibaelhárítás

Naplózás

A naplózás engedélyezése segíthet a hibákról szóló hasznos információk feltárásában. A HTTP-kérések és válaszok naplójának megtekintéséhez állítsa a környezeti változót a AZURE_LOG_LEVEL értékre info. A naplózás futásidőben is engedélyezhető a következő hívással setLogLevel@azure/logger:

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

setLogLevel("info");

A naplók engedélyezésére vonatkozó részletesebb útmutatásért tekintse meg a @azure/logger csomag dokumentációt.

Következő lépések

A kódtár használatára vonatkozó részletes példákért tekintse meg a mintakönyvtárat.

Közreműködés

Ha hozzá szeretne járulni ehhez a kódtárhoz, olvassa el a közreműködői útmutatót , amelyből többet is megtudhat a kód összeállításáról és teszteléséről.

Megjelenések