拥有 LUIS Intent 的替代方法
Alternative for having LUIS Intent
要求是从聊天 window 中给出的用户输入中捕获关键字并进行网络 api 调用以获取文件 link。
我将用户输入查询分为四个不同的类别:
--运营组
- 技术
- 地理
--主题
我已经配置了一个 LUIS 意图并将这四个类别列为实体。但是,现在的问题是实体列表无法预定义,因为可以有任何数量
可以传递到网络的搜索关键字数量 api。我现在很困惑是否有任何其他方法可以满足此要求,例如删除停用词和传递关键字列表
网站 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);
}
}
However, we do not have a fixed set of keywords which we could
pre-configure in Entity lists.
我认为您误解了实体是什么。
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
的实体:
要求是从聊天 window 中给出的用户输入中捕获关键字并进行网络 api 调用以获取文件 link。
我将用户输入查询分为四个不同的类别:
--运营组 - 技术 - 地理 --主题
我已经配置了一个 LUIS 意图并将这四个类别列为实体。但是,现在的问题是实体列表无法预定义,因为可以有任何数量 可以传递到网络的搜索关键字数量 api。我现在很困惑是否有任何其他方法可以满足此要求,例如删除停用词和传递关键字列表 网站 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);
}
}
However, we do not have a fixed set of keywords which we could pre-configure in Entity lists.
我认为您误解了实体是什么。
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
的实体: