我使用了预构建的datetime。v2实体来处理LUIS中所有与datetime相关的内容。
我有这样一句话:
March to June 2017
在实体中,LUIS的预期输出应为:
"resolution": {
"values": [
{
"timex": "XXXX-03",
"type": "daterange",
"start": "2017-03-01",
"end": "2017-06-01"
}
]
}
但当我询问路易斯时,我得到的是:
{
"query": "march to june 2017",
"topScoringIntent": {
"intent": "TestIntent",
"score": 1.0
},
"intents": [
{
"intent": "TestIntent",
"score": 1.0
},
{
"intent": "None",
"score": 0.05487651
}
],
"entities": [
{
"entity": "march",
"type": "builtin.datetimeV2.daterange",
"startIndex": 0,
"endIndex": 4,
"resolution": {
"values": [
{
"timex": "XXXX-03",
"type": "daterange",
"start": "2017-03-01",
"end": "2017-04-01"
},
{
"timex": "XXXX-03",
"type": "daterange",
"start": "2018-03-01",
"end": "2018-04-01"
}
]
}
},
{
"entity": "june 2017",
"type": "builtin.datetimeV2.daterange",
"startIndex": 9,
"endIndex": 17,
"resolution": {
"values": [
{
"timex": "2017-06",
"type": "daterange",
"start": "2017-06-01",
"end": "2017-07-01"
}
]
}
}
]
}
我编写了以下C#代码,用于查询LUIS intent中的日期范围
[LuisIntent("TestIntent")]
public async Task TestIntentHandler(IDialogContext context, LuisResult result)
{
EntityRecommendation dateTimeEntity, dateRangeEntity;
if(result.TryFindEntity("builtin.datetimeV2.date", out dateTimeEntity))
{
var s = dateTimeEntity.Resolution.Values.Select(x => x).OfType<List<object>>().SelectMany(i => i).ToList();
}
if(result.TryFindEntity("builtin.datetimeV2.daterange", out dateRangeEntity))
{
var s = dateRangeEntity.Resolution.Values.Select(x => x).OfType<List<object>>().SelectMany(i => i).FirstOrDefault();
var type = s.GetType();
}
}
有谁能告诉我如何使用预先构建的日期时间来查询LUIS中的上述月份范围吗。v2实体类型。