Hızlı Başlangıç: Language Understanding (LUIS) istemci kitaplıkları ve REST API

Not

Dil için Azure Bilişsel Language Understanding kapsamında artık yeni bir Language Understanding sürümü kullanılabilir. Daha fazla bilgi için bkz. Dil için Azure Bilişsel Hizmet Belgeleri. Dil Hizmeti'nin içindeki dil anlama özellikleri için bkz. Konuşma Language Understanding, Özel Adlandırılmış Varlık Tanımave Özel Sınıflandırma.

C#, Python veya JavaScript kullanarak bu hızlı başlangıç ile LUIS SDK istemci kitaplıkları ile bir Azure LUIS yapay zeka (AI) uygulaması oluşturun ve sorgular. Ayrıca cURL'yi kullanarak istekleri göndermek için REST API.

Language Understanding (LUIS), genel anlamı tahmin etmek ve ilgili, ayrıntılı bilgileri çekmek için kullanıcının konuşma, doğal dil metnine doğal dil işleme (NLP) uygulamana olanak sağlar.

  • Yazma istemci kitaplığı ve REST API LUIS uygulamanızı oluşturmanıza, düzenlemenize, eğitmenize ve yayımlamanıza olanak sağlar.
  • Tahmin çalışma zamanı istemci kitaplığı REST API, yayımlanan uygulamayı sorgulamaya olanak sağlar.

.NET için Language Understanding (LUSıS) istemci kitaplıklarını kullanın:

  • Uygulama oluşturun
  • Makine tarafından öğrenilen bir varlık (örneğin, örnek) ile bir amaç ekleyin
  • Uygulamayı eğitme ve yayımlama
  • Sorgu tahmini çalışma zamanı

Başvuru belgeleri | Yazma ve tahmin kitaplığı kaynak kodu | Yazma ve tahmin NuGet | C# örneği

Önkoşullar

  • Geçerli .NET Core sürümü ve .NET Core CLI.
  • Azure aboneliği- ücretsiz olarak bir tane oluşturun
  • Azure aboneliğiniz olduktan sonra, anahtarınızı ve uç noktanızı almak için Azure portal bir Language Understanding yazma kaynağı oluşturun . Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
    • Uygulamanızı Language Understanding yazmak üzere bağlamak için oluşturduğunuz kaynaktaki anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz. Hizmeti denemek için ücretsiz fiyatlandırma katmanını ( F0 ) kullanabilirsiniz.

Ayarlanıyor

Yeni bir C# uygulaması oluşturma

Tercih ettiğiniz düzenleyicide veya IDE 'de yeni bir .NET Core uygulaması oluşturun.

  1. Konsol penceresinde (cmd, PowerShell veya Bash gibi), new ad ile yeni bir konsol uygulaması oluşturmak için DotNet komutunu kullanın language-understanding-quickstart . Bu komut, tek bir kaynak dosyası olan basit bir "Merhaba Dünya" C# projesi oluşturur: Program.cs .

    dotnet new console -n language-understanding-quickstart
    
  2. Dizininizi yeni oluşturulan uygulama klasörüyle değiştirin.

    cd language-understanding-quickstart
    
  3. Uygulamayı ile oluşturabilirsiniz:

    dotnet build
    

    Derleme çıktısı hiçbir uyarı veya hata içermemelidir.

    ...
    Build succeeded.
     0 Warning(s)
     0 Error(s)
    ...
    

NuGet kitaplıklarını yükler

Uygulama dizini içinde, aşağıdaki komutlarla .NET için Language Understanding (LUSıS) istemci kitaplıklarını yükleyeceksiniz:

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 (LUSıS) yazma istemcisi, yazma anahtarınızı içeren Azure 'da kimlik doğrulayan 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:

Tahmin nesnesi modeli

Language Understanding (LUSıS) tahmini çalışma zamanı istemcisi, kaynak anahtarınızı içeren Azure 'da kimlik doğrulayan 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 (LUSıS) istemci kitaplığı ile aşağıdakilerin nasıl yapılacağını göstermektedir:

Bağımlılıkları ekleme

Proje dizininden, tercih ettiğiniz düzenleyicide veya IDE 'de program. cs dosyasını açın. Mevcut kodu using 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

  1. Zaman uyumsuz çağrılara Main izin vermek için yönteminin imzasını değiştirme:

    public static async Task Main()
    
  2. Aksi belirtilmedikçe kodun geri Main kalanını sınıfının Program yöntemine ekleyin.

Uygulama için değişkenler oluşturma

İki değişken kümesi oluşturun: değiştir istediğiniz ilk küme, ikinci küme kod örneğinde görünen şekilde bırakın.

  1. 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";
    
  2. Uç noktalarınızı, uygulama adını, sürümü ve amaç adını tutmak için 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ız ile 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ç, varlık ve örnek konuşma gibi 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ğırma. 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 modelinde birincil nesne amaçtır. Amaç, kullanıcı konuşma amaçlarının bir gruplanmasıyla uyumlu olur. Kullanıcı bir soru sorabilir veya bottan (veya başka bir istemci uygulamasından) hedeflenen belirli bir yanıtı arayan bir ifadede olabilir. Amaç örnekleri arasında uçuş rezervasyonu, varış şehrinin hava durumu ve müşteri hizmetleri için iletişim bilgileri sorulma yer almaktadır.

Benzersiz bir amaç adıyla bir modelcreateobject oluşturun ve ardından uygulama kimliği, sürüm kimliği ve Modelcreateobject 'yi model. addi metoduna geçirin. Yanıt, amaç KIMLIĞIDIR.

intentNameDeğer, OrderPizzaIntent uygulama Için değişkenlerinizi oluşturma bölümünde değişkenlerin bir parçası olarak için sabit olarak kodlanır.

await client.Model.AddIntentAsync(appId, versionId, new ModelCreateObject()
{
    Name = intentName
});

Uygulama için varlık oluşturma

Varlıklar gerekli olmasa da, çoğu uygulama içinde bulunur. Varlık, kullanıcının amaç bilgisini almak için gerekli olan bilgileri Kullanıcı aracılığıyla ayıklar. Her biri kendi veri dönüştürme nesnesi (DTO) modelleriyle birlikte, çok sayıda önceden oluşturulmuş ve özel varlık türü vardır. Uygulamanıza eklenecek ortak önceden oluşturulmuş varlıklar Number, datetimeV2, geographyV2, Ordinaliçerir.

Varlıkların bir amaç ile işaretlenmediğini bilmek önemlidir. Bunlar, genellikle birçok amaç için uygulanabilir. Yalnızca belirli bir amaç için örnek Kullanıcı utbotları 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ü, genellikle model modeller ad alanındaki sözcüğü içeren kendi veri dönüştürme nesnesi (DTO) modeline sahiptir.

Varlık oluşturma kodu, alt varlıklara uygulanan alt varlıklar ve özelliklerle makine öğrenimi varlığı oluşturur Quantity .

' Miktar ' alt varlıklarına uygulanan alt varlıklar ve özellikler ile makine öğrenimi varlığı, oluşturulan varlığı gösteren portaldan kısmi ekran görüntüsü.

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

Bu alt varlığa Özellikler atamak için alt varlığın KIMLIĞINI bulmak üzere 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 göre örnek ekleme

Bir utterance 'in amacı ve ayıklama varlıklarını tespit etmek için, uygulama için örneklere örnek gerekir. Ö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, varlık adı ve varlık değerinin ad/değer çiftleri sözlüğüyle tüm varlıkları işaretlemeli. Varlık değeri, örnek konuşmanın metninde göründüğü gibi olmalı.

Portalda etiketlenmiş örnek ifadeyi gösteren kısmi ekran görüntüsü.

Uygulama kimliği, sürüm kimliği ve örnek ile Examples.AddAsync'i arayı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ğitilmiş olması gerekir. Eğitilen model bir kapsayıcıda kullanılabilir veyahazırlama veya ürün yuvalarında yayımlanır.

Train.TrainVersionAsync yöntemi için uygulama kimliği ve sürüm kimliği gerekir.

Bu hızlı başlangıçta olduğu gibi çok küçük bir model çok hızlı bir şekilde eğitecek. Üretim düzeyindeki uygulamalar için, eğitimin ne zaman veya başarılı olup olmadığını belirlemek için uygulamayı eğiterek GetStatusAsync yöntemine yönelik bir yoklama çağrısı içermesi gerekir. Yanıt, her nesne için ayrı durumu olan ModelTrainingInfo nesnelerinin listesidir. Eğitimin tamamlandı olarak kabul etmek 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ğitilen sürümü uç noktada belirtilen yuvada yayımlar. İstemci uygulamanız amaç ve varlık ayıklama tahmini için kullanıcı ifadeleri 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ız ile bir ApiKeyServiceClientCredentials nesnesi kullanın ve bunu uç noktanız ile birlikte kullanarak bir LUISRuntimeClient nesnesi oluşturun.

Dikkat

Bu hızlı başlangıç, yazma anahtarını çalışma zamanı kimlik bilgilerinin bir parçası olarak kullanır. Yazma anahtarı, çalışma zamanının birkaç sorguyla sorgulanmına izin verilir. Hazırlama ve üretim düzeyi kodu için, yazma anahtarını bir tahmin çalışma zamanı anahtarıyla değiştirin.

var runtimeClient = new LUISRuntimeClient(credentials) { Endpoint = predictionEndpoint };

Çalışma zamanından tahmin al

Tahmin çalışma zamanının isteğini oluşturmak için aşağıdaki kodu ekleyin.

Kullanıcı söylenişi, PredictionRequest nesnesinin bir parçasıdır.

GetSlotPredictionAsync yöntemi, isteği yerine getirmek IÇIN uygulama kimliği, yuva adı ve tahmin isteği nesnesi gibi çeşitli parametrelere ihtiyaç duyuyor. Verbose gibi diğer seçenekler, tüm hedefleri gösterir ve günlük 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ı, amaç ve bulunan varlıklar dahil olmak üzere 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ı dotnet run uygulama dizininizdeki komutla çalıştırın.

dotnet run

Aşağıdaki Language Understanding için Node.js (LUIS) istemci kitaplıklarını kullanın:

  • Uygulama oluşturun
  • Örnek konuşma ile makine öğrenmesi varlığı olan bir amaç ekleme
  • Uygulamayı eğitip yayımlama
  • Sorgu tahmini çalışma zamanı

Başvuru belgeleri | Yazma ve Tahmin Kitaplığı kaynak kodu | Yazma ve Tahmin NPM | Örnekler

Önkoşullar

  • Node.js
  • Azure aboneliği - Ücretsiz bir abonelik oluşturun
  • Azure aboneliğinize sahip olduktan sonra, Language Understanding uç noktanızı almak için Azure portal kaynak yazma kaynağı oluşturun. Dağıtmayı bekleyin ve Kaynağa git düğmesine tıklayın.
    • Uygulamalarınızı yazmanıza bağlamak için, kaynakta yer alan anahtara ve uç Language Understanding gerekir. Hızlı başlangıçta anahtarınızı ve uç noktanızı aşağıdaki koda yapıştırabilirsiniz. Hizmeti denemek için ücretsiz fiyatlandırma katmanını ( F0 ) kullanabilirsiniz.

Ayarlama

Yeni bir JavaScript uygulaması oluşturma

  1. Konsol penceresinde, uygulamanıza yeni bir dizin oluşturun ve bu dizine inin.

    mkdir quickstart-sdk && cd quickstart-sdk
    
  2. Bir dosya oluşturarak dizini JavaScript uygulaması olarak package.json başlatma.

    npm init -y
    
  3. index.jsJavaScript kodunuz için adlı bir dosya oluşturun.

    touch index.js
    

NPM kitaplıklarını yükleme

Uygulama dizininde aşağıdaki komutlarla bağımlılıkları yükleyin ve aynı anda bir satır yürütün:

npm install @azure/ms-rest-js
npm install @azure/cognitiveservices-luis-authoring
npm install @azure/cognitiveservices-luis-runtime

Şu package.json şekilde olması gerekir:

{
  "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ına sahip 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:

Tahmin nesnesi modeli

Language Understanding (LUSıS) yazma istemcisi, yazma anahtarınızı içeren Azure 'da kimlik doğrulayan 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 (LUSıS) istemci kitaplığı ile aşağıdakilerin nasıl yapılacağını göstermektedir:

Bağımlılıkları ekleme

index.jsDosyayı tercih ettiğiniz düzenleyicide veya IDE 'de açın ve ardından 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

  1. quickstartYöntemini ve çağrısını ekleyin. Bu yöntem, kalan kodların çoğunu barındırır. 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}`)
            })
    
  2. 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ştir istediğiniz ilk küme, ikinci küme kod örneğinde görünen şekilde bırakın.

  1. 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";
    
  2. Uç noktalarınızı, uygulama adını, sürümü ve amaç adını tutmak için 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ız ile 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ı, intents, entities ve example utterances gibi doğal dil işleme (NLP) modelini içerir.

Uygulamayı oluşturmak için bir AppsOperation nesnesinin add 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 modelde birincil nesnesi amaçtır. Amaç, kullanıcı konuşma amaçlarını gruplama ile hizalar. Kullanıcı bir soru sorabilir veya bottan (veya başka bir istemci uygulamasından) belirli bir hedeflenen yanıtı arayan bir ifadede olabilir. Amaç örnekleri arasında uçuş rezervasyonu, varış şehrinin hava durumu ve müşteri hizmetleri için iletişim bilgileri sorulma yer almaktadır.

benzersiz amacın model.add_intent ile birlikte model.add_intent yöntemini kullanın ve ardından uygulama kimliğini, sürüm kimliğini ve yeni amaç adını girin.

Değeri, intentName Uygulama için değişken oluşturma bölümündeki OrderPizzaIntent değişkenlerin bir parçası olarak sabit olarak kodlandı.

await client.model.addIntent(
    appId,
    versionId,
    { name: intentName }
);

Uygulama için varlık oluşturma

Varlıklar gerekli değildir ancak çoğu uygulama içinde bulunur. Varlık, kullanıcının amaç bilgisini almak için gerekli olan bilgileri Kullanıcı aracılığıyla ayıklar. Her biri kendi veri dönüştürme nesnesi (DTO) modelleriyle birlikte, çok sayıda önceden oluşturulmuş ve özel varlık türü vardır. Uygulamanıza eklenecek ortak önceden oluşturulmuş varlıklar Number, datetimeV2, geographyV2, Ordinaliçerir.

Varlıkların bir amaç ile işaretlenmediğini bilmek önemlidir. Bunlar, genellikle birçok amaç için uygulanabilir. Yalnızca belirli bir amaç için örnek Kullanıcı utbotları 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 uygulanan alt varlıklar ve özelliklerle makine öğrenimi varlığı oluşturur Quantity .

' Miktar ' alt varlıklarına uygulanan alt varlıklar ve özellikler ile makine öğrenimi varlığı, oluşturulan varlığı gösteren portaldan kısmi ekran görüntüsü.

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

quickstartBu alt varlığa Özellikler atamak için, alt VARLıK kimliğini bulmak için yönteminin üzerine 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 göre örnek ekleme

Bir utterance 'in amacı ve ayıklama varlıklarını tespit etmek için, uygulama için örneklere örnek gerekir. Ö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 için tek bir nesne olan Examplelabelobject nesnelerinin bir listesini oluşturarak örnek bir parametre ekleyin. Her örnek, varlık adı ve varlık değerinin ad/değer çiftleri sözlüğüne sahip tüm varlıkları işaretlemelidir. Varlık değeri, örnek utterine 'nın metninde göründüğünden tam olarak olmalıdır.

Portalda etiketlenmiş örneği gösteren kısmi ekran görüntüsü.

Örnekleri çağırın. 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ğitilmiş olması gerekir. Eğitilen model bir kapsayıcıda kullanılabilir veya hazırlama veya ürün yuvalarında yayımlanır.

train.trainVersion yöntemi için uygulama kimliği ve sürüm kimliği gerekir.

Bu hızlı başlangıçta olduğu gibi çok küçük bir model çok hızlı bir şekilde eğitecek. Üretim düzeyindeki uygulamalar için, eğitim başarılı olup olmadığını belirlemek için get_status yöntemine yönelik bir yoklama çağrısı içermesi gerekir. Yanıt, her nesne için ayrı durumu olan ModelTrainingInfo nesnelerinin listesidir. Eğitimin tamamlandı olarak kabul etmek 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ğitilen sürümü uç noktada belirtilen yuvada yayımlar. İstemci uygulamanız amaç ve varlık ayıklama tahmini için kullanıcı ifadeleri 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ız ile bir msRest.ApiKeyCredentials nesnesi kullanın ve bunu uç noktanız ile birlikte kullanarak bir LUIS oluşturun. LUISRuntimeClient nesnesi.

Dikkat

Bu hızlı başlangıç, yazma anahtarını çalışma zamanı kimlik bilgilerinin bir parçası olarak kullanır. Yazma anahtarı, çalışma zamanının birkaç sorguyla sorgulanmına izin verilir. Hazırlama ve üretim düzeyi kodu için, yazma anahtarını bir tahmin çalışma zamanı anahtarıyla değiştirin.

const luisPredictionClient = new LUIS_Prediction.LUISRuntimeClient(
    luisAuthoringCredentials,
    predictionEndpoint
);

Çalışma zamanından tahmin al

Tahmin çalışma zamanının isteğini oluşturmak için aşağıdaki kodu ekleyin. Kullanıcı ifadesi predictionRequest nesnesinin bir parçası.

luisRuntimeClient.prediction.getSlotPrediction yönteminin isteği yerine getirmek için uygulama kimliği, yuva adı ve tahmin isteği nesnesi gibi çeşitli parametrelere ihtiyacı vardır. Ayrıntılı, tüm amaçlarını 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ı, amaç ve bulunan varlıklar dahil olmak üzere 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

Hızlı başlangıç dosyanız node index.js üzerinde komutunu kullanarak uygulamayı çalıştırın.

node index.js

Python için Language Understanding (LUSıS) istemci kitaplıklarını kullanın:

  • Uygulama oluşturun
  • Makine tarafından öğrenilen bir varlık (örneğin, örnek) ile bir amaç ekleyin
  • Uygulamayı eğitme ve yayımlama
  • Sorgu tahmini çalışma zamanı

Başvuru belgeleri | Yazma ve tahmin kitaplığı kaynak kodu | Paket (Pypı) | Örnekler

Önkoşullar

  • Python 3. x' in geçerli sürümü.
  • Azure aboneliği- ücretsiz olarak bir tane oluşturun
  • Azure aboneliğiniz olduktan sonra, anahtarınızı ve uç noktanızı almak için Azure portal bir Language Understanding yazma kaynağı oluşturun . Dağıtım için bekleyin ve Kaynağa Git düğmesine tıklayın.
    • Uygulamanızı Language Understanding yazmak üzere bağlamak için oluşturduğunuz kaynaktaki anahtar ve uç nokta gerekir. Anahtarınızı ve uç noktanızı daha sonra hızlı başlangıçta aşağıdaki koda yapıştırabilirsiniz. Hizmeti denemek için ücretsiz fiyatlandırma katmanını ( F0 ) kullanabilirsiniz.

Ayarlanıyor

Yeni Python uygulaması oluşturma

  1. Konsol penceresinde, uygulamanız için yeni bir dizin oluşturun ve bu dizine taşıyın.

    mkdir quickstart-sdk && cd quickstart-sdk
    
  2. Python kodunuz için adlı bir dosya oluşturun authoring_and_predict.py .

    touch authoring_and_predict.py
    

İstemci kitaplığını PIP ile yükler

Uygulama dizini içinde, Python için Language Understanding (LUSıS) istemci kitaplığını aşağıdaki komutla birlikte yüklersiniz:

pip install azure-cognitiveservices-language-luis

Nesne modeli yazma

Language Understanding (LUSıS) yazma istemcisi, yazma anahtarınızı içeren Azure 'da kimlik doğrulayan 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:

Tahmin Nesnesi modeli

Language Understanding (LUIS) tahmin çalışma zamanı istemcisi, kaynak anahtarınızı içeren Azure kimlik doğrulamasına sahip bir LUISRuntimeClient nesnesidir.

Tahmin çalışma zamanı için kod örnekleri

İstemci oluşturulduktan sonra, aşağıdakiler dahil olmak üzere işlevlere erişmek için bu istemciyi kullanın:

Kod örnekleri

Bu kod parçacıkları, Python için Language Understanding (LUSıS) istemci kitaplığı ile aşağıdakilerin nasıl yapılacağını göstermektedir:

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

  1. yöntemini quickstart 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()
    
  2. 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 bırakır.

  1. 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'
    
  2. Uç noktalarınızı, uygulama adınızı, sürümünüzü ve amaç adınızı tutmak için 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ızla bir Biliveservicescredentials nesnesi oluşturun ve bir Luisauthoringclient nesnesi oluşturmak için bunu uç noktanızla birlikte kullanın.

client = LUISAuthoringClient(authoringEndpoint, CognitiveServicesCredentials(authoringKey))

LUIS uygulaması oluşturma

Bir LUSıS uygulaması, amaçlar, varlıklar ve örnek işleme dahil olmak üzere doğal dil işleme (NLP) modelini içerir.

Uygulamayı oluşturmak için bir AppsOperation nesnesinin Add metodunu 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ştur

Bir LUıN uygulamasının modelindeki birincil nesne, amaç ' dır. Amaç, Kullanıcı utterlerinin bir gruplandırması ile hizalanır. Bir Kullanıcı soru sorabilir veya bir bot 'tan (veya başka bir istemci uygulamasından) belirli bir amaçlanan yanıtı bulmak için bir ifade oluşturabilir. Bir uçuşmaya örnek olarak, hedef şehirdeki hava durumu hakkında bilgi isteyerek ve müşteri hizmetleri için iletişim bilgilerini soruyor.

Model.add_intent yöntemini benzersiz bir amaç adı ile kullanın, ardından uygulama kimliği, sürüm kimliği ve yeni amaç adını geçirin.

intentNameDeğer, OrderPizzaIntent uygulama Için değişkenlerinizi oluşturma bölümünde değişkenlerin bir parçası olarak için sabit olarak kodlanır.

client.model.add_intent(app_id, versionId, intentName)

Uygulama için varlık oluşturma

Varlıklar gerekli olmasa da, çoğu uygulama içinde bulunur. Varlık, kullanıcının amaç bilgisini almak için gerekli olan bilgileri Kullanıcı aracılığıyla ayıklar. Her biri kendi veri dönüştürme nesnesi (DTO) modelleriyle birlikte, çok sayıda önceden oluşturulmuş ve özel varlık türü vardır. Uygulamanıza eklemek için ortak önceden oluşturulmuş varlıklar arasında numarası, datetimeV2, geographyV2, sıra vardır.

Varlıkların bir amaçla işaretli olmadığını bilmek önemlidir. Bunlar birçok amaca uygulanabilir ve genellikle uygulanır. Yalnızca örnek kullanıcı ifadeleri 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, altlıklara alt özellikler ve özellikler uygulanmış bir makine Quantity öğrenmesi varlığı oluşturur.

'Quantity' alt özelliklerine alt özellikler uygulanmış bir makine öğrenmesi varlığı olarak oluşturulan varlığı gösteren portaldan kısmi ekran görüntüsü.

# 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 varite atamak için Quantity alt biriminin kimliğini bulmak quickstart için yönteminin üzerine aşağıdaki yöntemi girin.

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

Amala ö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şaretlenir olması gerekir.

Her örnek konuşma için bir nesne olan ExampleLabelObject nesnelerinin listesini oluşturarak örnek konuşmalar ekleyin. Her örnek, varlık adı ve varlık değerinin ad/değer çiftleri sözlüğüyle tüm varlıkları işaretlemeli. Varlık değeri, örnek konuşmanın metninde göründüğü gibi olmalı.

Portalda etiketlenmiş örnek ifadeyi gösteren kısmi ekran görüntüsü.

Uygulama kimliği, sürüm kimliği ve örnek ile examples.add çağrısı.

# 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ğitilmiş olması gerekir. Eğitilen model bir kapsayıcıda kullanılabilir veya hazırlama veya ürün yuvalarında yayımlanır.

Train.train_version YÖNTEMI uygulama kimliği ve sürüm kimliği gerektirir.

Bu hızlı başlangıç gibi çok küçük bir model, çok hızlı bir şekilde eğitecektir. Üretim düzeyinde uygulamalar için, uygulamanın eğitim ne zaman ne zaman veya ne zaman başarılı olduğunu anlamak için get_Status yöntemine bir yoklama çağrısı içermesi gerekir. Yanıt, her bir nesne için ayrı bir durum içeren Modeltrainingınfo nesnelerinin bir 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ına Yayımla

App. Publish metodunu kullanarak lusıs uygulamasını yayımlayın. Bu, geçerli eğitilen sürümü uç noktada belirtilen yuvaya yayımlar. İstemci uygulamanız bu uç noktayı, amaç ve varlık ayıklama amacıyla Kullanıcı utbotları göndermek için 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

Anahtarınızla birlikte kimlik bilgileri nesnesini kullanın ve bir Luisruntimeclientconfiguration nesnesi oluşturmak için bunu uç noktanızla birlikte kullanın.

Dikkat

Bu hızlı başlangıç, yazma anahtarını çalışma zamanı kimlik bilgilerinin bir parçası olarak kullanır. Yazma anahtarı, çalışma zamanının birkaç sorguyla sorgulanmına izin verilir. Hazırlama ve üretim düzeyi kodu için, yazma anahtarını bir tahmin çalışma zamanı anahtarıyla değiştirin.

runtimeCredentials = CognitiveServicesCredentials(predictionKey)
clientRuntime = LUISRuntimeClient(endpoint=predictionEndpoint, credentials=runtimeCredentials)

Çalışma zamanından tahmin al

İstek tahmin çalışma zamanına oluşturmak için aşağıdaki kodu ekleyin.

Kullanıcı söylenişi prediction_request nesnesinin bir parçasıdır.

Get_slot_prediction yöntemi, isteği yerine getirmek IÇIN uygulama kimliği, yuva adı ve tahmin isteği nesnesi gibi çeşitli parametrelere ihtiyaç duyuyor. Verbose gibi diğer seçenekler, tüm hedefleri gösterir ve günlük isteğe bağlıdır. İstek bir PredictionResponse nesnesi döndürüyor.

# 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ı, amaç ve bulunan varlıklar dahil olmak üzere 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ı python hızlı başlangıç dosyanızdaki komutla çalıştırın.

python authoring_and_predict.py

Bu hızlı başlangıcı izleyerek sırayla üç REST çağrısı gerçekleştirirsiniz.

  • İlk olarak, pizza uygulama modelini eğitebilmeniz için kullanılacak bir toplu iş toplu işi ekleyin .
  • Daha sonra, yeni uygulama sürümü çağrısını kullanarak pizza uygulaması için bir eğitim oturumuna başlarsınız.
  • Son olarak, diğer sürümü Al eğitim durumu çağrısını kullanarak, pizza uygulaması için eğitim oturumunun durumunu alacaksınız.

Başvuru belgeleri

Önkoşullar

  • Boş bir Luo hesabı.

  • Visual Studio Codegibi bir metin düzenleyici.

  • Komut satırı programı kıvır. Kıvrımlı program macOS, en çok Linux dağıtımları ve Windows 10 derleme 1803 ve üzeri sürümlerde zaten yüklüdür.

    Kıvrımlı yüklemeniz gerekiyorsa, kıvrımlı indirme sayfasındankıvrımlı indirebilirsiniz.

Pizza uygulaması oluşturma

Pizza uygulamasını oluşturun.

  1. Dosya için GitHub sayfasını açmak üzere pizza-app-for-luis-v6.json ' u seçin pizza-app-for-luis.json .
  2. Ham düğmesine sağ tıklayın veya uzun dokunduktan sonra Bağlantıyı farklı kaydet ' i seçerek bilgisayarınıza kaydedin pizza-app-for-luis.json .
  3. Lui portalındaoturum açın.
  4. Uygulamalarım' ı seçin.
  5. Uygulamalarım sayfasında, konuşma için + yeni uygulama' yı seçin.
  6. JSON olarak Içeri aktar' ı seçin.
  7. Yeni uygulama al Iletişim kutusunda Dosya Seç düğmesini seçin.
  8. pizza-app-for-luis.jsonİndirdiğiniz dosyayı seçin ve ' ı seçin.
  9. Yeni uygulama Içeri aktarma Iletişim kutusu adı alanına, pizza uygulamanız için bir ad girin ve ardından bitti düğmesini seçin.

Uygulama içeri aktarılacak.

Etkin BIR Luo uygulamasının nasıl oluşturulacağı hakkında bir iletişim kutusu görürseniz, iletişim kutusunu kapatın.

Pizza uygulamasını eğitme ve yayımlama

Pizza uygulamasındaki amaçları içeren bir liste ile amaçlar sayfasını görmeniz gerekir.

  1. LUSıS Web sitesinin sağ üst tarafında eğitme düğmesini seçin.

    Train (Eğitim) düğmesi

  2. Tren düğmesine ilişkin durum göstergesi yeşil olduğunda eğitim tamamlanmıştır.

Bir sohbet bot veya diğer istemci uygulamasında bir LUO tahmini almak için, uygulamayı tahmin uç noktasına yayımlamanız gerekir.

  1. Sağ üst gezinti bölmesinde Yayımla ' yı seçin.

    En sağ menüdeki LUSıS uç noktaya Yayımla düğmesinin ekran görüntüsü

  2. Üretim yuvasını seçin ve bitti' yi seçin.

    Uç noktada bir HALSıS yayımlama ekran görüntüsü

  3. Azure kaynakları sayfasına gitmek için bildirimde uç nokta URL 'lerine erişin ' i seçin. Yalnızca uygulamayla ilişkili bir tahmin kaynağınız varsa URL 'Leri görebilirsiniz. Ayrıca, Yönet' i tıklatarak Azure kaynakları sayfasını bulabilirsiniz.

    Uygulamanın yayımlandığını belirten bir ileti

Pizza uygulamasına bir yazma kaynağı ekleme

  1. Yönet' i seçin.
  2. Azure Kaynakları’nı seçin.
  3. Yazma kaynağı' nı seçin.
  4. Yazma kaynağını Değiştir' i seçin.

Bir yazma kaynağınız varsa, yazma kaynağınızın kiracı adı, abonelik adı ve Luo kaynak adı ' nı girin.

Bir yazma kaynağınız yoksa:

  1. Yeni kaynak oluştur' u seçin.
  2. Bir 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ına ihtiyacınız olacaktır. Tahminlere ulaşmak için, ayrı tahmin uç noktanız ve tahmin anahtarınız olması gerekir.

Bu değerleri bulmak için:

  1. Amaçlar sayfasından Yönet' i seçin.
  2. Uygulama ayarları sayfasında, uygulama kimliğini kaydedin.
  3. Azure Kaynakları’nı seçin.
  4. Yazma kaynağı' nı seçin.
  5. Kaynak ve tahmin kaynakları sekmelerinde, birincil anahtarı kaydedin. Bu değer, yazma anahtarınıza ait.
  6. Uç nokta URL 'sini kaydedin. Bu değer, yazma uç noktanıza ait.

Pizza uygulamasını eğitme için bir JSON dosyası oluşturma

Üç örnek elde eden bir JSON dosyası oluşturmak için aşağıdaki JSON verilerini adlı bir dosyaya kaydedin ExampleUtterances.JSON :

[
  {
    "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
      }
    ]
  }
]`

Örnek utterl JSON, 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. Metinde bir boşluk olan etiketi başlatabilir veya sonlandırdıysanız, utsliği ekleme API çağrısı başarısız olur.

Örnek konuşmalar ekleme

  1. Örnek toplu işi 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"
    
  2. İle başlayan değerleri _*_YOUR- kendi değerlerinizle değiştirin.

    Bilgi Amaç
    _*_YOUR-AUTHORING-ENDPOINT_*_ Yazma URL 'niz uç noktasıdır. Örneğin, "https://REPLACE-WITH-YOUR-RESOURCE-NAME.api.cognitive.microsoft.com/". Kaynağı oluşturduğunuzda kaynak adınızı ayarlarsınız.
    _*_YOUR-APP-ID_*_ LUSıS uygulama KIMLIĞINIZ.
    _*_YOUR-APP-VERSION_*_ LUSıS uygulama sürümünüz. Pizza uygulaması için sürüm numarası tırnak işareti olmadan "0,1" olur.
    _*_YOUR-AUTHORING-KEY_*_ 32 karakter yazma anahtarınız.

    Atanan anahtarlar ve kaynaklar, _ Azure kaynakları* sayfasında Yönet bölümünde bulunan Luo portalında görünür. Uygulama KIMLIĞI, uygulama ayarları sayfasında aynı Yönet bölümünde bulunur.

  3. Bir komut Istemi (Windows) veya Terminal (macOS ve Linux) başlatın ve dizinleri dosyayı kaydettiğiniz dizinle değiştirin ExampleUtterances.JSON .

  4. Düzenleyiciden kıvrımlı komutunu kopyalayın ve bir komut Istemine (Windows) veya terminale (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çimlendirilen çıktı aşağıda verilmiştir:

    [
      {
        "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ğitme

  1. Pizza uygulaması için bir eğitim oturumuna başlamak 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" ^
          --data "" ^
          --request POST ^
          --header "Content-Type:application/json" ^
          --header "Ocp-Apim-Subscription-Key: _*_YOUR-AUTHORING-KEY_*_"
    
  2. Daha önce yaptığınız gibi, değerlerini _*_YOUR- kendi değerlerinizle başlayarak değiştirin.

  3. Düzenleyiciden kıvrımlı komutunu kopyalayın ve bir komut Istemine (Windows) veya terminale (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çimlendirilen çıktı aşağıda verilmiştir:

    {
      "statusId": 2,
      "status": "UpToDate"
    }
    

Eğitimin durumunu alın

  1. 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_*_"
    
  2. Daha önce yaptığınız gibi, değerlerini _*_YOUR- kendi değerlerinizle başlayarak değiştirin.

  3. Düzenleyiciden kıvrımlı komutunu kopyalayın ve bir komut Istemine (Windows) veya terminale (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çimlendirilen çıktı aşağıda verilmiştir:

    [
      {
        "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ç al

Tahmin uç noktasını sorgulamak ve tahmin sonucu almak için kıvrımlı kullanın.

Not

Bu komut, tahmin uç noktanızı kullanır.

  1. 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"
    
  2. İle başlayan değerleri _*_YOUR- kendi değerlerinizle değiştirin.

    Bilgi Amaç
    _*_YOUR-PREDICTION-ENDPOINT_*_ Tahmin URL 'niz uç noktasıdır. Uygulama için Azure kaynakları sayfasında, LUO portalında bulunur.
    Örneğin, https://westus.api.cognitive.microsoft.com/.
    _*_YOUR-APP-ID_*_ Uygulama KIMLIĞINIZ. Uygulamanızın LUO portalında, uygulama ayarları sayfasında bulunur.
    _*_YOUR-PREDICTION-KEY_** 32 karakter tahmini anahtarınız. Uygulama için Azure kaynakları sayfasında, LUO portalında bulunur.
  3. Metni bir konsol penceresine kopyalayın ve komutu yürütmek için ENTER tuşuna basın:

  4. 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"]}]}}}}
    

    Okunabilir için biçimlendirilen 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 portaldan silebilir ve azure kaynaklarını Azure portal.

Hızlı başlangıç REST API tamamlasanız ExampleUtterances.JSON dosyayı dosya sisteminden silin.

Sorun giderme

  • İstemci kitaplığında kimlik doğrulaması - kimlik doğrulama hataları genellikle uç noktanın & olduğunu gösterir. Bu hızlı başlangıçta kolaylık olması için 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ı kullanasanız, tahmin çalışma zamanı SDK'sı istemci kitaplığına erişirken tahmin çalışma zamanı anahtarını ve uç noktayı kullansanız gerekir.
  • Varlık oluşturma - Bu öğreticide kullanılan iç içe geçmiş makine öğrenmesi varlığını oluştururken hata alırsanız, kodu kopyalayanın ve kodu farklı bir varlık oluşturmak için değiştirmeden emin olun.
  • Örnek konuşmalar oluşturma - Bu öğreticide kullanılan etiketli örnek ifadeyi oluştururken hata alırsanız, kodu kopyalayanın ve farklı bir etiketlenmiş örnek oluşturmak için kodu değiştirmeden emin olun.
  • Eğitim : Eğitim hatası alırsanız bu genellikle boş bir uygulamayı (örnek konuşmalar ile amaç yok) veya yanlış biçimlendirilmiş amaç veya varlıklara sahip bir uygulamayı gösterir.
  • Çeşitli hatalar : Kod metin ve JSON nesneleriyle istemci kitaplıklarına çağrılsa da kodu değiştirmemiş olduğundan emin olun.

Diğer hatalar - Yukarıdaki listede yer almayan bir hata alırsanız, bu sayfanın alt kısmında geri bildirim vererek bize bildirin. Yüklü istemci kitaplıklarının programlama dilini ve sürümünü dahil edin.

Sonraki adımlar