Microsoft认知服务-Luis Api中的限制意图

时间:2018-11-06 07:59:59

标签: c# microsoft-cognitive luis azure-cognitive-services

我们已经开始尝试使用Microsoft.CognitiveServices.Speech nuget程序包(https://docs.microsoft.com/en-gb/azure/cognitive-services/speech-service/how-to-recognize-intents-from-speech-csharp)。这很棒,因为它可以建立语言模型,并且您可以专门包含要匹配的意图:

    // Creates a Language Understanding model using the app id, and adds specific intents from your model
    var model = LanguageUnderstandingModel.FromAppId("YourLanguageUnderstandingAppId");
    recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName1", "id1");
    recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName2", "id2");
    recognizer.AddIntent(model, "YourLanguageUnderstandingIntentName3", "any-IntentId-here");

但是,我们正在构建一个API,并将传递文本,这将使用API​​端点调用Luis,这是非常基本的,就像这样:

using (var client = new HttpClient())
            {
                var queryString = HttpUtility.ParseQueryString(String.Empty);

                // The request header contains your subscription key
                client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", _cognitiveSettings.SubscriptionKey);

                // The "q" parameter contains the utterance to send to LUIS
                queryString["q"] = query;

                // These optional request parameters are set to their default values
                queryString["staging"] = _cognitiveSettings.IsProduction ? bool.FalseString : bool.TrueString;
                queryString["timezoneOffset"] = "0";
                queryString["verbose"] = "true";
                queryString["spellCheck"] = "false";

                var endpointUri = $"https://westeurope.api.cognitive.microsoft.com/luis/v2.0/apps/{_luisAppId}?{queryString}";
                var response = await client.GetAsync(endpointUri);

                var responseJson = await response.Content.ReadAsStringAsync();
                return JsonConvert.DeserializeObject<IntentResponseModel>(responseJson);
            }

是否有一种方法可以控制我们希望针对特定文本字符串返回的意图?我们可以将verbose设置为true,以便它返回所有具有匹配评级的意图,但是我们希望能够根据状态指定意图的子集,然后尝试进行匹配。看来您可以使用带音频的SDK来做到这一点,可以使用文本来实现(是否有文本SDK?)。

此外,是否有一种方法可以将JSON中返回的实体与填充它们的意图进行匹配,看来意图与实体之间没有链接。

1 个答案:

答案 0 :(得分:0)

不幸的是,没有,无法控制返回的意图。在应用程序中,您将需要过滤返回的意图以限制与特定文本字符串匹配的内容。