Альтернатива для использования LUIS Intent - PullRequest
0 голосов
/ 28 февраля 2019

Требуется собрать ключевые слова из пользовательского ввода, заданного в окне чата, и выполнить веб-вызов API для получения ссылки на файл.

У меня есть четыре различные категории, в которые можно классифицировать запрос ввода пользователя.:

- Операционная группа --Технологии --География --Темы

Я настроил намерение LUIS и перечислил эти четыре категории в качестве прав.Однако теперь проблема заключается в том, что список сущностей не может быть предопределен, поскольку может быть любое количество ключевых слов для поиска, которые можно передать в веб-API.Теперь я в замешательстве, если есть какое-либо иное решение этой проблемы, например удаление стоп-слов и передача списка ключевых слов Web API.

Код:

           [LuisIntent("Credentials")]
    public async Task Credentials(IDialogContext context, LuisResult result)
    {
        try
        {                
            if (result.Entities.Count() == 0)
            {
                if ((result.Query.ToString().ToLower() == "geo" || result.Query.ToString().ToLower() == "operating group" || result.Query.ToString().ToLower() == "technology" || result.Query.ToString().ToLower() == "Themes"))
                {

                }
                else
                {
                    await context.Forward(new QnABotFeedbackDialog(updateQna, result.Query, rotationTemStorage, qnaInvalidMessageCount), AfterCredentialDialog, context.Activity, CancellationToken.None);
                }
            }
            else if (result.Entities.Count() > 0)
            {                    
                string efilterType = string.Empty;
                if (result.Entities.Count() > 0)
                {
                    foreach (var i in result.Entities)
                    {
                        if (efilterType == string.Empty)
                        {
                            efilterType = i.Entity;
                        }
                        else
                        {
                            efilterType = efilterType + "," + i.Entity;
                        }
                    }
                }
                await CredentialsPersonalisation(context, efilterType);
            }

        }
        catch (Exception ex)
        {
            await context.PostAsync(ex.Message);
        }

    }

1 Ответ

0 голосов
/ 01 марта 2019

Однако у нас нет фиксированного набора ключевых слов, которые мы могли бы предварительно настроить в списках сущностей.

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

Например, добавьте следующие высказывания:

give me the file for fs in North America region on RPA

И пометите fs как OperationGroup сущность, North America как Geography сущность и RPA как Technology сущность

Can I have the file for PRD in Europe about LUIS?

И пометка PRD как OperationGroup сущность, Europe как Geography сущность и LUIS как Technologyсущность

Sidenote: если у вас есть фиксированные списки, что здесь не так, вы должны создать сущность типа List: enter image description here

...