Apple如何在电子邮件中查找日期,时间和地址?

时间:2012-02-15 14:12:07

标签: machine-learning nlp information-extraction named-entity-recognition

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

这种天真的方法是拥有许多正则表达式并运行它们。但是我不能很好地扩展它并且只适用于特定的语言或日期格式等。我认为Apple必须使用一些机器学习的概念来提取实体(晚上8点,晚上8点,8点, 0800,20:00,20h,20h00,2000等。)。

知道Apple如何能够在电子邮件客户端中如此快速地提取实体?您将应用什么机器学习算法来完成这样的任务?

6 个答案:

答案 0 :(得分:152)

他们可能会使用Information Extraction技术。

以下是斯坦福大学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个例子,但越多越好。然后,算法基于这些示例进行学习,并且可以应用于之前未见过的未来示例。

它可能会学习诸如

之类的规则
  • 如果前一个单词只是字符,可能是句号......
  • 当前的词是在“二月”,“三月”,“the”......
  • ,下一个词是“第十二”,any_number ......
  • 然后是约会

以下是Google工程师关于该主题的decent video

答案 1 :(得分:110)

这是Apple很久以前开发的一项名为Apple Data Detectors的技术。你可以在这里阅读更多相关信息:

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

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

答案 2 :(得分:18)

答案 3 :(得分:5)

谜题的一部分可能是NSDataDetector类。它用于识别一些标准类型,如电话号码。

答案 4 :(得分:2)

我曾经使用pyparsing编写了一个解析器。这真的很简单,你只需要正确地采用所有不同的方式,但没有那么多。它只花了几个小时而且非常快。

答案 5 :(得分:1)

Apple拥有关于他们如何做到这一点的专利System and method for performing an action on a structure in computer data,这是关于这一专利的故事apples-patent-on-nsdatadetector