JavaScript için Azure Metin Analizi istemci kitaplığı - sürüm 5.1.0
Azure TextAnalytics , ham metin üzerinde gelişmiş doğal dil işleme sağlayan bulut tabanlı bir hizmettir ve altı ana işlev içerir:
Not: Bu SDK, Azure Metin Analizi hizmet API'si sürüm 3.1.0'a yöneliktir.
- Dil Algılama
- Yaklaşım Analizi
- Anahtar İfade Ayıklama
- Adlandırılmış Varlık Tanıma
- Kişisel Bilgilerin Tanınması
- Bağlı Varlık Tanıma
- Sağlık Analizi
- 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şım hakkındaki 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 çokını aynı anda gerçekleştirin.
Önemli bağlantılar:
Başlarken
Şu anda desteklenen ortamlar
- Node.jsLTS sürümleri
- Safari, Chrome, Edge ve Firefox'un en son sürümleri.
Daha fazla ayrıntı için destek ilkemize bakın.
Önkoşullar
- Bir Azure aboneliği.
- Mevcut bilişsel hizmetler veya Metin Analizi kaynağı. Kaynağı oluşturmanız gerekiyorsa Azure Portal'ı veya Azure CLI'yı kullanabilirsiniz.
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 npm
JavaScript için Azure Metin Analizi istemci kitaplığını yükleyin:
npm install @azure/ai-text-analytics
Oluşturma ve kimlik doğrulaması TextAnalyticsClient
Metin Analizi API'sine erişmek üzere bir istemci nesnesi oluşturmak için Metin Analizi kaynağınızın ve bir credential
öğesinin olması gerekirendpoint
. Metin Analizi istemcisi kimlik doğrulaması için Azure Active Directory kimlik bilgilerini veya API anahtarı kimlik bilgilerini kullanabilir.
Metin analizi kaynağınızın uç noktasını Azure Portal'da veya aşağıdaki Azure CLI parçacığını kullanarak bulabilirsiniz:
az cognitiveservices account show --name <your-resource-name> --resource-group <your-resource-group-name> --query "endpoint"
API Anahtarı Kullanma
azure portalını kullanarak Metin Analizi 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 { TextAnalyticsClient, AzureKeyCredential } = require("@azure/ai-text-analytics");
const client = new TextAnalyticsClient("<endpoint>", new AzureKeyCredential("<API key>"));
Azure Active Directory Kimlik Bilgisi 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 bilgisi 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"
Metin Analizi erişimi vermeniz gerekir (not: gibi "Owner"
diğer roller gerekli izinleri vermez, yalnızca "Cognitive Services User"
örnekleri ve örnek kodu çalıştırmak için yeterli olur).
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 { TextAnalyticsClient } = require("@azure/ai-text-analytics");
const { DefaultAzureCredential } = require("@azure/identity");
const client = new TextAnalyticsClient("<endpoint>", new DefaultAzureCredential());
Önemli kavramlar
TextAnalyticsClient
TextAnalyticsClient
, Metin Analizi istemci kitaplığını kullanan geliştiriciler için birincil arabirimdir. Erişebileceğiniz Metin Analizi hizmetinin farklı özelliklerini anlamak için bu istemci nesnesinde yöntemleri keşfedin.
Giriş
Belge, Metin Analizi hizmetindeki tahmine dayalı modeller tarafından analiz edilecek tek bir giriş birimini temsil eder. üzerindeki TextAnalyticsClient
işlemler toplu iş olarak analiz edilecek girişlerin bir koleksiyonunu alır. İşlem yöntemleri, girişlerin dize olarak veya ekli meta verileri olan nesneler olarak temsil edilmesine izin veren aşırı yüklemelere sahiptir.
Örneğin, her belge bir dizide 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 language
countryHint
/geçirmek isterseniz, bunlar işleme bağlı olarak veya DetectLanguageInput
listesi TextDocumentInput
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 TextAnalyticsClient
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. Koleksiyon isteğe bağlı olarak giriş toplu işlemi ve alanda nasıl işlendiği statistics
hakkında bilgi de içerebilir.
gibi AnalyzeSentimentResult
bir sonuç, tek bir metin girişiyle ilgili tahmin veya tahmin içeren bir Metin Analizi 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, TextAnalyticsErrorResult
hizmetin belgeyi işlerken bir hatayla karşılaştığını gösterir ve hata hakkında bilgi içerir.
Belge Hata İşleme
Bir işlem tarafından döndürülen koleksiyonda hatalar, hatayla karşılaşıldığında iç TextAnalyticsError
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
vardır.
Örneğin, tüm hataları filtrelemek için aşağıdakini filter
kullanabilirsiniz:
const results = await client.analyzeSentiment(documents);
const onlySuccessful = results.filter((result) => result.error === undefined);
Not: TypeScript kullanıcıları, yapılandırmada olarak ayarlandıysa compilerOptions.strictNullChecks
true
sonuç ve hata nesnelerinin daha iyi tür denetiminden tsconfig.json
yararlanabilir. Örnek:
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);
}
Bu özellik TypeScript 3.2'de kullanıma sunulmuştur, bu nedenle TypeScript 3.1 kullanıcılarının sonuç değerlerini karşılık gelen başarı varyantlarına aşağıdaki gibi atamaları gerekir:
const [result] = await client.detectLanguage(["Hello world!"]);
if (result.error === undefined) {
const { primaryLanguage } = result as DetectLanguageSuccessResult;
}
Örnekler
Yaklaşımı Analiz Etme
Tümce başına yaklaşım analizi ve güvenilirlik puanları dahil olmak üzere pozitif, negatif, nötr veya karma olup olmadığını belirlemek için metnin yaklaşımını analiz edin.
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();
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ıkları Tanıma
Metindeki varlıkları kişi, yer, kuruluş, tarih/saat, miktar, para birimi 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 { 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 Varlıklarını Tanıma
Sosyal Güvenlik Numaraları, banka hesap bilgileri, kredi kartı numaraları gibi metinlerdeki Kişisel Bilgileri (PII) tanımak için ayrı bir uç nokta ve işlem vardır. Kullanımı yukarıdaki standart varlık tanımaya çok benzer:
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();
Bağlantılı Varlıkları Tanıma
"Bağlantılı" varlık, bir bilgi bankası (Wikipedia gibi) bulunan varlıktır. Operasyon, recognizeLinkedEntities
büyük olasılıkla bir bilgi bankası hangi girdiye başvuracaklarını belirleyerek varlıkları belirsiz kılabilir (örneğin, bir metin parçasında, "Mars" sözcüğü gezegene mi yoksa Roma savaş tanrısına mı başvuruyor). Bağlantılı varlıklar, varlığın tanımını sağlayan bilgi bankası ilişkili URL'ler içerir.
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();
Anahtar İfadeleri Ayıklama
Anahtar İfade ayıklama, belgedeki ana konuşma noktalarını tanımlar. Örneğin, "Yemek lezzetliydi ve harika personel vardı" giriş metni verüldüğünde, hizmet "yemek" ve "harika personel" döndürür.
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();
Dili Algıla
Metin parçasının dilini belirleme.
countryHint
parametresi isteğe bağlıdır, ancak kaynak ülke biliniyorsa hizmetin doğru çıkışı sağlamasına yardımcı olabilir. Sağlanırsa, ISO-3166 Alpha-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 Metin Analizi hizmeti bilinmeyen bir kaynak ülke için ayarlanmış bir model uygular.
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();
Healthcare Varlıklarını Analiz Etme
Sağlık analizi, sağlık varlıklarını tanımlar. Örneğin, "Reçete edilen 100mg ibuprofen, günde iki kez alındı" giriş metni verildiğinde, hizmet Dozaj olarak kategorilere ayrılmış "100mg", MedicationName olarak "ibuprofen" ve Frequency olarak "günde iki kez" döndürür.
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();
Eylemleri Analiz Etme
Analiz eylemleri, aynı anda birden çok çözümlemenin (adlandırılmış eylemler) uygulanmasını sağlar.
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();
Sorun giderme
Günlüğe Kaydetme
Günlüğün 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 info
ayarlayın. Alternatif olarak, günlüğü çalışma zamanında içinde çağrılarak setLogLevel
@azure/logger
etkinleş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.
İlgili projeler
Azure SDK for JavaScript
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin