Dans le client de messagerie iOS, lorsqu'un e-mail contient une date, une heure ou un lieu, le texte devient un hyperlien et il est possible de créer un rendez-vous ou de consulter une carte en appuyant simplement sur le lien. Cela fonctionne non seulement pour les e-mails en anglais, mais également dans d'autres langues. J'adore cette fonctionnalité et j'aimerais comprendre comment ils le font.
La manière naïve de le faire serait d'avoir de nombreuses expressions régulières et de les exécuter toutes. Cependant, cela ne va pas très bien évoluer et ne fonctionnera que pour une langue ou un format de date spécifique, etc. Je pense qu'Apple doit utiliser un concept d'apprentissage automatique pour extraire des entités (20h00, 20h00, 20h00, 0800, 20h00, 20h, 20h00, 2000 etc.).
Une idée de la façon dont Apple est capable d'extraire des entités si rapidement dans son client de messagerie? Quel algorithme d'apprentissage automatique utiliseriez-vous pour accomplir une telle tâche?
Réponses:
Ils utilisent probablement des techniques d' extraction d'informations pour cela.
Voici une démo de l'outil SUTime de Stanford:
http://nlp.stanford.edu:8080/sutime/process
Vous extrairiez des attributs sur les n-grammes (mots consécutifs) dans un document:
...
Et puis utilisez un algorithme de classification, et donnez-lui des exemples positifs et négatifs:
Vous pourriez vous en tirer avec 50 exemples de chacun, mais plus on est de fous. Ensuite, l'algorithme apprend sur la base de ces exemples et peut s'appliquer à de futurs exemples qu'il n'a jamais vus auparavant.
Il pourrait apprendre des règles telles que
Voici une vidéo décente d'un ingénieur Google sur le sujet
la source
C'est une technologie qu'Apple a développée il y a très longtemps
Apple Data Detectors
. Vous pouvez en savoir plus ici:http://www.miramontes.com/writing/add-cacm/
Essentiellement, il analyse le texte et détecte les modèles qui représentent des éléments de données spécifiques, puis lui applique des actions contextuelles du système d'exploitation. C'est chouette.
la source
C'est ce qu'on appelle l' identification et l'analyse des expressions temporelles . Voici quelques recherches Google pour vous aider à démarrer:
https://www.google.com/#hl=fr&safe=off&sclient=psy-ab&q=timebank+timeml+timex
https://www.google.com/#hl=fr&safe=off&sclient=psy-ab&q=temporal+expression+tagger
la source
Une partie du puzzle pourrait être la
NSDataDetector
classe. Il est utilisé pour reconnaître certains types standard comme les numéros de téléphone.la source
NSDataDetector
classe soit le résultat des efforts déployés par Apple pour l'implémenter. La question est de savoir comment fonctionne la classe en interne?Une fois, j'ai écrit un analyseur pour ce faire, en utilisant pyparsing. C'est vraiment très simple, il vous suffit de bien comprendre toutes les méthodes, mais il n'y en a pas beaucoup. Cela n'a pris que quelques heures et a été assez rapide.
la source
Apple a un brevet sur la façon dont ils l'ont fait Système et méthode pour effectuer une action sur une structure dans des données informatiques , et voici une histoire sur ce brevet apples-patent-on-nsdatadetector
la source