【问题标题】:How to parse temporal expressions (esp. time ranges), Python?如何解析时间表达式(尤其是时间范围),Python?
【发布时间】:2015-09-26 06:48:49
【问题描述】:

我有一个包含 3 个组件的 NLP 任务。我尝试了几种方法(最后提到),但我无法获得好的结果。

  1. 检测语句中的时间表达式
  2. 然后分类为时间戳时间触发器时间段
  3. 将每个表达式等同于其等效的 DateTime。

例子:

2015 年 7 月 20 日星期四 2000 小时为参考时间

  1. 时间戳

    我想在 20 分钟后预订出租车

    Answer: [tStamp]2020 hrs, Thursday, July 20th
    
  2. 时间触发

    2 之后的任何计时器都可以

    Answer:  [tTrigger] - start - 0200 hrs,July 21st 2015
    

    5 之前是好的

    [tTrigger] - start - now, 2000hrs, July 20th, 2015 : end - 0500 hrs, July 21st, 2015
    
  3. 时间段

    过去两年我在旧金山工作

    [tPeriod] -  2013-2015
    

我尝试使用正则表达式来执行此操作,结果非常通用。我读到的第二个选项是尝试让模型从 Naive Bays 分类器中学习,但 naive bays 学习的是准确的单词而不是短语。

我在 python 中遇到了parsedatetime 1.5 包,它在将短语转换为时间戳方面非常棒,这解决了 3. 提到的问题,但我仍然无法解决拘留和分类问题。

【问题讨论】:

  • 这不是代码编写服务。展示您的尝试,我们将提供帮助。请阅读how to ask a question
  • @pynchia:对不起,如果你误会了!!!我是 NLP 的新手,所以想了解一下。截至目前,我知道正则表达式不起作用。我想知道我可以使用哪些其他工具。我肯定会自己编写代码。这就是为什么我用 NLP 关键字而不是任何语言关键字来标记问题。
  • 朴素贝叶斯不学习单词,它学习给定一些输入的概率,并且以前相信在给定一些上下文的情况下发现该输入的概率。如果您开始考虑单词的组合及其顺序,这可能会有所帮助。我并不是说朴素贝叶斯是要走的路,只是指出它不会在你指出的地方停止。
  • @miraculixx 谢谢,让我试一试。
  • 我对同样的问题感兴趣 - 您是否发现了如何最好地解决这个问题?

标签: python nlp stanford-nlp jnlp opennlp


【解决方案1】:

斯坦福的CoreNLP 库有一个Python 包装器,其中包括SUTime 工具。查看在线 SUTime demo 看看这是否对您有用。

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • 出于好奇,您将如何在答案中显示演示?
  • 精简教程,添加更多解释等
  • 在本例中,这是一个学术工具,由斯坦福 NLP 实验室编写和维护。我认为他们的解释简洁明了,比我在这里提供的任何解释都要好得多。本身没有教程,页面上更多的使用部分显示了如何调用库。想不出我会在这些中添加什么..
  • 也许......但我不知道有更好的免费工具来完成这种工作。
猜你喜欢
  • 2015-07-03
  • 2011-03-17
  • 2019-09-15
  • 2012-10-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-06
  • 1970-01-01
相关资源
最近更新 更多