Hızlı Başlangıç: Language Understanding (LUIS) istemci kitaplıkları ve REST API
Önemli
LUIS 1 Ekim 2025'te kullanımdan kaldırılacak ve 1 Nisan 2023'den itibaren yeni LUIS kaynakları oluşturamayacaksınız. Devam eden ürün desteği ve çok dilli özelliklerden yararlanmak için LUIS uygulamalarınızı konuşma dili anlayışına geçirmenizi öneririz.
C#, Python veya JavaScript kullanarak bu hızlı başlangıç ile LUIS SDK istemci kitaplıklarıyla bir Azure LUIS yapay zeka (AI) uygulaması oluşturun ve sorgular. Rest API kullanarak istek göndermek için cURL de kullanabilirsiniz.
Language Understanding (LUIS), genel anlamı tahmin etmek ve ilgili, ayrıntılı bilgileri çekmek için kullanıcının konuşma metnine doğal dil işleme (NLP) uygulamanızı sağlar.
- Yazma istemci kitaplığı ve REST API, LUIS uygulamanızı oluşturmanıza, düzenlemenize, eğitebilmenize ve yayımlamanıza olanak tanır.
- Tahmin çalışma zamanı istemci kitaplığı ve REST API yayımlanan uygulamayı sorgulamanıza olanak tanır.
.NET için Language Understanding (LUIS) istemci kitaplıklarını kullanarak:
- Uygulama oluşturun
- Örnek bir konuşmayla makine tarafından öğrenilen bir varlık olan bir amaç ekleme
- Uygulamayı eğit ve yayımla
- Sorgu tahmini çalışma zamanı
Başvuru belgeleri | Yazma ve Tahmin Kitaplığı kaynak kodu | Yazma ve Tahmin NuGet | C# Örneği
Önkoşullar
- .NET Core ve .NET Core CLI'nın geçerli sürümü.
- Azure aboneliği - Ücretsiz olarak oluşturun
- Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portalında bir Language Understanding yazma kaynağı oluşturun. Dağıtmasını bekleyin ve Kaynağa git düğmesine tıklayın.
- Uygulamanızı Language Understanding yazmasına bağlamak için oluşturduğunuz kaynaktan anahtara ve uç noktaya ihtiyacınız olacaktır. Anahtarınızı ve uç noktanızı hızlı başlangıcın ilerleyen bölümlerinde aşağıdaki koda yapıştıracaksınız. Hizmeti denemek için ücretsiz fiyatlandırma katmanını (
F0
) kullanabilirsiniz.
- Uygulamanızı Language Understanding yazmasına bağlamak için oluşturduğunuz kaynaktan anahtara ve uç noktaya ihtiyacınız olacaktır. Anahtarınızı ve uç noktanızı hızlı başlangıcın ilerleyen bölümlerinde aşağıdaki koda yapıştıracaksınız. Hizmeti denemek için ücretsiz fiyatlandırma katmanını (
Ayarlama
Yeni bir C# uygulaması oluşturma
Tercih ettiğiniz düzenleyicide veya IDE'de yeni bir .NET Core uygulaması oluşturun.
Bir konsol penceresinde (cmd, PowerShell veya Bash gibi), adlı
language-understanding-quickstart
yeni bir konsol uygulaması oluşturmak için dotnetnew
komutunu kullanın. Bu komut, tek bir kaynak dosyasıyla basit bir "Merhaba Dünya" C# projesi oluşturur:Program.cs
.dotnet new console -n language-understanding-quickstart
Dizininizi yeni oluşturulan uygulama klasörüyle değiştirin.
cd language-understanding-quickstart
Uygulamayı şu şekilde oluşturabilirsiniz:
dotnet build
Derleme çıkışı hiçbir uyarı veya hata içermemelidir.
... Build succeeded. 0 Warning(s) 0 Error(s) ...
NuGet kitaplıklarını yükleme
Uygulama dizininde aşağıdaki komutlarla .NET için Language Understanding (LUIS) istemci kitaplıklarını yükleyin:
dotnet add package Microsoft.Azure.CognitiveServices.Language.LUIS.Authoring --version 3.2.0-preview.3
dotnet add package Microsoft.Azure.CognitiveServices.Language.LUIS.Runtime --version 3.1.0-preview.1
Nesne Modeli Yazma
Language Understanding (LUIS) yazma istemcisi, yazma anahtarınızı içeren Azure'da kimlik doğrulaması yapan bir LUISAuthoringClient nesnesidir.
Yazma için kod örnekleri
İstemci oluşturulduktan sonra aşağıdaki işlevlere erişmek için bu istemciyi kullanın:
- Uygulamalar - oluşturma, silme, yayımlama
- Örnek konuşmalar - kimlikle ekleme, silme
- Özellikler - tümcecik listelerini yönetme
- Model - amaçları ve varlıkları yönetme
- Desen - desenleri yönetme
- Eğit - uygulamayı eğitin ve eğitim durumunu yoklama
- Sürümler - kopyalama, dışarı aktarma ve silme ile yönetme
Tahmin Nesnesi modeli
Language Understanding (LUIS) tahmin çalışma zamanı istemcisi, kaynak anahtarınızı içeren Azure'da kimlik doğrulaması yapan bir LUISRuntimeClient nesnesidir.
Tahmin çalışma zamanı için kod örnekleri
İstemci oluşturulduktan sonra aşağıdaki işlevlere erişmek için bu istemciyi kullanın:
Kod örnekleri
Bu kod parçacıkları, python için Language Understanding (LUIS) istemci kitaplığıyla aşağıdakileri nasıl yapacağınızı gösterir:
- Uygulama oluşturma
- Amaç ekleme
- Varlık ekleme
- Örnek konuşmalar ekleme
- Uygulamayı eğitin
- Uygulamayı yayımlama
- Yuvaya göre tahmin
Bağımlılıkları ekleme
Proje dizininden Program.cs dosyasını tercih ettiğiniz düzenleyicide veya IDE'de açın. Mevcut using
kodu aşağıdaki using
yönergelerle değiştirin:
using System;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Azure.CognitiveServices.Language.LUIS.Authoring;
using Microsoft.Azure.CognitiveServices.Language.LUIS.Authoring.Models;
using Microsoft.Azure.CognitiveServices.Language.LUIS.Runtime;
using Microsoft.Azure.CognitiveServices.Language.LUIS.Runtime.Models;
using Newtonsoft.Json;
Ortak kod ekleme
Zaman uyumsuz çağrılara izin vermek için yönteminin imzasını
Main
değiştirin:public static async Task Main()
Aksi belirtilmedikçe kodun
Main
geri kalanını sınıfının yöntemineProgram
ekleyin.
Uygulama için değişkenler oluşturma
İki değişken kümesi oluşturun: değiştirdiğiniz ilk küme, ikinci küme kod örneğinde göründükleri gibi ayrılır.
Önemli
İşiniz bittiğinde anahtarı kodunuzdan kaldırmayı unutmayın ve asla herkese açık olarak göndermeyin. Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.
Yazma anahtarınızı ve kaynak adlarınızı tutmak için değişkenler oluşturun.
var key = "PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE"; var authoringEndpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE"; var predictionEndpoint = "PASTE_YOUR_LUIS_PREDICTION_ENDPOINT_HERE";
Uç noktalarınızı, uygulama adınızı, sürümünüzü ve amaç adınızı barındıracak değişkenler oluşturun.
var appName = "Contoso Pizza Company"; var versionId = "0.1"; var intentName = "OrderPizzaIntent";
İstemcinin kimliğini doğrulama
Anahtarınız ile bir ApiKeyServiceClientCredentials nesnesi oluşturun ve bunu uç noktanızla birlikte kullanarak bir LUISAuthoringClient nesnesi oluşturun.
var credentials = new Microsoft.Azure.CognitiveServices.Language.LUIS.Authoring.ApiKeyServiceClientCredentials(key);
var client = new LUISAuthoringClient(credentials) { Endpoint = authoringEndpoint };
LUIS uygulaması oluşturma
LUIS uygulaması amaçlar, varlıklar ve örnek konuşmalar dahil olmak üzere doğal dil işleme (NLP) modelini içerir.
ApplicationCreateObject oluşturun. Ad ve dil kültürü gerekli özelliklerdir. Apps.AddAsync yöntemini çağırın. Yanıt, uygulama kimliğidir.
var newApp = new ApplicationCreateObject
{
Culture = "en-us",
Name = appName,
InitialVersionId = versionId
};
var appId = await client.Apps.AddAsync(newApp);
Uygulama için amaç oluşturma
Luis uygulamasının modelindeki birincil nesne amaçtır. Amaç, kullanıcı konuşma amaçlarının gruplanmasıyla hizalanır. Kullanıcı bir soru sorabilir veya bottan (veya başka bir istemci uygulamasından) belirli bir hedeflenen yanıtı arayan bir bildirimde bulunabilir. Amaçlara örnek olarak uçuş rezervasyonu yapma, varış şehrindeki hava durumu hakkında bilgi isteme ve müşteri hizmetleri için iletişim bilgilerini sorma verilebilir.
Benzersiz amacın adıyla bir ModelCreateObject oluşturun, ardından uygulama kimliğini, sürüm kimliğini ve ModelCreateObject'i Model.AddIntentAsync yöntemine geçirin. Yanıt, amaç kimliğidir.
intentName
Değer, Uygulama için değişken oluşturma bölümündeki değişkenlerin bir parçası olarak sabit olarak kodlanırOrderPizzaIntent
.
await client.Model.AddIntentAsync(appId, versionId, new ModelCreateObject()
{
Name = intentName
});
Uygulama için varlık oluşturma
Varlıklar gerekli olmasa da çoğu uygulamada bulunur. Varlık, kullanıcının amacını tam olarak yerine getirmek için gereken bilgileri kullanıcı konuşmasından ayıklar. Her biri kendi veri dönüştürme nesnesi (DTO) modellerine sahip çeşitli önceden oluşturulmuş ve özel varlık türleri vardır. Uygulamanıza eklenecek yaygın önceden oluşturulmuş varlıklar arasında number, datetimeV2, geographyV2, ordinal bulunur.
Varlıkların bir amaç ile işaretlenmediğini bilmek önemlidir. Bu kişiler çoğu amaç için geçerli olabilir ve genellikle geçerlidir. Yalnızca örnek kullanıcı konuşmaları belirli, tek bir amaç için işaretlenir.
Varlıklar için oluşturma yöntemleri Model sınıfının bir parçasıdır. Her varlık türünün, genellikle Modeller ad alanında sözcüğü model
içeren kendi veri dönüştürme nesnesi (DTO) modeli vardır.
Varlık oluşturma kodu, alt varlıklara ve alt varlıklara uygulanan özelliklere sahip bir makine öğrenmesi Quantity
varlığı oluşturur.
// Add Prebuilt entity
await client.Model.AddPrebuiltAsync(appId, versionId, new[] { "number" });
// Define ml entity with children and grandchildren
var mlEntityDefinition = new EntityModelCreateObject
{
Name = "Pizza order",
Children = new[]
{
new ChildEntityModelCreateObject
{
Name = "Pizza",
Children = new[]
{
new ChildEntityModelCreateObject { Name = "Quantity" },
new ChildEntityModelCreateObject { Name = "Type" },
new ChildEntityModelCreateObject { Name = "Size" }
}
},
new ChildEntityModelCreateObject
{
Name = "Toppings",
Children = new[]
{
new ChildEntityModelCreateObject { Name = "Type" },
new ChildEntityModelCreateObject { Name = "Quantity" }
}
}
}
};
// Add ML entity
var mlEntityId = await client.Model.AddEntityAsync(appId, versionId, mlEntityDefinition); ;
// Add phraselist feature
var phraselistId = await client.Features.AddPhraseListAsync(appId, versionId, new PhraselistCreateObject
{
EnabledForAllModels = false,
IsExchangeable = true,
Name = "QuantityPhraselist",
Phrases = "few,more,extra"
});
// Get entity and subentities
var model = await client.Model.GetEntityAsync(appId, versionId, mlEntityId);
var toppingQuantityId = GetModelGrandchild(model, "Toppings", "Quantity");
var pizzaQuantityId = GetModelGrandchild(model, "Pizza", "Quantity");
// add model as feature to subentity model
await client.Features.AddEntityFeatureAsync(appId, versionId, pizzaQuantityId, new ModelFeatureInformation { ModelName = "number", IsRequired = true });
await client.Features.AddEntityFeatureAsync(appId, versionId, toppingQuantityId, new ModelFeatureInformation { ModelName = "number"});
// add phrase list as feature to subentity model
await client.Features.AddEntityFeatureAsync(appId, versionId, toppingQuantityId, new ModelFeatureInformation { FeatureName = "QuantityPhraselist" });
Özellikleri bu alt varlığa atamak için Quantity alt öğesinin kimliğini bulmak için sınıfına aşağıdaki yöntemi kullanın.
static Guid GetModelGrandchild(NDepthEntityExtractor model, string childName, string grandchildName)
{
return model.Children.
Single(c => c.Name == childName).
Children.
Single(c => c.Name == grandchildName).Id;
}
Amaca örnek konuşma ekleme
Bir konuşmanın amacını belirlemek ve varlıkları ayıklamak için uygulamanın konuşma örneklerine ihtiyacı vardır. Örneklerin belirli, tek bir amacı hedeflemesi ve tüm özel varlıkları işaretlemesi gerekir. Önceden oluşturulmuş varlıkların işaretlenmesi gerekmez.
Her örnek konuşma için bir nesne olan ExampleLabelObject nesnelerinin listesini oluşturarak örnek konuşmalar ekleyin. Her örnek, tüm varlıkları varlık adı ve varlık değeri ad/değer çiftleri sözlüğüyle işaretlemelidir. Varlık değeri, örnek konuşmanın metninde göründüğü gibi olmalıdır.
Uygulama kimliği, sürüm kimliği ve örnekle Examples.AddAsync'i çağırın.
// Define labeled example
var labeledExampleUtteranceWithMLEntity = new ExampleLabelObject
{
Text = "I want two small seafood pizzas with extra cheese.",
IntentName = intentName,
EntityLabels = new[]
{
new EntityLabelObject
{
StartCharIndex = 7,
EndCharIndex = 48,
EntityName = "Pizza order",
Children = new[]
{
new EntityLabelObject
{
StartCharIndex = 7,
EndCharIndex = 30,
EntityName = "Pizza",
Children = new[]
{
new EntityLabelObject { StartCharIndex = 7, EndCharIndex = 9, EntityName = "Quantity" },
new EntityLabelObject { StartCharIndex = 11, EndCharIndex = 15, EntityName = "Size" },
new EntityLabelObject { StartCharIndex = 17, EndCharIndex = 23, EntityName = "Type" }
}
},
new EntityLabelObject
{
StartCharIndex = 37,
EndCharIndex = 48,
EntityName = "Toppings",
Children = new[]
{
new EntityLabelObject { StartCharIndex = 37, EndCharIndex = 41, EntityName = "Quantity" },
new EntityLabelObject { StartCharIndex = 43, EndCharIndex = 48, EntityName = "Type" }
}
}
}
},
}
};
// Add an example for the entity.
// Enable nested children to allow using multiple models with the same name.
// The quantity subentity and the phraselist could have the same exact name if this is set to True
await client.Examples.AddAsync(appId, versionId, labeledExampleUtteranceWithMLEntity, enableNestedChildren: true);
Uygulamayı eğitme
Model oluşturulduktan sonra LUIS uygulamasının modelin bu sürümü için eğitilmesi gerekir. Eğitilmiş model kapsayıcıda kullanılabilir veya hazırlama veya ürün yuvalarında yayımlanabilir.
Train.TrainVersionAsync yöntemi için uygulama kimliği ve sürüm kimliği gerekir.
Bu hızlı başlangıç gösterileri gibi çok küçük bir model çok hızlı bir şekilde eğitilecektir. Üretim düzeyindeki uygulamalar için eğitim, eğitimin ne zaman başarılı olduğunu veya başarılı olup olmadığını belirlemek için GetStatusAsync yöntemine yönelik bir yoklama çağrısı içermelidir. Yanıt, her nesne için ayrı bir duruma sahip ModelTrainingInfo nesnelerinin listesidir. Eğitimin tamamlandı olarak kabul edilmesi için tüm nesnelerin başarılı olması gerekir.
await client.Train.TrainVersionAsync(appId, versionId);
while (true)
{
var status = await client.Train.GetStatusAsync(appId, versionId);
if (status.All(m => m.Details.Status == "Success"))
{
// Assumes that we never fail, and that eventually we'll always succeed.
break;
}
}
Uygulamayı üretim yuvasında yayımlama
PublishAsync yöntemini kullanarak LUIS uygulamasını yayımlayın. Bu, geçerli eğitilmiş sürümü uç noktada belirtilen yuvaya yayımlar. İstemci uygulamanız, amaç ve varlık ayıklama tahmini için kullanıcı konuşmaları göndermek için bu uç noktayı kullanır.
await client.Apps.PublishAsync(appId, new ApplicationPublishObject { VersionId = versionId, IsStaging=false});
Tahmin çalışma zamanı istemcisinin kimliğini doğrulama
Anahtarınızla bir ApiKeyServiceClientCredentials nesnesi kullanın ve bunu uç noktanızla birlikte kullanarak bir LUISRuntimeClient nesnesi oluşturun.
Dikkat
Bu hızlı başlangıçta çalışma zamanı kimlik bilgilerinin bir parçası olarak yazma anahtarı kullanılır. Yazma anahtarının çalışma zamanını birkaç sorguyla sorgulamasına izin verilir. Hazırlama ve üretim düzeyi kodu için yazma anahtarını tahmin çalışma zamanı anahtarıyla değiştirin.
var runtimeClient = new LUISRuntimeClient(credentials) { Endpoint = predictionEndpoint };
Çalışma zamanından tahmin alma
İsteği tahmin çalışma zamanına oluşturmak için aşağıdaki kodu ekleyin.
Kullanıcı ifadesi PredictionRequest nesnesinin bir parçasıdır.
GetSlotPredictionAsync yöntemi, isteği karşılamak için uygulama kimliği, yuva adı, tahmin isteği nesnesi gibi çeşitli parametrelere ihtiyaç duyar. Ayrıntılı, tüm amaçları göster ve günlük gibi diğer seçenekler isteğe bağlıdır.
// Production == slot name
var request = new PredictionRequest { Query = "I want two small pepperoni pizzas with more salsa" };
var prediction = await runtimeClient.Prediction.GetSlotPredictionAsync(appId, "Production", request);
Console.Write(JsonConvert.SerializeObject(prediction, Formatting.Indented));
Tahmin yanıtı, amacı ve bulunan varlıkları içeren bir JSON nesnesidir.
{
"query": "I want two small pepperoni pizzas with more salsa",
"prediction": {
"topIntent": "OrderPizzaIntent",
"intents": {
"OrderPizzaIntent": {
"score": 0.753606856
},
"None": {
"score": 0.119097039
}
},
"entities": {
"Pizza order": [
{
"Pizza": [
{
"Quantity": [
2
],
"Type": [
"pepperoni"
],
"Size": [
"small"
],
"$instance": {
"Quantity": [
{
"type": "builtin.number",
"text": "two",
"startIndex": 7,
"length": 3,
"score": 0.968156934,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Type": [
{
"type": "Type",
"text": "pepperoni",
"startIndex": 17,
"length": 9,
"score": 0.9345611,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Size": [
{
"type": "Size",
"text": "small",
"startIndex": 11,
"length": 5,
"score": 0.9592077,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"Toppings": [
{
"Type": [
"salsa"
],
"Quantity": [
"more"
],
"$instance": {
"Type": [
{
"type": "Type",
"text": "salsa",
"startIndex": 44,
"length": 5,
"score": 0.7292897,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Quantity": [
{
"type": "Quantity",
"text": "more",
"startIndex": 39,
"length": 4,
"score": 0.9320932,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"$instance": {
"Pizza": [
{
"type": "Pizza",
"text": "two small pepperoni pizzas",
"startIndex": 7,
"length": 26,
"score": 0.812199831,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Toppings": [
{
"type": "Toppings",
"text": "more salsa",
"startIndex": 39,
"length": 10,
"score": 0.7250252,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"$instance": {
"Pizza order": [
{
"type": "Pizza order",
"text": "two small pepperoni pizzas with more salsa",
"startIndex": 7,
"length": 42,
"score": 0.769223332,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
}
}
Uygulamayı çalıştırma
Uygulamayı uygulama dizininizdeki komutuyla dotnet run
çalıştırın.
dotnet run
Node.js için Language Understanding (LUIS) istemci kitaplıklarını kullanarak:
- Uygulama oluşturun
- Örnek bir konuşmayla makine tarafından öğrenilen bir varlık olan bir amaç ekleme
- Uygulamayı eğit ve yayımla
- Sorgu tahmini çalışma zamanı
Başvuru belgeleri | Yazma ve Tahmin NPM | Örnekleri
Önkoşullar
- Node.js
- Azure aboneliği - Ücretsiz olarak oluşturun
- Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portalında bir Language Understanding yazma kaynağı oluşturun. Dağıtmasını bekleyin ve Kaynağa git düğmesine tıklayın.
- Uygulamanızı Language Understanding yazmasına bağlamak için oluşturduğunuz kaynaktan anahtara ve uç noktaya ihtiyacınız olacaktır. Anahtarınızı ve uç noktanızı hızlı başlangıcın ilerleyen bölümlerinde aşağıdaki koda yapıştıracaksınız. Hizmeti denemek için ücretsiz fiyatlandırma katmanını (
F0
) kullanabilirsiniz.
- Uygulamanızı Language Understanding yazmasına bağlamak için oluşturduğunuz kaynaktan anahtara ve uç noktaya ihtiyacınız olacaktır. Anahtarınızı ve uç noktanızı hızlı başlangıcın ilerleyen bölümlerinde aşağıdaki koda yapıştıracaksınız. Hizmeti denemek için ücretsiz fiyatlandırma katmanını (
Ayarlama
Yeni javascript uygulaması oluşturma
Konsol penceresinde uygulamanız için yeni bir dizin oluşturun ve bu dizine geçin.
mkdir quickstart-sdk && cd quickstart-sdk
Bir dosya oluşturarak
package.json
dizini JavaScript uygulaması olarak başlatın.npm init -y
JavaScript kodunuz için adlı
index.js
bir dosya oluşturun.touch index.js
NPM kitaplıklarını yükleme
Uygulama dizininde bağımlılıkları aşağıdaki komutlarla yükleyin ve her seferinde bir satır yürütür:
npm install @azure/ms-rest-js
npm install @azure/cognitiveservices-luis-authoring
npm install @azure/cognitiveservices-luis-runtime
Aşağıdaki package.json
gibi görünmelidir:
{
"name": "quickstart-sdk",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"dependencies": {
"@azure/cognitiveservices-luis-authoring": "^4.0.0-preview.3",
"@azure/cognitiveservices-luis-runtime": "^5.0.0",
"@azure/ms-rest-js": "^2.0.8"
}
}
Nesne Modeli Yazma
Language Understanding (LUIS) yazma istemcisi, yazma anahtarınızı içeren Azure'da kimlik doğrulaması yapan bir LUISAuthoringClient nesnesidir.
Yazma için kod örnekleri
İstemci oluşturulduktan sonra aşağıdaki işlevlere erişmek için bu istemciyi kullanın:
- Uygulamalar - ekleme, silme, yayımlama
- Örnek konuşmalar - toplu olarak ekleme, kimlikle silme
- Özellikler - tümcecik listelerini yönetme
- Model - amaçları ve varlıkları yönetme
- Desen - desenleri yönetme
- Eğit - uygulamayı eğitin ve eğitim durumunu yoklama
- Sürümler - kopyalama, dışarı aktarma ve silme ile yönetme
Tahmin Nesnesi modeli
Language Understanding (LUIS) yazma istemcisi, yazma anahtarınızı içeren Azure'da kimlik doğrulaması yapan bir LUISAuthoringClient nesnesidir.
Tahmin çalışma zamanı için kod örnekleri
İstemci oluşturulduktan sonra aşağıdaki işlevlere erişmek için bu istemciyi kullanın:
Kod örnekleri
Bu kod parçacıkları, python için Language Understanding (LUIS) istemci kitaplığıyla aşağıdakileri nasıl yapacağınızı gösterir:
- Uygulama oluşturma
- Amaç ekleme
- Varlık ekleme
- Örnek konuşmalar ekleme
- Uygulamayı eğitin
- Uygulamayı yayımlama
- Yuvaya göre tahmin
Bağımlılıkları ekleme
index.js
Dosyayı tercih ettiğiniz düzenleyicide veya adlı IDE'de açın ve aşağıdaki bağımlılıkları ekleyin.
const msRest = require("@azure/ms-rest-js");
const LUIS_Authoring = require("@azure/cognitiveservices-luis-authoring");
const LUIS_Prediction = require("@azure/cognitiveservices-luis-runtime");
Ortak kod ekleme
quickstart
yöntemini ve çağrısını ekleyin. Bu yöntem, kalan kodun çoğunu tutar. Bu yöntem dosyanın sonunda çağrılır.const quickstart = async () => { // add calls here } quickstart() .then(result => console.log("Done")) .catch(err => { console.log(`Error: ${err}`) })
Aksi belirtilmedikçe kalan kodu hızlı başlangıç yöntemine ekleyin.
Uygulama için değişkenler oluşturma
İki değişken kümesi oluşturun: değiştirdiğiniz ilk küme, ikinci küme kod örneğinde göründükleri gibi ayrılır.
Önemli
İşiniz bittiğinde anahtarı kodunuzdan kaldırmayı unutmayın ve asla herkese açık olarak göndermeyin. Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.
Yazma anahtarınızı ve kaynak adlarınızı tutmak için değişkenler oluşturun.
const authoringKey = 'PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE'; const authoringEndpoint = "PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE"; const predictionEndpoint = "PASTE_YOUR_LUIS_PREDICTION_ENDPOINT_HERE";
Uç noktalarınızı, uygulama adınızı, sürümünüzü ve amaç adınızı barındıracak değişkenler oluşturun.
const appName = "Contoso Pizza Company"; const versionId = "0.1"; const intentName = "OrderPizzaIntent";
İstemcinin kimliğini doğrulama
Anahtarınız ile bir CognitiveServicesCredentials nesnesi oluşturun ve bunu uç noktanızla birlikte kullanarak bir LUISAuthoringClient nesnesi oluşturun.
const luisAuthoringCredentials = new msRest.ApiKeyCredentials({
inHeader: { "Ocp-Apim-Subscription-Key": authoringKey }
});
const client = new LUIS_Authoring.LUISAuthoringClient(
luisAuthoringCredentials,
authoringEndpoint
);
LUIS uygulaması oluşturma
LUIS uygulaması amaçlar, varlıklar ve örnek konuşmalar dahil olmak üzere doğal dil işleme (NLP) modelini içerir.
Uygulamayı oluşturmak için bir AppsOperation nesnesinin ekleme yöntemini oluşturun. Ad ve dil kültürü gerekli özelliklerdir.
const create_app_payload = {
name: appName,
initialVersionId: versionId,
culture: "en-us"
};
const createAppResult = await client.apps.add(
create_app_payload
);
const appId = createAppResult.body
Uygulama için amaç oluşturma
Luis uygulamasının modelindeki birincil nesne amaçtır. Amaç, kullanıcı konuşma amaçlarının bir gruplamasıyla uyumlu hale geliyor. Kullanıcı bir soru sorabilir veya bottan (veya başka bir istemci uygulamasından) belirli bir hedeflenen yanıtı arayan bir bildirimde bulunabilir. Amaçlara örnek olarak uçuş rezervasyonu yapma, varış şehrindeki hava durumu hakkında bilgi isteme ve müşteri hizmetleri için iletişim bilgilerini sorma verilebilir.
Benzersiz amacın adıyla model.add_intent yöntemini kullanın, ardından uygulama kimliğini, sürüm kimliğini ve yeni amaç adını geçirin.
intentName
Değer, Uygulama için değişken oluşturma bölümündeki değişkenlerin bir parçası olarak sabit olarak kodlanırOrderPizzaIntent
.
await client.model.addIntent(
appId,
versionId,
{ name: intentName }
);
Uygulama için varlık oluşturma
Varlıklar gerekli olmasa da çoğu uygulamada bulunur. Varlık, kullanıcının amacını tam olarak yerine getirmek için gereken bilgileri kullanıcı konuşmasından ayıklar. Her biri kendi veri dönüştürme nesnesi (DTO) modellerine sahip çeşitli önceden oluşturulmuş ve özel varlık türleri vardır. Uygulamanıza eklenecek yaygın önceden oluşturulmuş varlıklar arasında number, datetimeV2, geographyV2, ordinal bulunur.
Varlıkların bir amaç ile işaretlenmediğini bilmek önemlidir. Bu kişiler çoğu amaç için geçerli olabilir ve genellikle geçerlidir. Yalnızca örnek kullanıcı konuşmaları belirli, tek bir amaç için işaretlenir.
Varlıklar için oluşturma yöntemleri Model sınıfının bir parçasıdır. Her varlık türünün kendi veri dönüştürme nesnesi (DTO) modeli vardır.
Varlık oluşturma kodu, alt varlıklara ve alt varlıklara uygulanan özelliklere sahip bir makine öğrenmesi Quantity
varlığı oluşturur.
// Add Prebuilt entity
await client.model.addPrebuilt(appId, versionId, ["number"]);
// Define ml entity with children and grandchildren
const mlEntityDefinition = {
name: "Pizza order",
children: [
{
name: "Pizza",
children: [
{ name: "Quantity" },
{ name: "Type" },
{ name: "Size" }
]
},
{
name: "Toppings",
children: [
{ name: "Type" },
{ name: "Quantity" }
]
}
]
};
// Add ML entity
const response = await client.model.addEntity(appId, versionId, mlEntityDefinition);
const mlEntityId = response.body;
// Add phraselist feature
const phraselistResponse = await client.features.addPhraseList(appId, versionId, {
enabledForAllModels: false,
isExchangeable: true,
name: "QuantityPhraselist",
phrases: "few,more,extra"
});
const phraseListId = phraselistResponse.body;
// Get entity and subentities
const model = await client.model.getEntity(appId, versionId, mlEntityId);
const toppingQuantityId = getModelGrandchild(model, "Toppings", "Quantity");
const pizzaQuantityId = getModelGrandchild(model, "Pizza", "Quantity");
// add model as feature to subentity model
await client.features.addEntityFeature(appId, versionId, pizzaQuantityId, { modelName: "number", isRequired: true });
await client.features.addEntityFeature(appId, versionId, toppingQuantityId, { modelName: "number" });
// add phrase list as feature to subentity model
await client.features.addEntityFeature(appId, versionId, toppingQuantityId, { featureName: "QuantityPhraselist" });
Özellikleri bu alt varlığa atamak için Quantity alt öğesinin kimliğini bulmak için yönteminin üstüne quickstart
aşağıdaki yöntemi koyun.
const getModelGrandchild = (model, childName, grandchildName) => {
return model.children.find(c => c.name == childName).children.find(c => c.name == grandchildName).id
}
Amaca örnek konuşma ekleme
Bir konuşmanın amacını belirlemek ve varlıkları ayıklamak için uygulamanın konuşma örneklerine ihtiyacı vardır. Örneklerin belirli, tek bir amacı hedeflemesi ve tüm özel varlıkları işaretlemesi gerekir. Önceden oluşturulmuş varlıkların işaretlenmesi gerekmez.
Her örnek konuşma için bir nesne olan ExampleLabelObject nesnelerinin listesini oluşturarak örnek konuşmalar ekleyin. Her örnek, tüm varlıkları varlık adı ve varlık değeri ad/değer çiftleri sözlüğüyle işaretlemelidir. Varlık değeri, örnek konuşmanın metninde göründüğü gibi olmalıdır.
Arama örnekleri.uygulama kimliği, sürüm kimliği ve örnekle birlikte ekleyin .
// Define labeled example
const labeledExampleUtteranceWithMLEntity =
{
text: "I want two small seafood pizzas with extra cheese.",
intentName: intentName,
entityLabels: [
{
startCharIndex: 7,
endCharIndex: 48,
entityName: "Pizza order",
children: [
{
startCharIndex: 7,
endCharIndex: 30,
entityName: "Pizza",
children: [
{
startCharIndex: 7,
endCharIndex: 9,
entityName: "Quantity"
},
{
startCharIndex: 11,
endCharIndex: 15,
entityName: "Size"
},
{
startCharIndex: 17,
endCharIndex: 23,
entityName: "Type"
}]
},
{
startCharIndex: 37,
endCharIndex: 48,
entityName: "Toppings",
children: [
{
startCharIndex: 37,
endCharIndex: 41,
entityName: "Quantity"
},
{
startCharIndex: 43,
endCharIndex: 48,
entityName: "Type"
}]
}
]
}
]
};
console.log("Labeled Example Utterance:", JSON.stringify(labeledExampleUtteranceWithMLEntity, null, 4 ));
// Add an example for the entity.
// Enable nested children to allow using multiple models with the same name.
// The quantity subentity and the phraselist could have the same exact name if this is set to True
await client.examples.add(appId, versionId, labeledExampleUtteranceWithMLEntity, { enableNestedChildren: true });
Uygulamayı eğitme
Model oluşturulduktan sonra LUIS uygulamasının modelin bu sürümü için eğitilmesi gerekir. Eğitilmiş model kapsayıcıda kullanılabilir veya hazırlama veya ürün yuvalarında yayımlanabilir.
train.trainVersion yöntemi için uygulama kimliği ve sürüm kimliği gerekir.
Bu hızlı başlangıç gösterileri gibi çok küçük bir model çok hızlı bir şekilde eğitilecektir. Üretim düzeyindeki uygulamalarda eğitim, eğitimin ne zaman başarılı olduğunu veya başarılı olup olmadığını belirlemek için get_status yöntemine yönelik bir yoklama çağrısı içermelidir. Yanıt, her nesne için ayrı bir duruma sahip ModelTrainingInfo nesnelerinin listesidir. Eğitimin tamamlandı olarak kabul edilmesi için tüm nesnelerin başarılı olması gerekir.
await client.train.trainVersion(appId, versionId);
while (true) {
const status = await client.train.getStatus(appId, versionId);
if (status.every(m => m.details.status == "Success")) {
// Assumes that we never fail, and that eventually we'll always succeed.
break;
}
}
Uygulamayı üretim yuvasında yayımlama
app.publish yöntemini kullanarak LUIS uygulamasını yayımlayın . Bu, geçerli eğitilmiş sürümü uç noktada belirtilen yuvaya yayımlar. İstemci uygulamanız, amaç ve varlık ayıklama tahmini için kullanıcı konuşmaları göndermek için bu uç noktayı kullanır.
await client.apps.publish(appId, { versionId: versionId, isStaging: false });
Tahmin çalışma zamanı istemcisinin kimliğini doğrulama
Anahtarınızla bir msRest.ApiKeyCredentials
nesne kullanın ve luis oluşturmak için uç noktanızla birlikte kullanın. LUISRuntimeClient nesnesi.
Dikkat
Bu hızlı başlangıçta çalışma zamanı kimlik bilgilerinin bir parçası olarak yazma anahtarı kullanılır. Yazma anahtarının çalışma zamanını birkaç sorguyla sorgulamasına izin verilir. Hazırlama ve üretim düzeyi kodu için yazma anahtarını tahmin çalışma zamanı anahtarıyla değiştirin.
const luisPredictionClient = new LUIS_Prediction.LUISRuntimeClient(
luisAuthoringCredentials,
predictionEndpoint
);
Çalışma zamanından tahmin alma
İsteği tahmin çalışma zamanına oluşturmak için aşağıdaki kodu ekleyin. Kullanıcı ifadesi predictionRequest nesnesinin bir parçasıdır.
luisRuntimeClient.prediction.getSlotPrediction yöntemi, isteği karşılamak için uygulama kimliği, yuva adı ve tahmin isteği nesnesi gibi çeşitli parametrelere ihtiyaç duyar. Ayrıntılı, tüm amaçları göster ve günlük gibi diğer seçenekler isteğe bağlıdır.
// Production == slot name
const request = { query: "I want two small pepperoni pizzas with more salsa" };
const response = await luisPredictionClient.prediction.getSlotPrediction(appId, "Production", request);
console.log(JSON.stringify(response.prediction, null, 4 ));
Tahmin yanıtı, amacı ve bulunan varlıkları içeren bir JSON nesnesidir.
{
"query": "I want two small pepperoni pizzas with more salsa",
"prediction": {
"topIntent": "OrderPizzaIntent",
"intents": {
"OrderPizzaIntent": {
"score": 0.753606856
},
"None": {
"score": 0.119097039
}
},
"entities": {
"Pizza order": [
{
"Pizza": [
{
"Quantity": [
2
],
"Type": [
"pepperoni"
],
"Size": [
"small"
],
"$instance": {
"Quantity": [
{
"type": "builtin.number",
"text": "two",
"startIndex": 7,
"length": 3,
"score": 0.968156934,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Type": [
{
"type": "Type",
"text": "pepperoni",
"startIndex": 17,
"length": 9,
"score": 0.9345611,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Size": [
{
"type": "Size",
"text": "small",
"startIndex": 11,
"length": 5,
"score": 0.9592077,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"Toppings": [
{
"Type": [
"salsa"
],
"Quantity": [
"more"
],
"$instance": {
"Type": [
{
"type": "Type",
"text": "salsa",
"startIndex": 44,
"length": 5,
"score": 0.7292897,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Quantity": [
{
"type": "Quantity",
"text": "more",
"startIndex": 39,
"length": 4,
"score": 0.9320932,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"$instance": {
"Pizza": [
{
"type": "Pizza",
"text": "two small pepperoni pizzas",
"startIndex": 7,
"length": 26,
"score": 0.812199831,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Toppings": [
{
"type": "Toppings",
"text": "more salsa",
"startIndex": 39,
"length": 10,
"score": 0.7250252,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"$instance": {
"Pizza order": [
{
"type": "Pizza order",
"text": "two small pepperoni pizzas with more salsa",
"startIndex": 7,
"length": 42,
"score": 0.769223332,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
}
}
Uygulamayı çalıştırma
Uygulamayı hızlı başlangıç dosyanızdaki node index.js
komutuyla çalıştırın.
node index.js
Python için Language Understanding (LUIS) istemci kitaplıklarını kullanarak:
- Uygulama oluşturun
- Örnek bir konuşmayla makine tarafından öğrenilen bir varlık olan bir amaç ekleme
- Uygulamayı eğit ve yayımla
- Sorgu tahmini çalışma zamanı
Başvuru belgeleri | Yazma ve Tahmin Kitaplığı kaynak kodu | Paket (Pypi) | Örnekleri
Önkoşullar
- Python 3.x'in geçerli sürümü.
- Azure aboneliği - Ücretsiz olarak oluşturun
- Azure aboneliğinizi aldıktan sonra anahtarınızı ve uç noktanızı almak için Azure portalında bir Language Understanding yazma kaynağı oluşturun. Dağıtmasını bekleyin ve Kaynağa git düğmesine tıklayın.
- Uygulamanızı Language Understanding yazmasına bağlamak için oluşturduğunuz kaynaktan anahtara ve uç noktaya ihtiyacınız olacaktır. Anahtarınızı ve uç noktanızı hızlı başlangıcın ilerleyen bölümlerinde aşağıdaki koda yapıştıracaksınız. Hizmeti denemek için ücretsiz fiyatlandırma katmanını (
F0
) kullanabilirsiniz.
- Uygulamanızı Language Understanding yazmasına bağlamak için oluşturduğunuz kaynaktan anahtara ve uç noktaya ihtiyacınız olacaktır. Anahtarınızı ve uç noktanızı hızlı başlangıcın ilerleyen bölümlerinde aşağıdaki koda yapıştıracaksınız. Hizmeti denemek için ücretsiz fiyatlandırma katmanını (
Ayarlama
Yeni Python uygulaması oluşturma
Konsol penceresinde uygulamanız için yeni bir dizin oluşturun ve bu dizine geçin.
mkdir quickstart-sdk && cd quickstart-sdk
Python kodunuz için adlı
authoring_and_predict.py
bir dosya oluşturun.touch authoring_and_predict.py
pip ile istemci kitaplığını yükleme
Uygulama dizininde aşağıdaki komutu kullanarak Python için Language Understanding (LUIS) istemci kitaplığını yükleyin:
pip install azure-cognitiveservices-language-luis
Nesne Modeli Yazma
Language Understanding (LUIS) yazma istemcisi, yazma anahtarınızı içeren Azure'da kimlik doğrulaması yapan bir LUISAuthoringClient nesnesidir.
Yazma için kod örnekleri
İstemci oluşturulduktan sonra aşağıdaki işlevlere erişmek için bu istemciyi kullanın:
- Uygulamalar - oluşturma, silme, yayımlama
- Örnek konuşmalar - toplu olarak ekleme, kimlikle silme
- Özellikler - tümcecik listelerini yönetme
- Model - amaçları ve varlıkları yönetme
- Desen - desenleri yönetme
- Eğit - uygulamayı eğitin ve eğitim durumunu yoklama
- Sürümler - kopyalama, dışarı aktarma ve silme ile yönetme
Tahmin Nesnesi modeli
Language Understanding (LUIS) tahmin çalışma zamanı istemcisi, kaynak anahtarınızı içeren Azure'da kimlik doğrulaması yapan bir LUISRuntimeClient nesnesidir.
Tahmin çalışma zamanı için kod örnekleri
İstemci oluşturulduktan sonra aşağıdaki işlevlere erişmek için bu istemciyi kullanın:
Kod örnekleri
Bu kod parçacıkları, python için Language Understanding (LUIS) istemci kitaplığıyla aşağıdakileri nasıl yapacağınızı gösterir:
- Uygulama oluşturma
- Amaç ekleme
- Varlık ekleme
- Örnek konuşmalar ekleme
- Uygulamayı eğitin
- Uygulamayı yayımlama
- Yuvaya göre tahmin
Bağımlılıkları ekleme
İstemci kitaplıklarını Python dosyasına ekleyin.
from azure.cognitiveservices.language.luis.authoring import LUISAuthoringClient
from azure.cognitiveservices.language.luis.authoring.models import ApplicationCreateObject
from azure.cognitiveservices.language.luis.runtime import LUISRuntimeClient
from msrest.authentication import CognitiveServicesCredentials
from functools import reduce
import json, time, uuid
Ortak kod ekleme
quickstart
yöntemini ve çağrısını ekleyin. Bu yöntem, kalan kodun çoğunu tutar. Bu yöntem dosyanın sonunda çağrılır.def quickstart(): # add calls here, remember to indent properly quickstart()
Aksi belirtilmedikçe kalan kodu hızlı başlangıç yöntemine ekleyin.
Uygulama için değişkenler oluşturma
İki değişken kümesi oluşturun: değiştirdiğiniz ilk küme, ikinci küme kod örneğinde göründükleri gibi ayrılır.
Önemli
İşiniz bittiğinde anahtarı kodunuzdan kaldırmayı unutmayın ve asla herkese açık olarak göndermeyin. Üretim için Azure Key Vault gibi kimlik bilgilerinizi depolamanın ve bunlara erişmenin güvenli bir yolunu kullanın. Daha fazla bilgi için Azure AI hizmetleri güvenlik makalesine bakın.
Yazma anahtarınızı ve kaynak adlarınızı tutmak için değişkenler oluşturun.
authoringKey = 'PASTE_YOUR_LUIS_AUTHORING_SUBSCRIPTION_KEY_HERE' authoringEndpoint = 'PASTE_YOUR_LUIS_AUTHORING_ENDPOINT_HERE' predictionKey = 'PASTE_YOUR_LUIS_PREDICTION_SUBSCRIPTION_KEY_HERE' predictionEndpoint = 'PASTE_YOUR_LUIS_PREDICTION_ENDPOINT_HERE'
Uç noktalarınızı, uygulama adınızı, sürümünüzü ve amaç adınızı barındıracak değişkenler oluşturun.
# We use a UUID to avoid name collisions. appName = "Contoso Pizza Company " + str(uuid.uuid4()) versionId = "0.1" intentName = "OrderPizzaIntent"
İstemcinin kimliğini doğrulama
Anahtarınız ile bir CognitiveServicesCredentials nesnesi oluşturun ve bunu uç noktanızla birlikte kullanarak bir LUISAuthoringClient nesnesi oluşturun.
client = LUISAuthoringClient(authoringEndpoint, CognitiveServicesCredentials(authoringKey))
LUIS uygulaması oluşturma
LUIS uygulaması amaçlar, varlıklar ve örnek konuşmalar dahil olmak üzere doğal dil işleme (NLP) modelini içerir.
Uygulamayı oluşturmak için bir AppsOperation nesnesinin ekleme yöntemini oluşturun. Ad ve dil kültürü gerekli özelliklerdir.
# define app basics
appDefinition = ApplicationCreateObject (name=appName, initial_version_id=versionId, culture='en-us')
# create app
app_id = client.apps.add(appDefinition)
# get app id - necessary for all other changes
print("Created LUIS app with ID {}".format(app_id))
Uygulama için amaç oluşturma
Luis uygulamasının modelindeki birincil nesne amaçtır. Amaç, kullanıcı konuşma amaçlarının bir gruplamasıyla uyumlu hale geliyor. Kullanıcı bir soru sorabilir veya bottan (veya başka bir istemci uygulamasından) belirli bir hedeflenen yanıtı arayan bir bildirimde bulunabilir. Amaçlara örnek olarak uçuş rezervasyonu yapma, varış şehrindeki hava durumu hakkında bilgi isteme ve müşteri hizmetleri için iletişim bilgilerini sorma verilebilir.
Benzersiz amacın adıyla model.add_intent yöntemini kullanın, ardından uygulama kimliğini, sürüm kimliğini ve yeni amaç adını geçirin.
intentName
Değer, Uygulama için değişken oluşturma bölümündeki değişkenlerin bir parçası olarak sabit olarak kodlanırOrderPizzaIntent
.
client.model.add_intent(app_id, versionId, intentName)
Uygulama için varlık oluşturma
Varlıklar gerekli olmasa da çoğu uygulamada bulunur. Varlık, kullanıcının amacını tam olarak yerine getirmek için gereken bilgileri kullanıcı konuşmasından ayıklar. Her biri kendi veri dönüştürme nesnesi (DTO) modellerine sahip çeşitli önceden oluşturulmuş ve özel varlık türleri vardır. Uygulamanıza eklenecek yaygın önceden oluşturulmuş varlıklar arasında number, datetimeV2, geographyV2, ordinal bulunur.
Varlıkların bir amaç ile işaretlenmediğini bilmek önemlidir. Bu kişiler çoğu amaç için geçerli olabilir ve genellikle geçerlidir. Yalnızca örnek kullanıcı konuşmaları belirli, tek bir amaç için işaretlenir.
Varlıklar için oluşturma yöntemleri ModelOperations sınıfının bir parçasıdır. Her varlık türünün kendi veri dönüştürme nesnesi (DTO) modeli vardır.
Varlık oluşturma kodu, alt varlıklara ve alt varlıklara uygulanan özelliklere sahip bir makine öğrenmesi Quantity
varlığı oluşturur.
# Add Prebuilt entity
client.model.add_prebuilt(app_id, versionId, prebuilt_extractor_names=["number"])
# define machine-learned entity
mlEntityDefinition = [
{
"name": "Pizza",
"children": [
{ "name": "Quantity" },
{ "name": "Type" },
{ "name": "Size" }
]
},
{
"name": "Toppings",
"children": [
{ "name": "Type" },
{ "name": "Quantity" }
]
}]
# add entity to app
modelId = client.model.add_entity(app_id, versionId, name="Pizza order", children=mlEntityDefinition)
# define phraselist - add phrases as significant vocabulary to app
phraseList = {
"enabledForAllModels": False,
"isExchangeable": True,
"name": "QuantityPhraselist",
"phrases": "few,more,extra"
}
# add phrase list to app
phraseListId = client.features.add_phrase_list(app_id, versionId, phraseList)
# Get entity and subentities
modelObject = client.model.get_entity(app_id, versionId, modelId)
toppingQuantityId = get_grandchild_id(modelObject, "Toppings", "Quantity")
pizzaQuantityId = get_grandchild_id(modelObject, "Pizza", "Quantity")
# add model as feature to subentity model
prebuiltFeatureRequiredDefinition = { "model_name": "number", "is_required": True }
client.features.add_entity_feature(app_id, versionId, pizzaQuantityId, prebuiltFeatureRequiredDefinition)
# add model as feature to subentity model
prebuiltFeatureNotRequiredDefinition = { "model_name": "number" }
client.features.add_entity_feature(app_id, versionId, toppingQuantityId, prebuiltFeatureNotRequiredDefinition)
# add phrase list as feature to subentity model
phraseListFeatureDefinition = { "feature_name": "QuantityPhraselist", "model_name": None }
client.features.add_entity_feature(app_id, versionId, toppingQuantityId, phraseListFeatureDefinition)
Özellikleri bu alt varlığa atamak için Quantity alt öğesinin kimliğini bulmak için yönteminin üstüne quickstart
aşağıdaki yöntemi koyun.
def get_grandchild_id(model, childName, grandChildName):
theseChildren = next(filter((lambda child: child.name == childName), model.children))
theseGrandchildren = next(filter((lambda child: child.name == grandChildName), theseChildren.children))
grandChildId = theseGrandchildren.id
return grandChildId
Amaca örnek konuşma ekleme
Bir konuşmanın amacını belirlemek ve varlıkları ayıklamak için uygulamanın konuşma örneklerine ihtiyacı vardır. Örneklerin belirli, tek bir amacı hedeflemesi ve tüm özel varlıkları işaretlemesi gerekir. Önceden oluşturulmuş varlıkların işaretlenmesi gerekmez.
Her örnek konuşma için bir nesne olan ExampleLabelObject nesnelerinin listesini oluşturarak örnek konuşmalar ekleyin. Her örnek, tüm varlıkları varlık adı ve varlık değeri ad/değer çiftleri sözlüğüyle işaretlemelidir. Varlık değeri, örnek konuşmanın metninde göründüğü gibi olmalıdır.
Arama örnekleri.uygulama kimliği, sürüm kimliği ve örnekle birlikte ekleyin .
# Define labeled example
labeledExampleUtteranceWithMLEntity = {
"text": "I want two small seafood pizzas with extra cheese.",
"intentName": intentName,
"entityLabels": [
{
"startCharIndex": 7,
"endCharIndex": 48,
"entityName": "Pizza order",
"children": [
{
"startCharIndex": 7,
"endCharIndex": 30,
"entityName": "Pizza",
"children": [
{
"startCharIndex": 7,
"endCharIndex": 9,
"entityName": "Quantity"
},
{
"startCharIndex": 11,
"endCharIndex": 15,
"entityName": "Size"
},
{
"startCharIndex": 17,
"endCharIndex": 23,
"entityName": "Type"
}]
},
{
"startCharIndex": 37,
"endCharIndex": 48,
"entityName": "Toppings",
"children": [
{
"startCharIndex": 37,
"endCharIndex": 41,
"entityName": "Quantity"
},
{
"startCharIndex": 43,
"endCharIndex": 48,
"entityName": "Type"
}]
}
]
}
]
}
print("Labeled Example Utterance:", labeledExampleUtteranceWithMLEntity)
# Add an example for the entity.
# Enable nested children to allow using multiple models with the same name.
# The quantity subentity and the phraselist could have the same exact name if this is set to True
client.examples.add(app_id, versionId, labeledExampleUtteranceWithMLEntity, { "enableNestedChildren": True })
Uygulamayı eğitme
Model oluşturulduktan sonra LUIS uygulamasının modelin bu sürümü için eğitilmesi gerekir. Eğitilmiş model kapsayıcıda kullanılabilir veya hazırlama veya ürün yuvalarında yayımlanabilir.
train.train_version yöntemi için uygulama kimliği ve sürüm kimliği gerekir.
Bu hızlı başlangıç gösterileri gibi çok küçük bir model çok hızlı bir şekilde eğitilecektir. Üretim düzeyindeki uygulamalarda eğitim, eğitimin ne zaman başarılı olduğunu veya başarılı olup olmadığını belirlemek için get_status yöntemine yönelik bir yoklama çağrısı içermelidir. Yanıt, her nesne için ayrı bir duruma sahip ModelTrainingInfo nesnelerinin listesidir. Eğitimin tamamlandı olarak kabul edilmesi için tüm nesnelerin başarılı olması gerekir.
client.train.train_version(app_id, versionId)
waiting = True
while waiting:
info = client.train.get_status(app_id, versionId)
# get_status returns a list of training statuses, one for each model. Loop through them and make sure all are done.
waiting = any(map(lambda x: 'Queued' == x.details.status or 'InProgress' == x.details.status, info))
if waiting:
print ("Waiting 10 seconds for training to complete...")
time.sleep(10)
else:
print ("trained")
waiting = False
Uygulamayı üretim yuvasında yayımlama
app.publish yöntemini kullanarak LUIS uygulamasını yayımlayın . Bu, geçerli eğitilmiş sürümü uç noktada belirtilen yuvaya yayımlar. İstemci uygulamanız, amaç ve varlık ayıklama tahmini için kullanıcı konuşmaları göndermek için bu uç noktayı kullanır.
# Mark the app as public so we can query it using any prediction endpoint.
# Note: For production scenarios, you should instead assign the app to your own LUIS prediction endpoint. See:
# https://docs.microsoft.com/en-gb/azure/cognitive-services/luis/luis-how-to-azure-subscription#assign-a-resource-to-an-app
client.apps.update_settings(app_id, is_public=True)
responseEndpointInfo = client.apps.publish(app_id, versionId, is_staging=False)
Tahmin çalışma zamanı istemcisinin kimliğini doğrulama
Kimlik bilgileri nesnesini anahtarınız ile kullanın ve bir LUISRuntimeClientConfiguration nesnesi oluşturmak için uç noktanızla birlikte kullanın.
Dikkat
Bu hızlı başlangıçta çalışma zamanı kimlik bilgilerinin bir parçası olarak yazma anahtarı kullanılır. Yazma anahtarının çalışma zamanını birkaç sorguyla sorgulamasına izin verilir. Hazırlama ve üretim düzeyi kodu için yazma anahtarını tahmin çalışma zamanı anahtarıyla değiştirin.
runtimeCredentials = CognitiveServicesCredentials(predictionKey)
clientRuntime = LUISRuntimeClient(endpoint=predictionEndpoint, credentials=runtimeCredentials)
Çalışma zamanından tahmin alma
İsteği tahmin çalışma zamanına oluşturmak için aşağıdaki kodu ekleyin.
Kullanıcı ifadesi, prediction_request nesnesinin bir parçasıdır.
get_slot_prediction yöntemi, isteği karşılamak için uygulama kimliği, yuva adı ve tahmin isteği nesnesi gibi çeşitli parametrelere ihtiyaç duyar. Ayrıntılı, tüm amaçları göster ve günlük gibi diğer seçenekler isteğe bağlıdır. İstek bir PredictionResponse nesnesi döndürür.
# Production == slot name
predictionRequest = { "query" : "I want two small pepperoni pizzas with more salsa" }
predictionResponse = clientRuntime.prediction.get_slot_prediction(app_id, "Production", predictionRequest)
print("Top intent: {}".format(predictionResponse.prediction.top_intent))
print("Sentiment: {}".format (predictionResponse.prediction.sentiment))
print("Intents: ")
for intent in predictionResponse.prediction.intents:
print("\t{}".format (json.dumps (intent)))
print("Entities: {}".format (predictionResponse.prediction.entities))
Tahmin yanıtı, amacı ve bulunan varlıkları içeren bir JSON nesnesidir.
{
"query": "I want two small pepperoni pizzas with more salsa",
"prediction": {
"topIntent": "OrderPizzaIntent",
"intents": {
"OrderPizzaIntent": {
"score": 0.753606856
},
"None": {
"score": 0.119097039
}
},
"entities": {
"Pizza order": [
{
"Pizza": [
{
"Quantity": [
2
],
"Type": [
"pepperoni"
],
"Size": [
"small"
],
"$instance": {
"Quantity": [
{
"type": "builtin.number",
"text": "two",
"startIndex": 7,
"length": 3,
"score": 0.968156934,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Type": [
{
"type": "Type",
"text": "pepperoni",
"startIndex": 17,
"length": 9,
"score": 0.9345611,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Size": [
{
"type": "Size",
"text": "small",
"startIndex": 11,
"length": 5,
"score": 0.9592077,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"Toppings": [
{
"Type": [
"salsa"
],
"Quantity": [
"more"
],
"$instance": {
"Type": [
{
"type": "Type",
"text": "salsa",
"startIndex": 44,
"length": 5,
"score": 0.7292897,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Quantity": [
{
"type": "Quantity",
"text": "more",
"startIndex": 39,
"length": 4,
"score": 0.9320932,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"$instance": {
"Pizza": [
{
"type": "Pizza",
"text": "two small pepperoni pizzas",
"startIndex": 7,
"length": 26,
"score": 0.812199831,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
],
"Toppings": [
{
"type": "Toppings",
"text": "more salsa",
"startIndex": 39,
"length": 10,
"score": 0.7250252,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
],
"$instance": {
"Pizza order": [
{
"type": "Pizza order",
"text": "two small pepperoni pizzas with more salsa",
"startIndex": 7,
"length": 42,
"score": 0.769223332,
"modelTypeId": 1,
"modelType": "Entity Extractor",
"recognitionSources": [
"model"
]
}
]
}
}
}
}
Uygulamayı çalıştırma
Uygulamayı hızlı başlangıç dosyanızdaki python
komutuyla çalıştırın.
python authoring_and_predict.py
Bu hızlı başlangıcı izleyerek sırayla üç REST çağrısı yapacaksınız.
- İlk olarak, REST Batch etiket ekleme çağrısını kullanarak Pizza uygulama modelini eğitmek için kullanılacak bir grup örnek ifadeyi karşıya yükleyebilirsiniz.
- Ardından, REST Train uygulama sürümü çağrısını kullanarak Pizza uygulaması için bir eğitim oturumu başlatacaksınız.
- Son olarak, REST Get sürüm eğitimi durum çağrısını kullanarak Pizza uygulaması için eğitim oturumunun durumunu alırsınız.
Önkoşullar
Ücretsiz bir LUIS hesabı.
Visual Studio Code gibi bir metin düzenleyicisi.
Komut satırı programı cURL. cURL programı macOS, çoğu Linux dağıtımı ve Windows 10 derleme 1803 ve üzeri sürümlerde zaten yüklüdür.
cURL yüklemeniz gerekiyorsa cURL indirme sayfasından cURL'yi indirebilirsiniz.
Pizza uygulaması oluşturma
Pizza uygulamasını oluşturun.
- Dosyanın GitHub sayfasını açmak için pizza-app-for-luis-v6.json seçin
pizza-app-for-luis.json
. - Ham düğmesine sağ tıklayın veya uzun dokunun ve bağlantıyı farklı kaydet'i seçerek bilgisayarınıza kaydedin
pizza-app-for-luis.json
. - LUIS portalında oturum açın.
- Uygulamalarım'ı seçin.
- Uygulamalarım sayfasında + Konuşma için yeni uygulama'yı seçin.
- JSON olarak içeri aktar'ı seçin.
- Yeni uygulamayı içeri aktar iletişim kutusunda Dosya Seç düğmesini seçin.
pizza-app-for-luis.json
İndirdiğiniz dosyayı ve ardından Aç'ı seçin.- Yeni uygulamayı içeri aktar iletişim kutusu Adı alanına Pizza uygulamanız için bir ad girin ve Bitti düğmesini seçin.
Uygulama içeri aktarılır.
Etkili bir LUIS uygulaması oluşturma iletişim kutusu görürseniz iletişim kutusunu kapatın.
Pizza uygulamasını eğitin ve yayımlayın
Pizza uygulamasında amaçların listesini içeren Amaçlar sayfasını görmeniz gerekir.
LUIS web sitesinin sağ üst kısmında Eğit düğmesini seçin.
Eğit düğmesi devre dışı bırakıldığında eğitim tamamlanır.
Sohbet botunda veya diğer istemci uygulamalarında LUIS tahmini almak için uygulamayı tahmin uç noktasında yayımlamanız gerekir.
Sağ üst gezinti bölmesinde Yayımla'yı seçin.
Üretim yuvasını ve ardından Bitti'yi seçin.
Azure Kaynakları sayfasına gitmek için bildirimde Uç nokta URL'lerinize eriş'i seçin. URL'leri yalnızca uygulamayla ilişkilendirilmiş bir tahmin kaynağınız varsa görebilirsiniz. Yönet'e tıklayarak Azure Kaynakları sayfasını da bulabilirsiniz.
Pizza uygulamasına yazma kaynağı ekleme
- YÖNET'i seçin.
- Azure Kaynakları’nı seçin.
- Yazma Kaynağı'nı seçin.
- Yazma kaynağını değiştir'i seçin.
Yazma kaynağınız varsa, yazma kaynağınızın Kiracı Adı, Abonelik Adı ve LUIS kaynak adını girin.
Yazma kaynağınız yoksa:
- Yeni kaynak oluştur'u seçin.
- Kiracı Adı, Kaynak Adı, Abonelik Adı ve Azure Kaynak Grubu Adı girin.
Pizza uygulamanız artık kullanıma hazırdır.
Pizza uygulamanız için erişim değerlerini kaydetme
Yeni Pizza uygulamanızı kullanmak için Pizza uygulamanızın uygulama kimliği, yazma anahtarı ve yazma uç noktası gerekir. Tahminleri almak için ayrı tahmin uç noktanız ve tahmin anahtarınız olması gerekir.
Bu değerleri bulmak için:
- Amaçlar sayfasında YÖNET'i seçin.
- Uygulama Ayarları sayfasından Uygulama Kimliğini kaydedin.
- Azure Kaynakları’nı seçin.
- Yazma Kaynağı'nı seçin.
- Yazma Kaynağı ve Tahmin Kaynakları sekmelerinden Birincil Anahtarı kaydedin. Bu değer yazma anahtarınızdır.
- Uç Nokta URL'sini kaydedin. Bu değer, yazma uç noktanızdır.
Pizza uygulamasını eğitmek için JSON dosyası oluşturma
Üç örnek konuşma içeren bir JSON dosyası oluşturmak için aşağıdaki JSON verilerini adlı ExampleUtterances.JSON
bir dosyaya kaydedin:
[
{
"text": "order a pizza",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 6,
"endCharIndex": 12
}
]
},
{
"text": "order a large pepperoni pizza",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 6,
"endCharIndex": 28
},
{
"entityName": "FullPizzaWithModifiers",
"startCharIndex": 6,
"endCharIndex": 28
},
{
"entityName": "PizzaType",
"startCharIndex": 14,
"endCharIndex": 28
},
{
"entityName": "Size",
"startCharIndex": 8,
"endCharIndex": 12
}
]
},
{
"text": "I want two large pepperoni pizzas on thin crust",
"intentName": "ModifyOrder",
"entityLabels": [
{
"entityName": "Order",
"startCharIndex": 7,
"endCharIndex": 46
},
{
"entityName": "FullPizzaWithModifiers",
"startCharIndex": 7,
"endCharIndex": 46
},
{
"entityName": "PizzaType",
"startCharIndex": 17,
"endCharIndex": 32
},
{
"entityName": "Size",
"startCharIndex": 11,
"endCharIndex": 15
},
{
"entityName": "Quantity",
"startCharIndex": 7,
"endCharIndex": 9
},
{
"entityName": "Crust",
"startCharIndex": 37,
"endCharIndex": 46
}
]
}
]`
JSON örnek konuşmaları belirli bir biçimi izler.
text
alanı, örnek konuşmanın metnini içerir. intentName
alanı, LUIS uygulaması içindeki mevcut bir amacın adına karşılık gelmelidir. entityLabels
alanı gereklidir. Herhangi bir varlığı etiketlemek istemiyorsanız, boş bir dizi girin.
entityLabels dizisi boş değilse startCharIndex
ve endCharIndex
değerlerinin entityName
alanında başvurulan varlığı işaretlemesi gerekir. Dizin sıfır tabanlıdır. Etiketi metindeki bir boşlukta başlatır veya sonlarsanız, konuşmaları eklemek için API çağrısı başarısız olur.
Örnek konuşmalar ekleme
Örnek konuşmaların toplu işlemini karşıya yüklemek için bu komutu metin düzenleyicinize kopyalayın:
curl "***YOUR-AUTHORING-ENDPOINT***/luis/authoring/v3.0-preview/apps/***YOUR-APP-ID***/versions/***YOUR-APP-VERSION***/examples?verbose=true&show-all-intents=true" ^ --request POST ^ --header "Content-Type:application/json" ^ --header "Ocp-Apim-Subscription-Key: ***YOUR-AUTHORING-KEY***" ^ --data "@ExampleUtterances.JSON"
ile
***YOUR-
başlayan değerleri kendi değerlerinizle değiştirin.Bilgiler Purpose ***YOUR-AUTHORING-ENDPOINT***
Yazma URL'si uç noktanız. Örneğin, "https://REPLACE-WITH-YOUR-RESOURCE-NAME.api.cognitive.microsoft.com/". Kaynağı oluştururken kaynak adınızı ayarlarsınız. ***YOUR-APP-ID***
LUIS uygulama kimliğiniz. ***YOUR-APP-VERSION***
LUIS uygulama sürümünüz. Pizza uygulaması için sürüm numarası, tırnak işaretleri olmadan "0.1" şeklindedir. ***YOUR-AUTHORING-KEY***
32 karakter yazma anahtarınız. Atanan anahtarlar ve kaynaklar Luis portalında, Azure kaynakları sayfasındaki Yönet bölümünde görünür. Uygulama kimliği, Uygulama Ayarları sayfasındaki aynı Yönet bölümünde bulunur.
Bir Komut İstemi (Windows) veya Terminal (macOS ve Linux) başlatın ve dizinleri dosyayı kaydettiğiniz dizinle
ExampleUtterances.JSON
değiştirin.Düzenleyiciden cURL komutunu kopyalayın ve komut istemine (Windows) veya Terminal'e (macOS ve Linux) yapıştırın. Komutu yürütmek için Enter tuşuna basın.
Aşağıdaki yanıtı görmeniz gerekir:
[{"value":{"ExampleId":1255129706,"UtteranceText":"order a pizza"},"hasError":false},{"value":{"ExampleId":1255129707,"UtteranceText":"order a large pepperoni pizza"},"hasError":false},{"value":{"ExampleId":1255129708,"UtteranceText":"i want two large pepperoni pizzas on thin crust"},"hasError":false}]
Okunabilirlik için biçimlendirilmiş çıktı aşağıdadır:
[ { "value": { "ExampleId": 1255129706, "UtteranceText": "order a pizza" }, "hasError": false }, { "value": { "ExampleId": 1255129707, "UtteranceText": "order a large pepperoni pizza" }, "hasError": false }, { "value": { "ExampleId": 1255129708, "UtteranceText": "i want two large pepperoni pizzas on thin crust" }, "hasError": false } ]
Pizza uygulama modelini eğitin
Pizza uygulaması için bir eğitim oturumu başlatmak için şu komutu metin düzenleyicinize kopyalayın:
curl "***YOUR-AUTHORING-ENDPOINT***/luis/authoring/v3.0-preview/apps/***YOUR-APP-ID***/versions/***YOUR-APP-VERSION***/train?verbose=true&show-all-intents=true" ^ --data "" ^ --request POST ^ --header "Content-Type:application/json" ^ --header "Ocp-Apim-Subscription-Key: ***YOUR-AUTHORING-KEY***"
Daha önce yaptığınız gibi, ile
***YOUR-
başlayan değerleri kendi değerlerinizle değiştirin.Düzenleyiciden cURL komutunu kopyalayın ve komut istemine (Windows) veya Terminal'e (macOS ve Linux) yapıştırın. Komutu yürütmek için Enter tuşuna basın.
Aşağıdaki yanıtı görmeniz gerekir:
{"statusId":2,"status":"UpToDate"}
Okunabilirlik için biçimlendirilmiş çıktı aşağıdadır:
{ "statusId": 2, "status": "UpToDate" }
Eğitimin durumunu alma
Eğitim oturumunun eğitim durumunu almak için bu komutu metin düzenleyicinize kopyalayın:
curl "***YOUR-AUTHORING-ENDPOINT***/luis/authoring/v3.0-preview/apps/***YOUR-APP-ID***/versions/***YOUR-APP-VERSION***/train?verbose=true&show-all-intents=true" ^ --request GET ^ --header "Content-Type:application/json" ^ --header "Ocp-Apim-Subscription-Key: ***YOUR-AUTHORING-KEY***"
Daha önce yaptığınız gibi, ile
***YOUR-
başlayan değerleri kendi değerlerinizle değiştirin.Düzenleyiciden cURL komutunu kopyalayın ve komut istemine (Windows) veya Terminal'e (macOS ve Linux) yapıştırın. Komutu yürütmek için Enter tuşuna basın.
Aşağıdaki yanıtı görmeniz gerekir:
[{"modelId":"8eb7ad8f-5db5-4c28-819b-ca3905fffd80","details":{"statusId":2,"status":"UpToDate","exampleCount":171}},{"modelId":"6f53bc92-ae54-44ce-bc4e-010d1f8cfda0","details":{"statusId":2,"status":"UpToDate","exampleCount":171}},{"modelId":"6cb17888-ad6e-464c-82c0-d37fd1f2c4f8","details":{"statusId":2,"status":"UpToDate","exampleCount":171}},{"modelId":"a16fc4fd-1949-4e77-9de3-30369f16c3a5","details":{"statusId":2,"status":"UpToDate","exampleCount":171}},{"modelId":"6bacdb75-1889-4f93-8971-8c8995ff8960","details":{"statusId":2,"status":"UpToDate","exampleCount":171}},{"modelId":"be963f4c-4898-48d7-9eba-3c6af0867b9d","details":{"statusId":2,"status":"UpToDate","exampleCount":171}}]
Okunabilirlik için biçimlendirilmiş çıktı aşağıdadır:
[ { "modelId": "8eb7ad8f-5db5-4c28-819b-ca3905fffd80", "details": { "statusId": 2, "status": "UpToDate", "exampleCount": 171 } }, { "modelId": "6f53bc92-ae54-44ce-bc4e-010d1f8cfda0", "details": { "statusId": 2, "status": "UpToDate", "exampleCount": 171 } }, { "modelId": "6cb17888-ad6e-464c-82c0-d37fd1f2c4f8", "details": { "statusId": 2, "status": "UpToDate", "exampleCount": 171 } }, { "modelId": "a16fc4fd-1949-4e77-9de3-30369f16c3a5", "details": { "statusId": 2, "status": "UpToDate", "exampleCount": 171 } }, { "modelId": "6bacdb75-1889-4f93-8971-8c8995ff8960", "details": { "statusId": 2, "status": "UpToDate", "exampleCount": 171 } }, { "modelId": "be963f4c-4898-48d7-9eba-3c6af0867b9d", "details": { "statusId": 2, "status": "UpToDate", "exampleCount": 171 } } ]
Tahmin uç noktasından amaç alma
Tahmin uç noktasını sorgulamak ve tahmin sonucu almak için cURL kullanın.
Not
Bu komut tahmin uç noktanızı kullanır.
Bu komutu metin düzenleyicinize kopyalayın:
curl "https://***YOUR-PREDICTION-ENDPOINT***/luis/prediction/v3.0/apps/***YOUR-APP-ID***/slots/production/predict" ^ --request GET ^ --get ^ --data "subscription-key=***YOUR-PREDICTION-KEY***" ^ --data "verbose=true" ^ --data "show-all-intents=true" ^ --data-urlencode "query=I want two large pepperoni pizzas on thin crust please"
ile
***YOUR-
başlayan değerleri kendi değerlerinizle değiştirin.Bilgiler Purpose ***YOUR-PREDICTION-ENDPOINT***
Tahmin URL'si uç noktanız. Uygulamanızın LUIS portalı, Azure Kaynakları sayfasında bulunur.
Örneğin,https://westus.api.cognitive.microsoft.com/
.***YOUR-APP-ID***
Uygulama kimliğiniz. Luis portalında, uygulamanızın Uygulama Ayarları sayfasında bulunur. ***YOUR-PREDICTION-KEY***
32 karakterlik tahmin anahtarınız. Uygulamanızın LUIS portalı, Azure Kaynakları sayfasında bulunur. Komutu yürütmek için metni konsol penceresine kopyalayın ve Enter tuşuna basın:
JSON olarak döndürülen tahmin yanıtını gözden geçirin:
{"query":"I want two large pepperoni pizzas on thin crust please","prediction":{"topIntent":"ModifyOrder","intents":{"ModifyOrder":{"score":1.0},"None":{"score":8.55E-09},"Greetings":{"score":1.82222226E-09},"CancelOrder":{"score":1.47272727E-09},"Confirmation":{"score":9.8125E-10}},"entities":{"Order":[{"FullPizzaWithModifiers":[{"PizzaType":["pepperoni pizzas"],"Size":[["Large"]],"Quantity":[2],"Crust":[["Thin"]],"$instance":{"PizzaType":[{"type":"PizzaType","text":"pepperoni pizzas","startIndex":17,"length":16,"score":0.9978157,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Size":[{"type":"SizeList","text":"large","startIndex":11,"length":5,"score":0.9984481,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Quantity":[{"type":"builtin.number","text":"two","startIndex":7,"length":3,"score":0.999770939,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"Crust":[{"type":"CrustList","text":"thin crust","startIndex":37,"length":10,"score":0.933985531,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}]}}],"$instance":{"FullPizzaWithModifiers":[{"type":"FullPizzaWithModifiers","text":"two large pepperoni pizzas on thin crust","startIndex":7,"length":40,"score":0.90681237,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}]}}],"ToppingList":[["Pepperoni"]],"$instance":{"Order":[{"type":"Order","text":"two large pepperoni pizzas on thin crust","startIndex":7,"length":40,"score":0.9047088,"modelTypeId":1,"modelType":"Entity Extractor","recognitionSources":["model"]}],"ToppingList":[{"type":"ToppingList","text":"pepperoni","startIndex":17,"length":9,"modelTypeId":5,"modelType":"List Entity Extractor","recognitionSources":["model"]}]}}}}
Okunabilirlik için biçimlendirilmiş JSON yanıtı:
{ "query": "I want two large pepperoni pizzas on thin crust please", "prediction": { "topIntent": "ModifyOrder", "intents": { "ModifyOrder": { "score": 1.0 }, "None": { "score": 8.55e-9 }, "Greetings": { "score": 1.82222226e-9 }, "CancelOrder": { "score": 1.47272727e-9 }, "Confirmation": { "score": 9.8125e-10 } }, "entities": { "Order": [ { "FullPizzaWithModifiers": [ { "PizzaType": [ "pepperoni pizzas" ], "Size": [ [ "Large" ] ], "Quantity": [ 2 ], "Crust": [ [ "Thin" ] ], "$instance": { "PizzaType": [ { "type": "PizzaType", "text": "pepperoni pizzas", "startIndex": 17, "length": 16, "score": 0.9978157, "modelTypeId": 1, "modelType": "Entity Extractor", "recognitionSources": [ "model" ] } ], "Size": [ { "type": "SizeList", "text": "large", "startIndex": 11, "length": 5, "score": 0.9984481, "modelTypeId": 1, "modelType": "Entity Extractor", "recognitionSources": [ "model" ] } ], "Quantity": [ { "type": "builtin.number", "text": "two", "startIndex": 7, "length": 3, "score": 0.999770939, "modelTypeId": 1, "modelType": "Entity Extractor", "recognitionSources": [ "model" ] } ], "Crust": [ { "type": "CrustList", "text": "thin crust", "startIndex": 37, "length": 10, "score": 0.933985531, "modelTypeId": 1, "modelType": "Entity Extractor", "recognitionSources": [ "model" ] } ] } } ], "$instance": { "FullPizzaWithModifiers": [ { "type": "FullPizzaWithModifiers", "text": "two large pepperoni pizzas on thin crust", "startIndex": 7, "length": 40, "score": 0.90681237, "modelTypeId": 1, "modelType": "Entity Extractor", "recognitionSources": [ "model" ] } ] } } ], "ToppingList": [ [ "Pepperoni" ] ], "$instance": { "Order": [ { "type": "Order", "text": "two large pepperoni pizzas on thin crust", "startIndex": 7, "length": 40, "score": 0.9047088, "modelTypeId": 1, "modelType": "Entity Extractor", "recognitionSources": [ "model" ] } ], "ToppingList": [ { "type": "ToppingList", "text": "pepperoni", "startIndex": 17, "length": 9, "modelTypeId": 5, "modelType": "List Entity Extractor", "recognitionSources": [ "model" ] } ] } } } }
Kaynakları temizleme
Uygulamayı LUIS portalından silebilir ve Azure portaldan Azure kaynaklarını silebilirsiniz.
REST API kullanıyorsanız, hızlı başlangıcı tamamladığınızda dosyayı dosya sisteminden silin ExampleUtterances.JSON
.
Sorun giderme
- İstemci kitaplığında kimlik doğrulaması - kimlik doğrulama hataları genellikle yanlış anahtar ve uç noktanın kullanıldığını gösterir. Bu hızlı başlangıçta kolaylık sağlamak amacıyla tahmin çalışma zamanı için yazma anahtarı ve uç noktası kullanılır, ancak yalnızca aylık kotayı henüz kullanmadıysanız çalışır. Yazma anahtarını ve uç noktayı kullanamıyorsanız, tahmin çalışma zamanı SDK'sı istemci kitaplığına erişirken tahmin çalışma zamanı anahtarını ve uç noktasını kullanmanız gerekir.
- Varlık oluşturma - Bu öğreticide kullanılan iç içe makine öğrenmesi varlığını oluştururken hata alırsanız kodu kopyaladığınızdan ve kodu değiştirerek farklı bir varlık oluşturmadığınızdan emin olun.
- Örnek konuşma oluşturma - Bu öğreticide kullanılan etiketli örnek ifadeyi oluştururken hata alırsanız, kodu kopyaladığınızdan ve farklı bir etiketlenmiş örnek oluşturmak için kodu değiştirmediğinizden emin olun.
- Eğitim - Eğitim hatası alırsanız, bu genellikle boş bir uygulamayı (örnek konuşmaları içeren amaç yok) veya hatalı biçimlendirilmiş amaçlara veya varlıklara sahip bir uygulamayı gösterir.
- Çeşitli hatalar : Kod, metin ve JSON nesneleriyle istemci kitaplıklarına çağırdığı için kodu değiştirmediğinizden emin olun.
Diğer hatalar : Önceki listede ele alınmayan bir hata alırsanız, bu sayfanın alt kısmından geri bildirim sağlayarak bize bildirin. Yüklediğiniz istemci kitaplıklarının programlama dilini ve sürümünü ekleyin.