我使用MS Bot Framework,C#和LUIS.ai.我发现LUIS.ai在一个话语中找到的实体中的破折号或下划线之前和之后都添加了一个空格。
例如,如果用户键入:
"在我的项目中搜索转换文档文件"
和"转换文档文件"被确定为实体LUIS实体对象将其更改为"转换 - 文档文件"
的实体除了简单地替换所有" - "和" _"用" - "和" _"我可以分别阻止LUIS这样做吗?
答案 0 :(得分:4)
LUIS.ai在它在发音中找到的实体中的破折号或下划线之前和之后添加一个空格。
正如你所说,当话语包含一些特殊字符时,会添加空格。例如,当我使用包含/
和.
等的网址时,会出现同样的问题。
据我所知,目前LUIS似乎没有让我们通过做一些配置或设置来阻止它。要解决此问题,您可以尝试在代码中处理该问题,以使用正则表达式从匹配的实体"transition - document"
中删除空格。
答案 1 :(得分:0)
您可以在LuisDialog上覆盖它并替换您需要确切文本的任何实体:
protected override Task DispatchToIntentHandler(IDialogContext context, IAwaitable<IMessageActivity> item, IntentRecommendation bestIntent, LuisResult result)
{
// remove spaces LUIS adds before and after dashes and underscores
EntityRecommendation resourceNameEntity = result.Entities.Where(e => e.Type == Luis_EntityTypes.ResourceName).FirstOrDefault();
if (resourceNameEntity != null)
{
resourceNameEntity.Entity = resourceNameEntity.Entity.Replace(" - ", "-").Replace(" _ ", "_");
}
return base.DispatchToIntentHandler(context, item, bestIntent, result);
}