porque mails mail los funciona españa descargan correo configurar apple aplicacion abrir machine-learning nlp information-extraction named-entity-recognition

machine-learning - mails - correo icloud



¿Cómo encuentra Apple las fechas, horas y direcciones en los correos electrónicos? (6)

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 característica y me gustaría entender cómo lo hacen.

La forma 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 usar 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ía para realizar tal tarea?



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-grams (palabras consecutivas) en un documento:

  • numberOfLetters
  • numberOfSymbols
  • longitud
  • Palabras previas
  • nextWord
  • nextWordNumberOfSymbols
    ...

Y luego usa un algoritmo de clasificación y dale ejemplos positivos y negativos:

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

Puede salirse con 50 ejemplos de cada uno, pero cuanto más, mejor. Entonces, el algoritmo aprende en base a esos ejemplos, y puede aplicar a ejemplos futuros que no haya visto antes.

Puede aprender reglas como

  • si la palabra anterior es solo caracteres y tal vez puntos ...
  • y la palabra actual está en "febrero", "mar", "el" ...
  • y la siguiente palabra está en "duodécimo", any_number ...
  • entonces es la fecha

Aquí hay un video decente de un ingeniero de Google sobre el tema


Esa es una tecnología que Apple desarrolló hace mucho tiempo, llamada Apple Data Detectors . Puedes leer más sobre esto aquí:

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

Básicamente, analiza el texto y detecta patrones que representan piezas de datos específicos, luego le aplica acciones contextuales del sistema operativo. Está limpio.



Una parte del rompecabezas podría ser la clase NSDataDetector . Se usa para reconocer algunos tipos estándar, como los números de teléfono.


Una vez escribí un analizador para hacer esto, usando pyparsing. Es realmente muy simple, solo necesitas tomar todas las formas diferentes, pero no hay tantas. Solo tomó unas pocas horas y fue bastante rápido.