首页 文章

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

提问于
浏览
126

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

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

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

6 回答

  • 153

    他们可能会使用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个例子,但越多越好 . 然后,算法基于这些示例进行学习,并且可以应用于之前未见过的未来示例 .

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

    • 如果前一个单词只是字符,可能是句点......

    • 和当前字在"february","mar.","the" ...

    • 和下一个单词是"twelfth",any_number ...

    • 然后是日期

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

  • 2

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

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

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

  • 110
  • 5

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

  • 1

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

  • 18

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

相关问题