Microsoft Cognitive Services - ограничить содержание в Luis Api - PullRequest
0 голосов
/ 06 ноября 2018

Мы начали экспериментировать с пакетом nuget Microsoft.CognitiveServices.Speech (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 и будем передавать текст, и это вызовет Luis с использованием конечной точки API, это очень просто, например:

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 голосов
/ 06 ноября 2018

К сожалению, нет, нет способа контролировать возвращаемые намерения. В приложении вам нужно будет отфильтровать возвращаемые намерения, чтобы ограничить соответствие для конкретной текстовой строки.

...