c# - 在 .NET Core 中解析 Timex 表达式

标签 c# asp.net-core botframework azure-language-understanding

使用 LUIS 引擎,我收到 XXXX-10-28 作为实体值中的日期。

我尝试使用 Chronic 进行解析,但 Chronic 不适用于 timex 库/格式。

我期待以下字符串作为输入

  • XXXX-10-28 应等于 2018-10-28( future )
  • 2018-10-02TMO 应等同于 2018-10-02明天

请注意 XXXX-XX 代表 YYYY-MM 但它没有 numeric

ASP.NET Core 中是否有任何库或方法可以将此类字符串解析为有效的 datetime 格式?

最佳答案

您可以使用 Microsoft.Recognizers.Text.DataTypes.TimexExpression 包 from NuGet .它是 Microsoft Recognizers Text 项目的一部分 here on github

我发现了两种使用这个库的方法:

使用 TimexProperty 解析表达式并自己猜测年份:

var parsed = new Microsoft.Recognizers.Text.DataTypes.TimexExpression.TimexProperty("XXXX-10-28");
Console.WriteLine(parsed.Year); // = null
Console.WriteLine(parsed.Month); // = 28
Console.WriteLine(parsed.DayOfMonth); // = 10

使用 TimexResolver 解析时间

var resolution = Microsoft.Recognizers.Text.DataTypes.TimexExpression.TimexResolver.Resolve(new [] { "XXXX-10-28" }, System.DateTime.Today)

resolution.Values 将包含一个包含两个解析条目的数组,一个用于该日期的前一次出现,一个用于该日期的下一次出现(基于您传递到 Resolve 的 DateTime方法。

请注意,根据个人经验和我在 github 上看到的内容,在撰写本文时,这个包可能相当 buggy使用更高级的表达式。

关于c# - 在 .NET Core 中解析 Timex 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52593835/

相关文章:

c# - DependencyProperty 的 PropertyChangedCallback 忽略延迟绑定(bind)

c# - 在 ASP.NET 中使用文件 uploader 将图像上传到 Azure Blob?

c# - 实体核心映射实体类型与连接表

nginx - 具有 nginx 和 .NET 核心服务的 Service Fabric

c# - 无法将整数集合发送到 Web Core Api Post 方法,它被设置为 null

botframework - 从机器人框架 FormFlow 发送电子邮件

nlp - LUIS 将意图数量限制为 20

c# - 在 System.Windows.Controls.Image 控件中显示 System.Drawing.Bitmap 对象

c# - 从 React Native 访问 ASP.NET Core 2.1 Web API 时“无法验证 HTTPS 连接”

node.js - 机器人框架通过用户地址发送主动消息