在iOS电子邮件客户端中,当电子邮件包含日期,时间或位置时,文本将成为超链接,只需点击链接即可创建约会或查看地图。它不仅适用于英语电子邮件,也适用于其他语言。我喜欢这个功能,想了解他们是如何做到的。
这种天真的方法是拥有许多正则表达式并运行它们。但是我不能很好地扩展它并且只适用于特定的语言或日期格式等。我认为Apple必须使用一些机器学习的概念来提取实体(晚上8点,晚上8点,8点, 0800,20:00,20h,20h00,2000等。)。
知道Apple如何能够在电子邮件客户端中如此快速地提取实体?您将应用什么机器学习算法来完成这样的任务?
答案 0 :(得分:152)
他们可能会使用Information Extraction技术。
以下是斯坦福大学SUTime工具的演示:
http://nlp.stanford.edu:8080/sutime/process
您将在文档中提取有关n-gram(连续单词)的属性:
然后使用分类算法,并提供正面和反面的例子:
Observation nLetters nSymbols length prevWord nextWord isPartOfDate
"Feb." 3 1 4 "Wed" "29th" TRUE
"DEC" 3 0 3 "company" "went" FALSE
...
你可能会得到50个例子,但越多越好。然后,算法基于这些示例进行学习,并且可以应用于之前未见过的未来示例。
它可能会学习诸如
之类的规则以下是Google工程师关于该主题的decent video
答案 1 :(得分:110)
这是Apple很久以前开发的一项名为Apple Data Detectors
的技术。你可以在这里阅读更多相关信息:
http://www.miramontes.com/writing/add-cacm/
本质上,它解析文本并检测表示特定数据片段的模式,然后对其应用操作系统上下文操作。它很整洁。
答案 2 :(得分:18)
这称为时间表达式标识和解析。以下是一些Google搜索,可帮助您入门:
https://www.google.com/#hl=en&safe=off&sclient=psy-ab&q=timebank+timeml+timex
https://www.google.com/#hl=en&safe=off&sclient=psy-ab&q=temporal+expression+tagger
答案 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