【问题标题】:Natural language parser for dates (.NET)?日期的自然语言解析器(.NET)?
【发布时间】:2023-08-09 03:59:01
【问题描述】:

我希望能够让用户使用自然语言(例如“下周五”、“每个工作日”)输入日期(包括重复日期)。很像http://todoist.com/Help/timeInsert中的示例

我找到了this post,但它有点旧,只提供了one solution,我并不完全满意。我想我会重新提出这个问题,看看:还有其他 .NET 库可以进行这种日期解析吗?

【问题讨论】:

  • 祝你好运。就连我和我的妻子也无法就“这个星期二”在星期三的含义达成一致。
  • 这是那个问题的完全重复!通过评论、投票或回答来复活那个问题。
  • Ajmastrean,请给个链接?

标签: .net datetime ironpython nlp


【解决方案1】:

我知道这不是最佳解决方案,但您也可以尝试将 dateJs 库移植到 .net

它处理像今天这样的事情;明天; 2008 年 7 月;下周五;去年四月; 2004.08.07; 2005 年 6 月 4 日;晚上 8 点 15 分; 22:30:45; +5年

【讨论】:

    【解决方案2】:

    我不知道你现在可以在框架中使用什么来让你做到这一点,但如果你满足于玩弄未来的比特,你可以看看 Oslo,并制作你自己的文本 DSL .

    这篇文章展示了如何做你想做的事:

    http://www.infoq.com/articles/natural-language-date-dsl-oslo

    【讨论】:

      【解决方案3】:

      DateTime.Parse() 将接受一个字符串参数并尝试生成它的 DateTime 相等。我对此有点生疏,但它应该适用于您可以使用 DateTime.ToString() 生成的任何日期字符串。

      您还可以查看 DateTime.ParseExact(),它与 ​​Parse() 执行相同的操作,但允许您限制输入字符串的可能格式。以下链接应该可以帮助您使用框架中的任何其他日期解析功能。

      http://msdn.microsoft.com/en-us/library/1k1skd40.aspx

      【讨论】:

        【解决方案4】:

        我们开发的正是您在内部项目中寻找的东西。如果有足够的需要,我们正在考虑将其公开。请查看此博客了解更多详情:http://precisionsoftwaredesign.com/blog.php

        【讨论】:

          【解决方案5】:

          我已经构建了this library 作为工作项目的一部分。它还没有完全完善,但如果您有兴趣,我可以做更多的工作和/或根据您的需要安排许可证。

          【讨论】:

            【解决方案6】:

            我编写的程序非常老旧(使用 DBASE 衍生工具 Clipper),但代码可读性很强。

            http://www.jbooth-consulting.com/downloads/clipper/guessdate.zip

            如果你想自己动手,可能会给你一些想法......

            【讨论】: