话语: 我想预订下周一从海得拉巴到班加罗尔的航班,最好在下午左右,下周五返回,最好是在晚上。
实体: FromDestination:海德拉巴,
ToDestination:班加罗尔
预建Enties: Buiiltin.DateTimeV2:下周一,周五。
Builtin.DateTimeV2.TimeRange:下午,晚上
.NET代码识别enties:
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()));
}
}
我需要一个如下输出。我怎么能完全
出发地点:海德拉巴
抵达地点:班加罗尔
出发日期:2018-01-15
出发时间:13:00
出发结束时间:18:00
回归日期:2018-01-19
返回开始时间:19:00
出发结束时间:22:00
我可以获取所有实体数据,但我的问题是如果用户话语是&#34; 我想预订下周一从海得拉巴到班加罗尔的航班,下周五返回,最好是在晚上&#34;。
我是如何编写代码以获得低于输出的。
出发地点:海德拉巴
抵达地点:班加罗尔
出发日期:2018-01-15
离港开始时间:
出发结束时间:
回归日期:2018-01-19
返回开始时间:19:00
出发结束时间:22:00
答案 0 :(得分:1)
您能举例说明实体返回的内容吗? 不知道LUIS模型我只能提供一些提示:
如果您正确获取所有实体,则可以将实体添加到机器人的临时列表/容器中,然后根据您的方案对其进行格式化。
您可以尝试围绕composite entities训练您的LUIS模型。这将允许您将自定义实体(FromDestination,ToDestination)与预构建的datetime实体相关联。
希望有所帮助
答案 1 :(得分:0)
为获得良好的LUIS,它将确定参考天/周/月/年
喜欢, datetimeV2->去年,datetimeV2->上一年,
datetimeV2->下个月,datetimeV2->上个月,
datetimeV2->上周,datetimeV2->下周,
datetimeV2->前一天,datetimeV2->下周初,
datetimeV2->第二天,datetimeV2->昨天,
datetimeV2->明天,datetimeV2->前天,
datetimeV2->后天,
等等
类似地, datetimeV2->明天早晨,datetimeV2->明天清晨, datetimeV2->今天傍晚,
等等,
您的查询“我想在下周一预订从海得拉巴飞往班加罗尔的航班,下周五最好在晚上返回”
您可以将日历引用为datetimeV2->下周一和datetimeV2->下周五,并确定适用的适当日期。 当用户提到早上或晚上确认输入并提示用户指定时间时。
毕竟,机器人是一个对话界面,它必须提出问题并寻求澄清,以帮助用户实现其目标。