Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Azure Cognitive Service for Language to usługa oparta na chmurze, która zapewnia zaawansowane przetwarzanie języka naturalnego w nieprzetworzonym tekście i obejmuje następujące główne funkcje:
Uwaga: Ten zestaw SDK jest przeznaczony dla usługi Azure Cognitive Service dla interfejsu API języka w wersji 2022-04-01-preview.
- Wykrywanie języka
- Analiza tonacji
- Wyodrębnianie kluczowych fraz
- Rozpoznawanie jednostek nazwanych
- Rozpoznawanie danych osobowych
- Łączenie jednostek
- Analiza opieki zdrowotnej
- Podsumowanie wyodrębniające
- Niestandardowe rozpoznawanie jednostek
- Niestandardowa klasyfikacja dokumentów
- Obsługa wielu akcji na dokument
Użyj biblioteki klienta, aby:
- Wykryj, w jakim języku jest zapisywany tekst wejściowy.
- Określ, 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.
Kluczowe linki:
Wprowadzenie
Obecnie obsługiwane środowiska
- Wersje ltS Node.js
- Najnowsze wersje przeglądarek Safari, Chrome, Edge i Firefox.
Aby uzyskać więcej informacji, zobacz nasze zasady pomocy technicznej .
Wymagania wstępne
- Subskrypcja platformy Azure.
- Istniejący zasób usług Cognitive Services lub Language. Jeśli musisz utworzyć zasób, możesz użyć witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure.
Jeśli używasz interfejsu wiersza polecenia platformy Azure, zastąp <your-resource-group-name>
ciąg 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 analizy tekstu platformy Azure dla języka JavaScript przy użyciu polecenia npm
:
npm install @azure/ai-text-analytics
Tworzenie i uwierzytelnianie TextAnalysisClient
Aby utworzyć obiekt klienta w celu uzyskania dostępu do interfejsu API języka, potrzebny endpoint
będzie zasób Language i .credential
Klient analizy tekstu może używać poświadczeń usługi Azure Active Directory lub poświadczeń klucza interfejsu API do uwierzytelniania.
Punkt końcowy zasobu Language 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 "properties.endpoint"
Używanie klucza interfejsu API
Użyj witryny Azure Portal , aby przejść do zasobu Language i pobrać klucz interfejsu API lub użyć poniższego fragmentu kodu interfejsu wiersza polecenia platformy Azure :
Uwaga: Czasami klucz interfejsu API jest nazywany "kluczem subskrypcji" lub "kluczem interfejsu API subskrypcji".
az cognitiveservices account keys list --resource-group <your-resource-group-name> --name <your-resource-name>
Po utworzeniu klucza interfejsu AzureKeyCredential
API i punktu końcowego możesz użyć klasy do uwierzytelnienia klienta w następujący sposób:
const { TextAnalysisClient, AzureKeyCredential } = require("@azure/ai-text-analytics");
const client = new TextAnalysisClient("<endpoint>", new AzureKeyCredential("<API key>"));
Używanie poświadczeń usługi Azure Active Directory
Uwierzytelnianie klucza interfejsu API klienta jest używane w większości przykładów, ale można również uwierzytelnić się w usłudze Azure Active Directory przy użyciu biblioteki tożsamości platformy Azure. Aby użyć poniższego dostawcy DefaultAzureCredential lub innych dostawców poświadczeń dostarczonych 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 języka, 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 wpisu tajnego klienta aplikacji usługi AAD jako zmienne środowiskowe: AZURE_CLIENT_ID
, , AZURE_CLIENT_SECRET
AZURE_TENANT_ID
.
const { TextAnalysisClient } = require("@azure/ai-text-analytics");
const { DefaultAzureCredential } = require("@azure/identity");
const client = new TextAnalysisClient("<endpoint>", new DefaultAzureCredential());
Kluczowe pojęcia
TextAnalysisClient
TextAnalysisClient
jest podstawowym interfejsem dla deweloperów korzystających z biblioteki klienta analizy tekstu. Zapoznaj się z metodami w tym obiekcie klienta, aby zrozumieć różne funkcje usługi językowej, do których możesz uzyskać dostęp.
Dane wejściowe
Dokument reprezentuje jedną jednostkę danych wejściowych do analizy przez modele predykcyjne w usłudze językowej. Operacje dotyczące TextAnalysisClient
pobierania kolekcji danych wejściowych, które mają być analizowane jako partia. Metody operacji mają przeciążenia, które umożliwiają reprezentację danych wejściowych jako ciągi lub 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
na element lub language
countryHint
/, mogą one 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
Zwracana wartość odpowiadająca pojedynczemu dokumentowi jest wynikiem pomyślnym lub obiektem błędu. Każda TextAnalysisClient
metoda zwraca heterogeniczną tablicę wyników i błędów odpowiadających danych wejściowych według indeksu. Dane wejściowe tekstu i jego wynik będą miały ten sam indeks w kolekcjach danych wejściowych i wynikowych.
Wynik, taki jak SentimentAnalysisResult
, jest wynikiem operacji języka 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 , wskazuje, TextAnalysisErrorResult
że usługa napotkała błąd podczas przetwarzania dokumentu i zawiera informacje o błędzie.
Obsługa błędów dokumentu
W kolekcji zwróconej przez operację błędy są rozróżniane od pomyślnych odpowiedzi przez obecność error
właściwości, która zawiera obiekt wewnętrzny TextAnalysisError
, jeśli wystąpił błąd. W przypadku obiektów wyników zakończonych powodzeniem ta właściwość jest zawszeundefined
.
Aby na przykład odfiltrować wszystkie błędy, można użyć następującego filter
polecenia:
const results = await client.analyze("SentimentAnalysis", 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 na true
w tsconfig.json
konfiguracji. Przykład:
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);
}
Przykłady
Analiza tonacji
Przeanalizuj tonację tekstu, aby określić, czy jest dodatnia, negatywna, neutralna lub mieszana, w tym analiza tonacji na zdanie i wyniki ufności.
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();
Aby uzyskać bardziej szczegółowe informacje o opiniach związanych z aspektami produktu/usługi, znany 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 angielski.
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();
Rozpoznawanie jednostek PII
Istnieje osobna akcja 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 powyższego rozpoznawania jednostek standardowych:
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();
Łączenie jednostek
Jednostka "Połączona" to jednostka, która istnieje w baza wiedzy (na przykład Wikipedia). Akcja EntityLinking
może uściślać jednostki, określając, który wpis w baza wiedzy prawdopodobnie się odwołuje (na przykład w kawałku tekstu, 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 udostępniają definicję jednostki.
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();
Wyodrębnianie kluczowych fraz
Wyodrębnianie kluczowych fraz identyfikuje główne punkty rozmów w dokumencie. Na przykład podany tekst wejściowy "Jedzenie było pyszne i były wspaniałe personel", usługa zwraca "jedzenie" i "wspaniały personel".
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();
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ć 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 językowa zastosuje model dostosowany do nieznanego kraju pochodzenia.
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();
Analiza 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 {
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();
Podsumowanie wyodrębniania
Podsumowanie wyodrębniane identyfikuje zdania podsumowujące artykuł, do którego należą.
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();
Niestandardowe rozpoznawanie jednostek
Rozpoznawanie i kategoryzowanie jednostek w tekście jako jednostek przy użyciu niestandardowych modeli wykrywania jednostek utworzonych przy użyciu programu 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();
Niestandardowa klasyfikacja z pojedynczą etykietą
Klasyfikowanie dokumentów przy użyciu niestandardowych modeli z pojedynczą etykietą utworzonych przy użyciu usługi 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();
Niestandardowa klasyfikacja wielu etykiet
Klasyfikowanie dokumentów przy użyciu niestandardowych modeli z wieloma etykietami utworzonych przy użyciu usługi 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();
Przetwarzanie wsadowe akcji
Stosuje wiele akcji dla każdego dokumentu wejściowego w jednym żądaniu obsługi.
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();
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.
Powiązane projekty
Azure SDK for JavaScript