Udostępnij za pośrednictwem


Biblioteka klienta usługi Azure analiza tekstu dla języka JavaScript — wersja 5.1.0

Azure TextAnalytics to oparta na chmurze usługa, która zapewnia zaawansowane przetwarzanie języka naturalnego w nieprzetworzonym tekście i obejmuje sześć głównych funkcji:

Uwaga: Ten zestaw SDK jest przeznaczony dla interfejsu API usługi Azure analiza tekstu w wersji 3.1.0.

  • Wykrywanie języka
  • Analiza tonacji
  • Wyodrębnianie kluczowych fraz
  • Rozpoznawanie jednostek nazwanych
  • Rozpoznawanie danych osobowych
  • Rozpoznawanie połączonej jednostki
  • Analiza opieki zdrowotnej
  • Obsługa wielu akcji na dokument

Użyj biblioteki klienta, aby:

  • Wykryj, w jakim języku jest napisany tekst wejściowy.
  • Ustal, co klienci myślą o twojej marce lub temacie, analizując nieprzetworzone tekst pod kątem wskazówek dotyczących pozytywnych lub negatywnych tonacji.
  • Automatycznie wyodrębniaj kluczowe frazy, aby szybko identyfikować główne punkty.
  • Identyfikowanie i kategoryzowanie jednostek w tekście jako osób, miejsc, organizacji, daty/godziny, ilości, wartości procentowych, walut, specyficznych dla opieki zdrowotnej i nie tylko.
  • Wykonaj wiele powyższych zadań jednocześnie.

Linki kluczowe:

Wprowadzenie

Obecnie obsługiwane środowiska

Aby uzyskać więcej informacji, zobacz nasze zasady pomocy technicznej .

Wymagania wstępne

Jeśli używasz interfejsu wiersza polecenia platformy Azure, zastąp <your-resource-group-name> wartości i <your-resource-name> własnymi unikatowymi nazwami:

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

Instalowanie pakietu @azure/ai-text-analytics

Zainstaluj bibliotekę klienta usługi Azure analiza tekstu dla języka JavaScript przy użyciu polecenia npm:

npm install @azure/ai-text-analytics

Tworzenie i uwierzytelnianie TextAnalyticsClient

Aby utworzyć obiekt klienta w celu uzyskania dostępu do interfejsu API analiza tekstu, potrzebny endpoint będzie zasób analiza tekstu i element credential. Klient analiza tekstu może użyć poświadczeń usługi Azure Active Directory lub poświadczeń klucza interfejsu API do uwierzytelniania.

Punkt końcowy zasobu analizy tekstu można znaleźć w witrynie Azure Portal lub przy użyciu poniższego fragmentu wiersza polecenia platformy Azure :

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

Używanie klucza interfejsu API

Użyj witryny Azure Portal, aby przejść do zasobu analiza tekstu i pobrać klucz interfejsu API lub użyć poniższego fragmentu kodu interfejsu wiersza polecenia platformy Azure:

Uwaga: Czasami klucz interfejsu API jest określany jako "klucz subskrypcji" lub "klucz interfejsu API subskrypcji".

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

Po utworzeniu klucza interfejsu API i punktu końcowego możesz użyć AzureKeyCredential klasy , aby uwierzytelnić klienta w następujący sposób:

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

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

Używanie poświadczeń usługi Azure Active Directory

W większości przykładów jest używane uwierzytelnianie klucza interfejsu API klienta, ale można również uwierzytelniać się w usłudze Azure Active Directory przy użyciu biblioteki tożsamości platformy Azure. Aby użyć podanego poniżej dostawcy DefaultAzureCredential lub innych dostawców poświadczeń dostarczanych z zestawem Azure SDK, zainstaluj @azure/identity pakiet:

npm install @azure/identity

Należy również zarejestrować nową aplikację usługi AAD i udzielić dostępu do analiza tekstu, przypisując "Cognitive Services User" rolę do jednostki usługi (uwaga: inne role, takie jak "Owner" nie będą udzielać niezbędnych uprawnień, wystarczy "Cognitive Services User" uruchomić przykłady i przykładowy kod).

Ustaw wartości identyfikatora klienta, identyfikatora dzierżawy i klucza tajnego klienta aplikacji usługi AAD jako zmienne środowiskowe: AZURE_CLIENT_ID, , AZURE_CLIENT_SECRETAZURE_TENANT_ID.

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

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

Kluczowe pojęcia

TextAnalyticsClient

TextAnalyticsClientjest podstawowym interfejsem dla deweloperów korzystających z biblioteki klienta analiza tekstu. Zapoznaj się z metodami w tym obiekcie klienta, aby poznać różne funkcje usługi analiza tekstu, do której można uzyskać dostęp.

Dane wejściowe

Dokument reprezentuje pojedynczą jednostkę danych wejściowych, które mają być analizowane przez modele predykcyjne w usłudze analiza tekstu. Operacje podczas TextAnalyticsClient pobierania kolekcji danych wejściowych, które mają być analizowane jako partia. Metody operacji mają przeciążenia, które umożliwiają reprezentowanie danych wejściowych jako ciągi lub jako obiekty z dołączonymi metadanymi.

Na przykład każdy dokument można przekazać jako ciąg w tablicy, np.

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

lub, jeśli chcesz przekazać dokument id dla poszczególnych elementów lub languagecountryHint/, mogą być podane jako lista TextDocumentInput lub DetectLanguageInput w zależności od operacji;

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

Zobacz ograniczenia usługi dotyczące danych wejściowych, w tym limity długości dokumentu, maksymalny rozmiar partii i obsługiwane kodowanie tekstu.

Wartość zwracana

Wartość zwracana odpowiadająca pojedynczemu dokumentowi jest wynikiem pomyślnym lub obiektem błędu. Każda TextAnalyticsClient metoda zwraca heterogeniczną tablicę wyników i błędów, które odpowiadają danym wejściowym według indeksu. Dane wejściowe tekstu i jego wynik będą miały ten sam indeks w kolekcjach danych wejściowych i wynikowych. Kolekcja może również opcjonalnie zawierać informacje o partii wejściowej i sposobie jej przetwarzania statistics w polu.

Wynik, taki jak AnalyzeSentimentResult, jest wynikiem operacji analiza tekstu zawierającej przewidywanie lub przewidywania dotyczące pojedynczego tekstu wejściowego. Typ wyniku operacji może również opcjonalnie zawierać informacje o dokumencie wejściowym i sposobie jego przetwarzania.

Obiekt błędu , TextAnalyticsErrorResultwskazuje, że usługa napotkała błąd podczas przetwarzania dokumentu i zawiera informacje o błędzie.

Obsługa błędów dokumentu

W kolekcji zwracanej przez operację błędy są rozróżniane od pomyślnych odpowiedzi przez obecność error właściwości, która zawiera obiekt wewnętrzny TextAnalyticsError , jeśli wystąpił błąd. W przypadku udanych obiektów wyników ta właściwość jest zawszeundefined.

Aby na przykład odfiltrować wszystkie błędy, można użyć następującego filterpolecenia:

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

Uwaga: użytkownicy języka TypeScript mogą korzystać z lepszego sprawdzania typów obiektów wyników i błędów, jeśli compilerOptions.strictNullChecks jest ustawiona true na tsconfig.json wartość w konfiguracji. Przykład:

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

Ta funkcja została wprowadzona w języku TypeScript 3.2, więc użytkownicy języka TypeScript 3.1 muszą rzutować wartości wyników na odpowiedni wariant powodzenia w następujący sposób:

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

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

Przykłady

Analizowanie tonacji

Przeanalizuj tonację tekstu, aby określić, czy jest to pozytywna, negatywna, neutralna lub mieszana, w tym analiza tonacji na zdanie i wyniki ufności.

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

Aby uzyskać bardziej szczegółowe informacje na temat opinii związanych z aspektami produktu/usługi, znanej również jako Analiza tonacji opartej na aspektach w przetwarzaniu języka naturalnego (NLP), zobacz przykład analizy tonacji z wyszukiwaniem opinii tutaj.

Rozpoznawanie jednostek

Rozpoznawanie i kategoryzowanie jednostek w tekście jako osób, miejsc, organizacji, dat/godzin, ilości, walut itp.

Parametr language jest opcjonalny. Jeśli nie zostanie określony, zostanie użyty domyślny model w języku angielskim.

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

Rozpoznawanie jednostek pii

Istnieje oddzielny punkt końcowy i operacja rozpoznawania danych osobowych (PII) w tekście, takim jak numery ubezpieczenia społecznego, informacje o koncie bankowym, numery kart kredytowych itp. Jego użycie jest bardzo podobne do rozpoznawania jednostek standardowych powyżej:

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

Rozpoznawanie połączonych jednostek

Jednostka "Połączona" to jednostka, która istnieje w baza wiedzy (np. Wikipedia). Operacja recognizeLinkedEntities może uściślać jednostki, określając, który wpis w baza wiedzy prawdopodobnie się odnosi (na przykład w tekście, czy słowo "Mars" odnosi się do planety lub do rzymskiego boga wojny). Połączone jednostki zawierają skojarzone adresy URL do baza wiedzy, które zawierają definicję jednostki.

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

Wyodrębnianie kluczowych fraz

Wyodrębnianie kluczowych fraz identyfikuje główne punkty rozmów w dokumencie. Na przykład, biorąc pod uwagę tekst wejściowy "Jedzenie było pyszne i było wspaniałe personel", usługa zwraca "jedzenie" i "wspaniały personel".

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

Wykrywanie języka

Określanie języka fragmentu tekstu.

Parametr countryHint jest opcjonalny, ale może pomóc usłudze w dostarczaniu poprawnych danych wyjściowych, jeśli kraj pochodzenia jest znany. W przypadku podania należy ustawić go na dwuliterowy kod kraju ISO-3166 Alpha-2 (taki jak "us" dla Stany Zjednoczone lub "jp" dla Japonii) lub wartość "none". Jeśli parametr nie zostanie podany, zostanie użyty domyślny "us" model (Stany Zjednoczone). Jeśli nie znasz kraju pochodzenia dokumentu, należy użyć parametru "none" , a usługa analiza tekstu zastosuje model dostosowany do nieznanego kraju pochodzenia.

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

Analizowanie jednostek opieki zdrowotnej

Analiza opieki zdrowotnej identyfikuje jednostki opieki zdrowotnej. Na przykład, biorąc pod uwagę tekst wejściowy "Przepisane 100mg ibuprofen, podjęte dwa razy dziennie", usługa zwraca "100mg" kategoryzowane jako Dawkowanie, "ibuprofen" jako LekiName i "dwa razy dziennie" jako Częstotliwość.

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

Analizowanie akcji

Analizowanie akcji umożliwia jednoczesne stosowanie wielu analiz (nazwanych akcji).

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

Rozwiązywanie problemów

Rejestrowanie

Włączenie rejestrowania może pomóc odkryć przydatne informacje o błędach. Aby wyświetlić dziennik żądań i odpowiedzi HTTP, ustaw zmienną AZURE_LOG_LEVEL środowiskową na info. Alternatywnie rejestrowanie można włączyć w czasie wykonywania, wywołując setLogLevel polecenie w pliku @azure/logger:

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

setLogLevel("info");

Aby uzyskać bardziej szczegółowe instrukcje dotyczące włączania dzienników, zapoznaj się z dokumentami dotyczącymi pakietów @azure/rejestratora.

Następne kroki

Zapoznaj się z katalogiem samples , aby zapoznać się ze szczegółowymi przykładami dotyczącymi korzystania z tej biblioteki.

Współtworzenie

Jeśli chcesz współtworzyć tę bibliotekę, przeczytaj przewodnik współtworzenia , aby dowiedzieć się więcej na temat tworzenia i testowania kodu.

Wrażenia