Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 解析LUIS builtin.datetime.date_C#_Datetime_Bots_Azure Language Understanding - Fatal编程技术网

C# 解析LUIS builtin.datetime.date

C# 解析LUIS builtin.datetime.date,c#,datetime,bots,azure-language-understanding,C#,Datetime,Bots,Azure Language Understanding,我已经建立了一个Luis模型,在解析builtin.datetime.date时遇到了一些问题,比如“this Week”返回2016-W20-WE(或类似的东西),它没有使用datetime.parse成功解析 我遇到了这个,它似乎使用了一个名为LUISParse的类,但我在Google上找不到任何与此相关的引用 我也有同样的问题,在他们的sdk文档中,他们对实际的实体字符串使用了Chronic,而不是试图解释日期格式: 所以我做了这样的事情: Chronic.Parser parser =

我已经建立了一个Luis模型,在解析builtin.datetime.date时遇到了一些问题,比如“this Week”返回2016-W20-WE(或类似的东西),它没有使用datetime.parse成功解析


我遇到了这个,它似乎使用了一个名为LUISParse的类,但我在Google上找不到任何与此相关的引用

我也有同样的问题,在他们的sdk文档中,他们对实际的实体字符串使用了Chronic,而不是试图解释日期格式:

所以我做了这样的事情:

Chronic.Parser parser = new Chronic.Parser();
EntityRecommendation date = new EntityRecommendation();
luisResponse.TryFindEntity("builtin.datetime.date", out date);
var dateResult = parser.Parse(date.Entity);

它从日期开始工作。实体仅包含与日期相关的字符串。例如:我将“是的,我计划下周去”传递给Luis,实体包含“下周”。

我发现我必须深入内部元素,使用“值”、“开始”和“结束”属性,而不是使用原始值。这些属性至少遵循日期格式。这适用于持续时间,如周末或未来3天,以及今天和特定日期请求

            if (entity.Type == "builtin.datetimeV2.daterange")
            {
                var resolutionValues = (IList<object>)entity.Resolution["values"];
                foreach (var value in resolutionValues)
                {
                    _start = Convert.ToDateTime(((IDictionary<string, object>)value)["start"]);
                    _end = Convert.ToDateTime(((IDictionary<string, object>)value)["end"]);
                }
            }
            else if (entity.Type == "builtin.datetimeV2.date")
            {
                var resolutionValues = (IList<object>)entity.Resolution["values"];
                foreach (var value in resolutionValues)
                {
                    _when = Convert.ToDateTime(((IDictionary<string, object>)value)["value"]);
                }
            }
if(entity.Type==“builtin.datetimeV2.daterange”)
{
var resolutionValues=(IList)entity.Resolution[“values”];
foreach(resolutionValues中的var值)
{
_start=Convert.ToDateTime(((IDictionary)值)[“start”]);
_end=Convert.ToDateTime(((IDictionary)值)[“end”]);
}
}
else if(entity.Type==“builtin.datetimeV2.date”)
{
var resolutionValues=(IList)entity.Resolution[“values”];
foreach(resolutionValues中的var值)
{
_when=Convert.ToDateTime(((IDictionary)值)[“值”]);
}
}

完美。返回一个带有开始、结束可为空的datetime属性的慢性.Span。这非常好-但是,它似乎不适用于内置的.datetime.duration-接下来的7天将返回为今天的日期,从上午7点到上午7:01点