3

我已经建立了一个 Luis 模型,并且在解析 builtin.datetime.date 以获取诸如“this weeked”之类的条目时遇到问题返回 2016-W20-WE(或类似的东西),该条目无法使用 DateTime.Parse 成功解析。

我遇到了这篇文章,它似乎使用了一个名为 LUISParse 的类,但我在 Google 上找不到对此的任何引用。

4

2 回答 2

5

我有同样的问题,并在他们的 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);

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

于 2016-05-19T11:44:29.840 回答
2

我发现我不得不深入研究内部元素并使用“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"]);
                }
            }
于 2018-02-06T22:44:54.730 回答