Добавить метку к намерению составного объекта в LUIS через LUIS API с помощью С#

Я понял, как добавить метку к намерению, но не уверен, как это сделать для составных объектов. Вот код, который отлично работает для несоставных объектов;

public static void AddLabels(string originalMessage, string intent, List<Label> labels)
        {
            var client = new HttpClient();
            var queryString = HttpUtility.ParseQueryString(string.Empty);

            var uri = "https://westus.api.cognitive.microsoft.com/luis/v1.0/prog/apps/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/example?" + queryString;

            // Request headers
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx");

            HttpResponseMessage response;
            string body = string.Empty;
            string entityLabels = string.Empty;

            //get the position of the labels
            foreach (var label in labels)
            {
                entityLabels += label.ToString() + ",";
            }
            //remove last ","
            entityLabels = entityLabels.Remove(entityLabels.Length - 1, 1);

            body = string.Format("{{\"ExampleText\": \"{0}\", \"SelectedIntentName\": \"{1}\", \"EntityLabels\": [", originalMessage, intent);
            body += entityLabels + "]}";
            byte[] byteData = Encoding.UTF8.GetBytes(body);


            using (var content = new ByteArrayContent(byteData))
            {
                content.Headers.ContentType = new MediaTypeHeaderValue("application/json");
                try
                {
                    response = client.PostAsync(uri, content).Result;
                }catch(Exception ex)
                {

                }
            }

        }

Любая помощь приветствуется.


person Learner    schedule 15.08.2017    source источник


Ответы (1)


Я нашел ответ, нам в основном нужно добавить еще одну метку в список меток с именем составного объекта и передать этот список меток вышеуказанному методу, и он автоматически разрешит отношения для вас.

Например; если contact является составным объектом, а contact.firstname и contact.lastname — дочерними объектами.

поэтому в приведенном ниже примере сценария; Исходное сообщение: Я хочу создать Сэма Смита в качестве нового контакта. слово, которое будет помечено меткой: Sam, намерение для метки: contact.firstname слово, которое будет помечено меткой: Smith, намерение для метки: contact.lastname Теперь, для родителя, который является контактом, мы будем использовать утверждение, которое для пометки: создайте Сэма Смита в качестве новой контактной метки для намерения: контакт Это будет обертывать как имя, так и фамилию в составе составного объекта контакта.

person Learner    schedule 15.08.2017