苹果如何在电子邮件中找到日期、时间和地址?

  • 回答 (2)
  • 关注 (0)
  • 查看 (23)

在IOS电子邮件客户端中,当电子邮件包含日期、时间或位置时,文本将变成超链接,只需点击链接就可以创建约会或查看地图。它不仅适用于英文电子邮件,也适用于其他语言。我喜欢这个功能,并想了解他们是如何做到的。

要做到这一点,最简单的方法是拥有许多正则表达式并全部运行。然而,我这并不是很好的扩展,将只适用于特定的语言或日期格式,等等。我认为苹果一定是在使用机器学习的概念来提取实体(晚上8:00,下午8:00,8:00,0800,20:00,20h,20,2000等)。

你知道苹果如何能够如此迅速地在其电子邮件客户端提取实体吗?会采用什么样的机器学习算法来完成这样的任务?

区城轩区城轩提问于
乐乐22GEEK,老程序员,产品经理回答于

以下是斯坦福SUTime工具的演示:

http://nlp.stanford.edu:8080/sutime/process

你将在文档中提取有关n-gram(连续词)的属性:

  • numberOfLetters
  • numberOfSymbols
  • 长度
  • previousWord
  • nextWord
  • nextWordNumberOfSymbols ...

然后使用分类算法,并为其提供正面和负面的示例:

Observation  nLetters  nSymbols  length  prevWord  nextWord isPartOfDate  
"Feb."       3         1         4       "Wed"     "29th"   TRUE  
"DEC"        3         0         3       "company" "went"   FALSE  
...

每个人可以摆脱50个例子,但越多越好。然后,该算法基于这些示例进行学习,并且可以应用于以前未见过的未来示例。

它可能学习如下规则

  • 如果以前的单词只有字符和可能的时期...
  • 目前的词是在“二月”,“三月”,“...”
  • 下一个单词在“第十二个”中,any_number ...
  • 那么是日期
弹指之间好奇心很强的宅男回答于

这是苹果在很久以前开发的一项技术Apple Data Detectors。你可以在这里读更多关于它的内容:

http://www.miramontes.com/writing/add-cacm/

本质上,它解析文本并检测代表特定数据段的模式,然后对其应用操作系统上下文操作。它很整洁。

扫码关注云+社区