具有LUIS意图的替代方法

时间:2019-02-28 04:59:32

标签: asp.net-web-api botframework luis stop-words

要求是从聊天窗口中提供的用户输入中捕获关键字,并进行网络api调用以获取文件链接。

我将用户输入查询分为四个不同的类别:

-操作组 - 技术 - 地理 -主题

我已经配置了LUIS意图,并将这四个类别列为实体。但是,现在的问题是实体列表无法预定义,因为可以有任意数量 可以传递给Web 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 :(得分:1)

  

但是,我们没有一组固定的关键字,我们可以   在实体列表中进行预配置。

我认为您误解了实体是什么。 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实体

旁注:如果您有固定列表(此处不是这种情况),则必须创建类型List的实体: enter image description here