解析 LOUIS builtin.datetime.date
Parse LUIS builtin.datetime.date
我已经建立了一个 Luis 模型,我在解析 builtin.datetime.date 的条目时遇到了问题,例如 "this weeked" returns 2016-W20-WE(或类似的东西)不使用 DateTime.Parse 成功解析。
我发现了这个 post,它似乎使用了一个名为 LUISParse 的 class,但我在 Google 上找不到任何对此的引用。
我有同样的问题,在他们的 sdk 文档中看到他们在实际实体字符串上使用 Chronic 而不是试图解释日期格式。 See Here:
所以我做了这样的事情:
Chronic.Parser parser = new Chronic.Parser();
EntityRecommendation date = new EntityRecommendation();
luisResponse.TryFindEntity("builtin.datetime.date", out date);
var dateResult = parser.Parse(date.Entity);
之所以有效,是因为 date.Entity 仅包含与日期相关的字符串。例如:我将 "Yes I am planning to go next week" 传递给 Luis,实体包含 "next week".
我发现我必须深入研究内部元素并使用 "value"、"start" 和 "end" 属性,而不是使用原始值。这些属性至少遵循日期格式。这适用于周末或接下来 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"]);
}
}
我已经建立了一个 Luis 模型,我在解析 builtin.datetime.date 的条目时遇到了问题,例如 "this weeked" returns 2016-W20-WE(或类似的东西)不使用 DateTime.Parse 成功解析。
我发现了这个 post,它似乎使用了一个名为 LUISParse 的 class,但我在 Google 上找不到任何对此的引用。
我有同样的问题,在他们的 sdk 文档中看到他们在实际实体字符串上使用 Chronic 而不是试图解释日期格式。 See Here:
所以我做了这样的事情:
Chronic.Parser parser = new Chronic.Parser();
EntityRecommendation date = new EntityRecommendation();
luisResponse.TryFindEntity("builtin.datetime.date", out date);
var dateResult = parser.Parse(date.Entity);
之所以有效,是因为 date.Entity 仅包含与日期相关的字符串。例如:我将 "Yes I am planning to go next week" 传递给 Luis,实体包含 "next week".
我发现我必须深入研究内部元素并使用 "value"、"start" 和 "end" 属性,而不是使用原始值。这些属性至少遵循日期格式。这适用于周末或接下来 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"]);
}
}