Wenn eine E-Mail im iOS-E-Mail-Client ein Datum, eine Uhrzeit oder einen Ort enthält, wird der Text zu einem Hyperlink, und Sie können einen Termin erstellen oder eine Karte anzeigen, indem Sie einfach auf den Link tippen. Es funktioniert nicht nur für E-Mails in Englisch, sondern auch in anderen Sprachen. Ich liebe diese Funktion und würde gerne verstehen, wie sie es machen.
Der naive Weg, dies zu tun, wäre, viele reguläre Ausdrücke zu haben und sie alle auszuführen. Allerdings wird dies nicht sehr gut skaliert und funktioniert nur für eine bestimmte Sprache oder ein bestimmtes Datumsformat usw. Ich denke, dass Apple ein Konzept des maschinellen Lernens verwenden muss, um Entitäten zu extrahieren (20:00 Uhr, 20:00 Uhr, 20:00 Uhr, 0800, 20:00, 20h, 20h00, 2000 usw.).
Haben Sie eine Idee, wie Apple Entitäten in seinem E-Mail-Client so schnell extrahieren kann? Welchen Algorithmus für maschinelles Lernen würden Sie anwenden, um eine solche Aufgabe zu erfüllen?
Antworten:
Sie verwenden hierfür wahrscheinlich Informationsextraktionstechniken .
Hier ist eine Demo von Stanfords SUTime-Tool:
http://nlp.stanford.edu:8080/sutime/process
Sie würden Attribute über n-Gramm (aufeinanderfolgende Wörter) in einem Dokument extrahieren:
...
Verwenden Sie dann einen Klassifizierungsalgorithmus und geben Sie ihm positive und negative Beispiele:
Sie könnten mit jeweils 50 Beispielen davonkommen, aber je mehr desto besser. Dann lernt der Algorithmus anhand dieser Beispiele und kann auf zukünftige Beispiele angewendet werden, die er zuvor noch nicht gesehen hat.
Es könnte Regeln wie lernen
Hier ist ein anständiges Video eines Google-Ingenieurs zu diesem Thema
quelle
Das ist eine Technologie, die Apple vor langer Zeit entwickelt hat
Apple Data Detectors
. Mehr dazu lesen Sie hier:http://www.miramontes.com/writing/add-cacm/
Im Wesentlichen analysiert es den Text und erkennt Muster, die bestimmte Daten darstellen, und wendet dann OS-kontextbezogene Aktionen darauf an. Es ist ordentlich.
quelle
Dies wird als Identifizierung und Analyse von zeitlichen Ausdrücken bezeichnet . Hier sind einige Google-Suchanfragen, um Ihnen den Einstieg zu erleichtern:
https://www.google.com/#hl=de&safe=off&sclient=psy-ab&q=timebank+timeml+timex
https://www.google.com/#hl=de&safe=off&sclient=psy-ab&q=temporal+expression+tagger
quelle
Ein Teil des Puzzles könnte die
NSDataDetector
Klasse sein. Es wird verwendet, um einige Standardtypen wie Telefonnummern zu erkennen.quelle
NSDataDetector
Klasse das Ergebnis der Bemühungen ist, die Apple unternommen hat, um dies umzusetzen. Die Frage ist, wie die Klasse intern arbeitet.Ich habe einmal einen Parser geschrieben, um dies mit Pyparsing zu tun. Es ist wirklich sehr einfach, man muss nur die verschiedenen Wege richtig machen, aber es gibt nicht so viele. Es dauerte nur ein paar Stunden und war ziemlich schnell.
quelle
Apple hat ein Patent darauf, wie sie es gemacht haben. System und Verfahren zum Ausführen einer Aktion an einer Struktur in Computerdaten , und hier ist eine Geschichte über diesen Patent -Apfel-Patent-auf-nsdatadetector
quelle