JavaScript için Azure Metin Analizi istemci kitaplığı - sürüm 6.0.0-beta.1

Dil için Azure Bilişsel Hizmet , ham metin üzerinde gelişmiş doğal dil işleme sağlayan ve aşağıdaki ana özellikleri içeren bulut tabanlı bir hizmettir:

Not: Bu SDK, Dil API'si sürüm 2022-04-01-preview için Azure Bilişsel Hizmet'i hedefler.

  • Dil Algılama
  • Yaklaşım Analizi
  • Anahtar İfade Ayıklama
  • Adlandırılmış Varlık Tanıma
  • Kişisel Bilgilerin Tanınması
  • Varlık Bağlama
  • Sağlık Analizi
  • Ayıklayıcı Özetleme
  • Özel Varlık Tanıma
  • Özel Belge Sınıflandırması
  • Belge Başına Birden Çok Eylemi Destekleme

İstemci kitaplığını kullanarak:

  • Hangi dil giriş metninin yazıldıklarını algılama.
  • Pozitif veya negatif yaklaşımla ilgili ipuçları için ham metni analiz ederek müşterilerin markanız veya konunuz hakkında ne düşündüğünü belirleyin.
  • Anahtar ifadeleri otomatik olarak ayıklayarak metnin önemli noktalarını hızla belirleyin.
  • Metninizdeki varlıkları kişiler, yerler, kuruluşlar, tarih/saat, miktarlar, yüzdeler, para birimleri, sağlık hizmetleri ve daha fazlası olarak tanımlayın ve kategorilere ayırın.
  • Yukarıdaki görevlerin birden çokunu aynı anda gerçekleştirin.

Önemli bağlantılar:

Başlarken

Şu anda desteklenen ortamlar

Daha fazla ayrıntı için destek ilkemize bakın.

Önkoşullar

Azure CLI kullanıyorsanız ve <your-resource-name> yerine kendi benzersiz adlarınızı yazın<your-resource-group-name>:

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

@azure/ai-text-analytics paketini yükleyin

ile npmJavaScript için Azure Metin Analizi istemci kitaplığını yükleyin:

npm install @azure/ai-text-analytics

Oluşturma ve kimlik doğrulaması TextAnalysisClient

Dil API'sine erişmek üzere bir istemci nesnesi oluşturmak için Dil kaynağınızın ve değerinin credentialolması gerekirendpoint. Metin Analizi istemcisi kimlik doğrulaması için Azure Active Directory kimlik bilgilerini veya API anahtarı kimlik bilgilerini kullanabilir.

Dil kaynağınızın uç noktasını Azure Portal'da veya aşağıdaki Azure CLI kod parçacığını kullanarak bulabilirsiniz:

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

API Anahtarı Kullanma

Azure Portal'ı kullanarak Dil kaynağınıza göz atın ve bir API anahtarı alın veya aşağıdaki Azure CLI parçacığını kullanın:

Not: Bazen API anahtarına "abonelik anahtarı" veya "abonelik API anahtarı" denir.

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

API anahtarınız ve uç noktanız olduktan sonra, istemcinin kimliğini doğrulamak için sınıfını AzureKeyCredential aşağıdaki gibi kullanabilirsiniz:

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

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

Azure Active Directory Kimlik Bilgilerini Kullanma

İstemci API anahtarı kimlik doğrulaması örneklerin çoğunda kullanılır, ancak Azure Kimlik kitaplığını kullanarak Azure Active Directory ile de kimlik doğrulaması yapabilirsiniz. Aşağıda gösterilen DefaultAzureCredential sağlayıcısını veya Azure SDK ile sağlanan diğer kimlik bilgileri sağlayıcılarını kullanmak için lütfen paketi yükleyin @azure/identity :

npm install @azure/identity

Ayrıca yeni bir AAD uygulaması kaydetmeniz ve rolü hizmet sorumlunuza atayarak "Cognitive Services User" Dile erişim vermeniz gerekir (not: gerekli izinleri vermemesi gibi "Owner" diğer roller, yalnızca "Cognitive Services User" örnekleri ve örnek kodu çalıştırmak için yeterli olacaktır).

AAD uygulamasının istemci kimliği, kiracı kimliği ve istemci gizli dizisi değerlerini ortam değişkenleri olarak ayarlayın: 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());

Önemli kavramlar

TextAnalysisClient

TextAnalysisClient Metin Analizi istemci kitaplığını kullanan geliştiriciler için birincil arabirimdir. Dil hizmetinin erişebileceğiniz farklı özelliklerini anlamak için bu istemci nesnesinde yöntemleri keşfedin.

Giriş

Belge, Dil hizmetindeki tahmine dayalı modeller tarafından analiz edilecek tek bir giriş birimini temsil eder. üzerindeki TextAnalysisClient işlemler toplu iş olarak analiz edilecek bir giriş koleksiyonu alır. İşlem yöntemleri, girişlerin dize olarak veya ekli meta verileri olan nesneler olarak temsil edilmesine olanak sağlayan aşırı yüklemelere sahiptir.

Örneğin, her belge bir dizide bir dize olarak geçirilebilir; örneğin

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

veya öğe başına bir belge id veya languagecountryHint/geçirmek isterseniz, bu belgelere bir liste TextDocumentInput olarak veya DetectLanguageInput işleme bağlı olarak verilebilir;

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

Belge uzunluğu sınırları, maksimum toplu iş boyutu ve desteklenen metin kodlamaları dahil olmak üzere giriş için hizmet sınırlamalarına bakın.

Dönüş Değeri

Tek bir belgeye karşılık gelen dönüş değeri başarılı bir sonuç veya hata nesnesidir. Her TextAnalysisClient yöntem, dizine göre girişlere karşılık gelen heterojen bir sonuç ve hata dizisi döndürür. Metin girişi ve sonucu giriş ve sonuç koleksiyonlarında aynı dizine sahip olur.

gibi SentimentAnalysisResultbir sonuç, tek bir metin girişi hakkında tahmin veya tahmin içeren Bir Dil işleminin sonucudur. İşlemin sonuç türü isteğe bağlı olarak giriş belgesi ve nasıl işlendiği hakkında bilgi de içerebilir.

hata nesnesi, TextAnalysisErrorResulthizmetin belgeyi işlerken bir hatayla karşılaştığını ve hata hakkında bilgi içerdiğini gösterir.

Belge Hata İşleme

Bir işlem tarafından döndürülen koleksiyonda hatalar, hatayla karşılaşıldığında iç TextAnalysisError nesneyi içeren özelliğin error varlığıyla başarılı yanıtlardan ayırt edilir. Başarılı sonuç nesneleri için bu özellik her zamanundefined şeklindedir.

Örneğin, tüm hataları filtrelemek için aşağıdakini filterkullanabilirsiniz:

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

Not: TypeScript kullanıcıları, yapılandırmada olarak ayarlandıysa compilerOptions.strictNullCheckstrue sonuç ve hata nesnelerinin daha iyi tür denetiminden tsconfig.json yararlanabilir. Örnek:

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

Örnekler

Yaklaşım Analizi

Tümce başına yaklaşım analizi ve güvenilirlik puanları dahil olmak üzere metnin pozitif, negatif, nötr veya karışık olup olmadığını belirlemek için metnin yaklaşımını analiz edin.

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

Doğal Dil İşlemede En Boy Tabanlı Yaklaşım Analizi (NLP) olarak da bilinen bir ürünün/hizmetin yönleriyle ilgili görüşler hakkında daha ayrıntılı bilgi edinmek için burada fikir madenciliği ile yaklaşım analizi örneğine bakın.

Varlık Tanıma

Metindeki varlıkları kişiler, yerler, kuruluşlar, tarihler/saatler, miktarlar, para birimleri vb. olarak tanıyıp kategorilere ayırın.

language parametresi isteğe bağlıdır. Belirtilmezse, varsayılan İngilizce modeli kullanılır.

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

PII Varlık Tanıma

Sosyal Güvenlik Numaraları, banka hesabı bilgileri, kredi kartı numaraları gibi metinlerde Kişisel Bilgileri (PII) tanımak için ayrı bir eylem vardır. Kullanımı yukarıdaki standart varlık tanımaya çok benzer:

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

Varlık Bağlama

"Bağlı" varlık, bir bilgi bankası (Wikipedia gibi) bulunan varlıktır. Eylem, EntityLinking bir bilgi bankası büyük olasılıkla hangi girişe başvuracaklarını belirleyerek varlıkları kesinleştirebilir (örneğin, bir metin parçasında, "Mars" sözcüğü gezegene veya Roma savaş tanrısına başvuruyor). Bağlı varlıklar, varlığın tanımını sağlayan bilgi bankası ilişkili URL'ler içerir.

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

Anahtar İfade Ayıklama

Anahtar İfade ayıklama, belgedeki ana konuşma noktalarını tanımlar. Örneğin, "Yemek lezzetli ve harika personel vardı" giriş metni ver alındığında, hizmet "yemek" ve "harika personel" döndürür.

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

Dil Algılama

Metin parçasının dilini belirleme.

countryHint parametresi isteğe bağlıdır, ancak kaynak ülke biliniyorsa doğru çıkışın sağlanmasında hizmete yardımcı olabilir. Sağlanırsa, iso-3166 Alfa-2 iki harfli ülke koduna (Birleşik Devletler için "bize" veya Japonya için "jp" gibi) veya değerine "none"ayarlanmalıdır. Parametre sağlanmazsa varsayılan "us" (Birleşik Devletler) model kullanılır. Belgenin çıkış noktasını bilmiyorsanız parametresi "none" kullanılmalıdır ve Dil hizmeti bilinmeyen bir kaynak ülke için ayarlanmış bir model uygular.

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

Sağlık Analizi

Sağlık analizi, sağlık varlıklarını tanımlar. Örneğin, "Reçeteli 100mg ibuprofen, günde iki kez alındı" giriş metni verildiğinde, hizmet Dozaj, "ibuprofen", MedicationName olarak "ibuprofen" ve Frequency olarak "günde iki kez" olarak kategorilere ayrılmış "100mg" döndürür.

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

Ayıklayıcı Özetleme

Ayıklayıcı özetleme, ait oldukları makaleyi özetleyen cümleleri tanımlar.

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

Özel Varlık Tanıma

Azure Language Studio kullanılarak oluşturulan özel varlık algılama modellerini kullanarak metindeki varlıkları varlık olarak tanıyabilir ve kategorilere ayırabilirsiniz.

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

Özel Tek Etiketli Sınıflandırma

Azure Language Studio kullanılarak oluşturulan özel tek etiketli modelleri kullanarak belgeleri sınıflandırma.

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

Özel Çok Etiketli Sınıflandırma

Azure Language Studio kullanılarak oluşturulan özel çok etiketli modelleri kullanarak belgeleri sınıflandırma.

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

Eylem Toplu İşlemi

Bir hizmet isteğindeki her giriş belgesine birden çok eylem uygular.

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

Sorun giderme

Günlüğe Kaydetme

Günlüğe kaydetmenin etkinleştirilmesi hatalarla ilgili yararlı bilgilerin ortaya çıkarılmasına yardımcı olabilir. HTTP isteklerinin ve yanıtlarının günlüğünü görmek için ortam değişkenini AZURE_LOG_LEVEL olarak infoayarlayın. Alternatif olarak, günlüğü çalışma zamanında içinde çağrılarak setLogLevel@azure/loggeretkinleştirilebilir:

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

setLogLevel("info");

Günlükleri etkinleştirme hakkında daha ayrıntılı yönergeler için @azure/günlükçü paketi belgelerine bakabilirsiniz.

Sonraki adımlar

Bu kitaplığın nasıl kullanılacağına ilişkin ayrıntılı örnekler için lütfen samples dizinine göz atın.

Katkıda bulunma

Bu kitaplığa katkıda bulunmak isterseniz, kodu derleme ve test etme hakkında daha fazla bilgi edinmek için lütfen katkıda bulunma kılavuzunu okuyun.

İzlenimler