Botframework LUIS是否能识别话语中的多个相同的预构建实体

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

话语: 我想订一张下周一从海得拉巴到班加罗尔的机票,最好是下午左右,下周五最好是晚上左右

实体: 出发地点:海得拉巴

目的地:班加罗尔

预建实体: builtin.DateTimeV2:下周一,周五

Builtin.DateTimeV2.TimeRange:下午、晚上

.NET识别实体的代码:

       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-->下周五的日历,并确定适用的日期。 当用户早上或晚上提及时,确认输入并提示用户指定计时

毕竟,机器人是一个对话界面,它必须提出问题并寻求澄清,以帮助用户实现其目标