【问题标题】:How does gmail extract time and date from textgmail如何从文本中提取时间和日期
【发布时间】:2014-02-18 11:26:52
【问题描述】:

我正在浏览我的邮件,并看到 gmail 自动建议我将 coming friday around 5pm 添加到 2 月 21 日的活动中。我很惊讶 gmail 是如何做到的? 我的意思是它是如何正确判断出这个星期五意味着即将到来的星期五,以及下午 5 点与星期五相关联。

我是 NLP 和机器学习方面的新手,所以如果有人能用外行的方式向我解释一下,我会很高兴

【问题讨论】:

    标签: machine-learning nlp


    【解决方案1】:

    我认为这不需要大量的机器学习。一点 NLP 有助于从句子中获取依赖关系,但即使这样也不是绝对必要的。

    您可以从查看关键字mondaytuesday 等开始,然后环顾四周,看看它们周围有什么last mondaynext mondaycoming mondayprevious monday 等等上。这些被称为窗口功能,因为它们在您感兴趣的功能monday 周围提供了一个窗口+/- 1,2,3 ...around 5pm 理论上您也可以从仅查看窗口功能中获得,我不知道那会有多嘈杂。试着想想在那种情况下表达时间的所有方式,然后想想这些方式可以与其他东西混合在一起。在我看来,这样做似乎相对容易。

    无论如何,另一种方法是使用依赖解析器来提取句子中元素的语法关系。这需要您对句子进行词性 (POS) 标记(在将其拆分为标记之后)。词性标注器需要接受训练以识别 fridaymonday 是名词,甚至可能是时间表达,5pmaround 5pm 也是如此。这确实需要机器学习和很多东西。与其他公司相比,谷歌的优势在于他们拥有大量数据,这使他们能够拥有大量不同方式的示例来表达本质上相同的事物。这使他们的模型具有很大的广度。将句子 POS 标记后,将其提供给依赖解析器(例如 Stanford Dependency Parser),它会告诉您句子中所有不同标记之间的关系是什么。

    再一次,Google 有大量数据可以提供帮助。最重要的是,谷歌多年来一直在磨练模型的输出,这样当模型不能完全确定发生了什么时,它就不会突出显示/提取结果。就在现实世界中实际应用 NLP 而言,最后一步非常重要,因为它让人们对系统正在做什么充满信心。基本上,如果软件不确定发生了什么,则什么也不做,因为做某事有做错事的风险,这会降低人们对整个系统的信心。

    发布一个可靠且易于使用的 NLP 应用程序需要在 NLP/机器学习的质量和通用软件工程之间进行权衡,以向用户隐藏 NLP 失败的所有部分。

    尝试以不同的方式向自己发送带有时间的电子邮件,看看 Google 会收到哪些邮件,哪些没有。比如

    • 我们下周五可以见面吗?
    • 下周周五下午 2 点喝杯咖啡怎么样
    • 我不能去周五,但我可以在周三下午 4 点见面

    等等,在技术上戳漏洞总是很有趣的。它还可以揭示很多关于它在做什么以及它是如何做的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 2017-02-01
      相关资源
      最近更新 更多