W kliencie poczty e-mail na iOS, gdy wiadomość e-mail zawiera datę, godzinę lub lokalizację, tekst staje się hiperłączem i można utworzyć spotkanie lub spojrzeć na mapę, po prostu dotykając łącza. Działa nie tylko w przypadku wiadomości e-mail w języku angielskim, ale także w innych językach. Uwielbiam tę funkcję i chciałbym zrozumieć, jak to robią.
Naiwnym sposobem byłoby posiadanie wielu wyrażeń regularnych i uruchamianie ich wszystkich. Jednak nie będzie to zbyt dobrze skalowane i będzie działać tylko dla określonego języka lub formatu daty itp. Myślę, że Apple musi używać jakiejś koncepcji uczenia maszynowego do wyodrębniania jednostek (20:00, 20:00, 8:00, 0800, 20:00, 20h, 20:00, 2000 itd.).
Masz jakiś pomysł, w jaki sposób Apple jest w stanie tak szybko wyodrębnić jednostki w swoim kliencie poczty e-mail? Jaki algorytm uczenia maszynowego zastosowałbyś, aby wykonać takie zadanie?
źródło
Odpowiedzi:
Prawdopodobnie używają do tego technik ekstrakcji informacji .
Oto demonstracja narzędzia SUTime Stanforda:
http://nlp.stanford.edu:8080/sutime/process
Wyodrębniłbyś atrybuty dotyczące n-gramów (kolejnych słów) w dokumencie:
...
Następnie użyj algorytmu klasyfikacji i podaj pozytywne i negatywne przykłady:
Możesz uciec z 50 przykładami każdego z nich, ale im więcej, tym weselej. Następnie algorytm uczy się na podstawie tych przykładów i może zastosować do przyszłych przykładów, których wcześniej nie widział.
Może nauczyć się takich zasad jak
Oto przyzwoity film napisany przez inżyniera Google na ten temat
źródło
To technologia, którą Apple opracował bardzo dawno temu
Apple Data Detectors
. Więcej na ten temat przeczytasz tutaj:http://www.miramontes.com/writing/add-cacm/
Zasadniczo analizuje tekst i wykrywa wzorce, które reprezentują określone fragmenty danych, a następnie stosuje do nich działania kontekstowe systemu operacyjnego. Jest fajnie.
źródło
Nazywa się to identyfikacją i analizowaniem wyrażeń czasowych . Oto kilka wyszukiwań w Google, od których możesz zacząć:
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
źródło
Jedną z części układanki może być
NSDataDetector
klasa. Służy do rozpoznawania niektórych standardowych typów, takich jak numery telefonów.źródło
NSDataDetector
to, że ta klasa jest wynikiem wysiłku, jaki Apple włożył w jej wdrożenie. Pytanie brzmi, jak klasa działa wewnętrznie?Kiedyś napisałem parser, aby to zrobić, używając pyparsing. To naprawdę bardzo proste, wystarczy, że dobrze zrozumiesz wszystkie różne sposoby, ale nie ma ich zbyt wiele. Zajęło to tylko kilka godzin i było dość szybkie.
źródło
Apple ma patent na to, jak to zrobili System i metoda wykonywania akcji na strukturze danych komputerowych , a oto historia o tym patencie Apple-patent-on-nsdatadetector
źródło