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

Mar*_*tin 128 nlp machine-learning named-entity-recognition information-extraction

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

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

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

Nei*_*gan 153

他们可能会使用信息提取技术.

这是斯坦福的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  
...
Run Code Online (Sandbox Code Playgroud)

你可能会得到50个例子,但越多越好.然后,算法基于这些示例进行学习,并且可以应用于之前未见过的未来示例.

它可能会学习诸如此类的规则

  • 如果前一个单词只是字符,可能是句点......
  • 当前的词是在"二月","三月","那个"......
  • 而下一个单词是"第十二",any_number ...
  • 然后是约会

以下是Google工程师关于此主题的视频

  • 我很确定这种方法的表现不会比大约的f-measure更好.0.9.(注意,这只是一种感觉,我可能是错的).另一方面,除了对所有常见格式进行编码以实现更好的方法(可能是0.99+,因为最常见的格式永远不会丢失)并且在运行时更快地实现+之外,我会这样做. (5认同)
  • 有趣!我从来没有这样说过.谢谢el首席. (4认同)
  • el酋长,在您看来,哪种模式最适合这种模式?贝叶斯? (2认同)

jef*_*bbs 110

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

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

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

  • 这是正确的答案.其他答案可能会告诉你如何做到这一点,但这个答案会告诉你Apple*如何做到这一点. (24认同)
  • 啊,所以这就是我网站上的所有点击来自:) FWIW,我是ATG时代Apple Data Detectors的项目负责人; 我可以在这里添加的是,这只是一个操作系统8和9技术 - 它从来没有跳到OS X.显然在OS X和IOS中发生了类似的事情,而且,我不再在Apple了所以不能说,如果架构有点不同,我不会感到惊讶.尽管如此,我希望某种语法/解析器系统仍然是它的核心.现在计算机很快,简单的语法非常便宜. (14认同)
  • 我们可以在写作中加入更多细节吗?单个链接条目不会添加太多 (2认同)

小智 5

拼图的一部分可能是NSDataDetector班级.它用于识别一些标准类型,如电话号码.

  • 它位于NSRegularExpression.h中,因此很可能正如指出的那样只是一组正则表达式. (3认同)
  • 似乎"NSDataDetector"类是Apple为实现这一目标而付出的努力的结果.问题是班级内部如何运作? (2认同)