苹果如何找到电子邮件中的日期,时间和地址?
machine-learning
named-entity-recognition
nlp
5
0

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

幼稚的方式是拥有许多正则表达式并全部运行它们。但是我无法很好地扩展,只能用于特定的语言或日期格式等。我认为Apple必须使用某种机器学习的概念来提取实体(8:00 PM、8PM、8:00, 0800、20:00、20h,20h00、2000等)。

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

参考资料:
Stack Overflow
收藏
评论
共 6 个回答
高赞 时间 活跃

我曾经使用pyparsing编写了一个解析器来执行此操作。这真的非常简单,您只需要正确处理所有不同的方法即可,但是没有那么多。只花了几个小时,速度很快。

收藏
评论
收藏
评论

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

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

本质上,它解析文本并检测代表特定数据的模式,然后对其应用OS上下文操作。干净利落

收藏
评论

他们可能为此使用信息提取技术。

这是斯坦福大学的SUTime工具的演示:

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

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

  • numberOfLetters
  • numberOfSymbols
  • 长度
  • 以前的词
  • 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 ...
  • 然后是日期

这是Google工程师关于该主题的不错的视频

收藏
评论

苹果公司对他们是如何做到的专利用于在计算机数据结构,执行操作的系统和方法 ,这里对这个专利的一个故事苹果专利-ON-nsdatadetector

收藏
评论

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

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号