How does Apple find dates, times and addresses in emails?

后端 未结 6 741
陌清茗
陌清茗 2020-12-02 03:33

In the iOS email client, when an email contains a date, time or location, the text becomes a hyperlink and it is possible to create an appointment or look at a map simply by

相关标签:
6条回答
  • 2020-12-02 03:58

    I once wrote a parser to do this, using pyparsing. It's really very simple, you just need to get all the different ways right, but there aren't that many. It only took a few hours and was pretty fast.

    0 讨论(0)
  • 2020-12-02 04:00

    They likely use Information Extraction techniques for this.

    Here is a demo of Stanford's SUTime tool:

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

    You would extract attributes about n-grams (consecutive words) in a document:

    • numberOfLetters
    • numberOfSymbols
    • length
    • previousWord
    • nextWord
    • nextWordNumberOfSymbols
      ...

    And then use a classification algorithm, and feed it positive and negative examples:

    Observation  nLetters  nSymbols  length  prevWord  nextWord isPartOfDate  
    "Feb."       3         1         4       "Wed"     "29th"   TRUE  
    "DEC"        3         0         3       "company" "went"   FALSE  
    ...
    

    You might get away with 50 examples of each, but the more the merrier. Then, the algorithm learns based on those examples, and can apply to future examples that it hasn't seen before.

    It might learn rules such as

    • if previous word is only characters and maybe periods...
    • and current word is in "february", "mar.", "the" ...
    • and next word is in "twelfth", any_number ...
    • then is date

    Here is a decent video by a Google engineer on the subject

    0 讨论(0)
  • 2020-12-02 04:08

    One part of the puzzle could be the NSDataDetector class. Its used to recognize some standard types like phone numbers.

    0 讨论(0)
  • 2020-12-02 04:09

    That's a technology Apple actually developed a very long time ago called Apple Data Detectors. You can read more about it here:

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

    Essentially it parses the text and detects patterns that represent specific pieces of data, then applies OS-contextual actions to it. It's neat.

    0 讨论(0)
  • 2020-12-02 04:13

    This is called temporal expression identification and parsing. Here are some Google searches to get you started:

    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

    0 讨论(0)
  • 2020-12-02 04:15

    Apple has a patent on how they did it System and method for performing an action on a structure in computer data, and here's a story on this patent apples-patent-on-nsdatadetector

    0 讨论(0)
提交回复
热议问题