我正在查看邮件,发现gmail自动建议我在coming friday around 5pm。
我的意思是它是如何正确确定这个星期五意味着即将到来的星期五,以及下午5点与星期五有关。
我是NLP和机器学习的新手,所以如果有人可以以通俗易懂的方式向我解释它,我将非常高兴
最佳答案
我认为这不需要大量的机器学习。一点点NLP有助于从句子中获取依存关系,但即使不是绝对必要的。
您可以先查看关键字monday
,tuesday
等,然后环顾四周,看看它们周围是什么last monday
,next monday
,coming monday
,previous monday
等。之所以称为窗口功能,是因为它们在您对+/- 1,2,3 ...
感兴趣的功能周围提供了一个窗口monday
。从理论上讲,您也可以从仅查看窗口功能中得到的around 5pm
,我对这会有多大的噪音没有直觉。尝试考虑在这种情况下表达时间的所有方式,然后考虑将这些方式与其他方式混合使用。在我的头顶上,这样做似乎相对容易。
无论如何,另一种方法是使用依赖项解析器来提取句子中元素的语法关系。这要求您对词性(POS)标记句子(将其拆分为标记后)。 POS标记器需要进行培训,以认识到friday
和monday
是名词,也许即使它们是时间表达式,5pm
和around 5pm
也是如此。那确实需要机器学习,并且需要很多。与其他人相比,Google的好处是他们拥有大量数据,这使他们可以拥有许多以不同方式表达本质上相同事物的示例。这给他们的模型很大的广度。一旦为句子POS加上了标记,就将其馈送到相关性解析器(例如Stanford Dependency Parser),该解析器将告诉您句子中所有不同标记之间的关系是什么。
再次,谷歌有很多数据可以提供帮助。最重要的是,Google已经花费了很多年的时间来完善模型的输出,以便当模型不能完全确定发生了什么时,就不会突出显示/提取结果。在实际应用NLP方面,最后一步非常重要,因为它使人们对系统的工作充满信心。基本上,如果软件不确定所发生的事情,则什么也不做,因为做某事有可能做错事,从而降低人们对整个系统的信心。
发行可靠且易于使用的NLP应用程序需要在NLP /机器学习的质量和通用软件工程之间进行权衡,以向用户隐藏NLP失败的所有部分。
尝试向自己发送电子邮件,并以不同的方式表示时间,并查看Google收到哪些电子邮件,哪些没有。例如
我们下周星期五可以见面吗?
下周星期五下午2点咖啡怎么样
我星期五不能做,但是我可以在星期三下午4点见面
等等,戳破技术总是很有趣的。它也可以揭示很多有关它在做什么以及如何做的信息。
关于machine-learning - Gmail如何从文字中提取时间和日期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21852324/