En el cliente de correo electrónico de iOS, cuando un correo electrónico contiene una fecha, hora o ubicación, el texto se convierte en un hipervínculo y es posible crear una cita o mirar un mapa simplemente tocando el enlace. No solo funciona para correos electrónicos en inglés, sino también en otros idiomas. Me encanta esta función y me gustaría entender cómo lo hacen.
La manera ingenua de hacer esto sería tener muchas expresiones regulares y ejecutarlas todas. Sin embargo, esto no va a escalar muy bien y funcionará solo para un idioma específico o formato de fecha, etc. Creo que Apple debe estar utilizando algún concepto de aprendizaje automático para extraer entidades (8:00 PM, 8PM, 8:00, 0800, 20:00, 20h, 20h00, 2000 etc.).
¿Alguna idea de cómo Apple puede extraer entidades tan rápidamente en su cliente de correo electrónico? ¿Qué algoritmo de aprendizaje automático aplicarías para lograr tal tarea?
Respuestas:
Es probable que utilicen técnicas de extracción de información para esto.
Aquí hay una demostración de la herramienta SUTime de Stanford:
http://nlp.stanford.edu:8080/sutime/process
Extraería atributos sobre n-gramos (palabras consecutivas) en un documento:
...
Y luego use un algoritmo de clasificación, y aliméntelo con ejemplos positivos y negativos:
Es posible que te salgas con 50 ejemplos de cada uno, pero cuantos más mejor. Luego, el algoritmo aprende basándose en esos ejemplos y puede aplicarse a ejemplos futuros que no ha visto antes.
Puede aprender reglas como
Aquí hay un video decente de un ingeniero de Google sobre el tema.
fuente
Esa es una tecnología que Apple realmente desarrolló hace mucho tiempo llamada
Apple Data Detectors
. Puedes leer más sobre esto aquí:http://www.miramontes.com/writing/add-cacm/
Esencialmente analiza el texto y detecta patrones que representan datos específicos, luego le aplica acciones contextuales del sistema operativo. Está bien.
fuente
Esto se llama identificación y análisis de expresiones temporales . Aquí hay algunas búsquedas de Google para comenzar:
https://www.google.com/#hl=en&safe=off&sclient=psy-ab&q=timebank+timeml+timex
https://www.google.com/#hl=es&safe=off&sclient=psy-ab&q=temporal+expression+tagger
fuente
Una parte del rompecabezas podría ser la
NSDataDetector
clase. Se utiliza para reconocer algunos tipos estándar, como los números de teléfono.fuente
NSDataDetector
clase es el resultado del esfuerzo que Apple puso en implementar esto. La pregunta es cómo funciona la clase internamente.Una vez escribí un analizador para hacer esto, usando pyparsing. Es realmente muy simple, solo necesita acertar todas las formas diferentes, pero no hay muchas. Solo tomó unas horas y fue bastante rápido.
fuente
Apple tiene una patente sobre cómo lo hicieron Sistema y método para realizar una acción sobre una estructura en los datos de la computadora , y aquí hay una historia sobre este detector de datos de patentes de patentes de manzanas
fuente