Botframework LUIS是否能识别话语中的多个相同的预构建实体
话语: 我想订一张下周一从海得拉巴到班加罗尔的机票,最好是下午左右,下周五最好是晚上左右 实体: 出发地点:海得拉巴 目的地:班加罗尔 预建实体: builtin.DateTimeV2:下周一,周五 Builtin.DateTimeV2.TimeRange:下午、晚上 .NET识别实体的代码:Botframework LUIS是否能识别话语中的多个相同的预构建实体,botframework,azure-language-understanding,Botframework,Azure Language Understanding,话语: 我想订一张下周一从海得拉巴到班加罗尔的机票,最好是下午左右,下周五最好是晚上左右 实体: 出发地点:海得拉巴 目的地:班加罗尔 预建实体: builtin.DateTimeV2:下周一,周五 Builtin.DateTimeV2.TimeRange:下午、晚上 .NET识别实体的代码: foreach(EntityRecommendation obj in result.Entities) { if(obj.Type
foreach(EntityRecommendation obj in result.Entities)
{
if(obj.Type == FlightBotConstants.fromDestination)
{
context.PrivateConversationData.SetValue<string>("fromDestination", Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(obj.Entity.ToLower()));
}
else if(obj.Type == FlightBotConstants.toDestination)
{
context.PrivateConversationData.SetValue<string>("toDestination", Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(obj.Entity.ToLower()));
}
else if(obj.Type == FlightBotConstants.prebuiltdate)
{
Chronic.Parser depparser = new Chronic.Parser();
var depDateResult = depparser.Parse(obj.Entity);
string departureDate = depDateResult.Start.Value.ToString("yyyy-MM-dd");
context.PrivateConversationData.SetValue<string>("departtDate", Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(departureDate));
}
else if(obj.Type == FlightBotConstants.prebuilttimeRange)
{
Chronic.Parser depTimeParser = new Chronic.Parser();
var deptimeResult = depTimeParser.Parse(obj.Entity);
var depStartTime = deptimeResult.Start.Value.TimeOfDay;
var depEndTime = deptimeResult.End.Value.TimeOfDay;
context.PrivateConversationData.SetValue<string>("departureStartTime", Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(depStartTime.ToString()));
context.PrivateConversationData.SetValue<string>("departureEndTime", Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(depEndTime.ToString()));
}
}
foreach(result.Entities中的EntityRecommendation对象)
{
if(obj.Type==FlightBotConstants.fromDestination)
{
context.PrivateConversationData.SetValue(“fromDestination”,Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(obj.Entity.ToLower());
}
else if(obj.Type==FlightBotConstants.toDestination)
{
context.PrivateConversationData.SetValue(“toDestination”,Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(obj.Entity.ToLower());
}
else if(obj.Type==FlightBotConstants.prebuiltdate)
{
Chronic.Parser depparser=新的Chronic.Parser();
var depDateResult=depparser.Parse(obj.Entity);
字符串departureDate=depDateResult.Start.Value.ToString(“yyyy-MM-dd”);
context.PrivateConversationData.SetValue(“departedDate”,Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(departureDate));
}
else if(obj.Type==FlightBotConstants.prebuilttimeRange)
{
Chronic.Parser depTimeParser=新的Chronic.Parser();
var deptimesult=depTimeParser.Parse(obj.Entity);
var depStartTime=deptimesult.Start.Value.TimeOfDay;
var depEndTime=deptimesult.End.Value.TimeOfDay;
context.PrivateConversationData.SetValue(“departureStartTime”,Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(depStartTime.ToString());
context.PrivateConversationData.SetValue(“departureEndTime”,Thread.CurrentThread.CurrentCulture.TextInfo.ToTitleCase(depEndTime.ToString());
}
}
我需要如下输出。我怎样才能得到准确的
出发地点:海得拉巴
抵达地点:班加罗尔
出发日期:2018-01-15
出发时间:13:00
出发结束时间:18:00
返回日期:2018-01-19
返回开始时间:19:00
出发结束时间:22:00
我可以获得所有实体的数据,但我的问题是,如果用户的话语是“我想预订下周一从海得拉巴到班加罗尔的航班,最好在下周五晚上返回。”
如何准确地编写代码以获得以下输出。
出发地点:海得拉巴
抵达地点:班加罗尔
出发日期:2018-01-15
出发时间:
出发结束时间:
返回日期:2018-01-19
返回开始时间:19:00
出发结束时间:22:00能否提供返回实体的示例? 在不了解路易斯模型的情况下,我只能提供一些提示:
- 如果正确获取所有实体,则可以将实体添加到bot中的临时列表/容器中,然后对其进行格式化以适合您的场景
- 你可以试着训练你的路易斯模特。这将允许您将自定义实体(从Destination到Destination)与datetime的预构建实体相关联
希望对好的LUIS有所帮助,可以确定参考日/周/月/年 像, datetimeV2-->去年,datetimeV2-->上一年 datetimeV2-->下个月,datetimeV2-->上个月 datetimeV2-->上周,datetimeV2-->下周 datetimeV2-->前一天,datetimeV2-->下周初 datetimeV2-->第二天,datetimeV2-->昨天 datetimeV2-->明天,datetimeV2-->前天 datetimeV2-->后天 诸如此类 同样地, datetimeV2-->明早,datetimeV2-->明早, datetimeV2-->今天晚上早些时候 诸如此类 对于您的询问,“我想预订下周一从海得拉巴飞往班加罗尔的航班,最好在下周五晚上左右返回” 您可以参考datetimeV2-->下周一和datetimeV2-->下周五的日历,并确定适用的日期。 当用户早上或晚上提及时,确认输入并提示用户指定计时 毕竟,机器人是一个对话界面,它必须提出问题并寻求澄清,以帮助用户实现其目标