128 votos

¿Cómo Apple encuentra las fechas, los tiempos y direcciones de correos electrónicos?

En el iOS cliente de correo electrónico, cuando un mensaje de correo electrónico contiene una fecha, la hora o el lugar, el texto se convierte en un hipervínculo y es posible crear una cita o un vistazo al mapa, simplemente pulsando sobre el enlace. No sólo funciona para los mensajes de correo electrónico en inglés, pero en otros idiomas también. Me encanta esta característica y le gustaría entender cómo lo hacen.

La ingenua manera de hacer esto sería tener muchas expresiones regulares y ejecutar todos ellos. Sin embargo, yo no la van a escala muy bien y va a trabajar sólo para un idioma específico o el formato de fecha, etc. Creo que Apple debe ser el uso de algún concepto de aprendizaje de máquina para extraer las entidades (8:00PM, 8PM, 8:00, 0800, 20:00, a partir de las 20h, 20h00, 2000, etc.).

¿Alguna idea de cómo Apple es capaz de extraer de entidades tan rápidamente en su cliente de correo electrónico? Lo de la máquina de aprendizaje algoritmo a aplicar cumplir esa tarea?

153voto

Neil McGuigan Puntos 10123

Es probable que el uso de la Extracción de Información técnicas para esto.

Aquí es una demostración de Stanford SUTime herramienta:

http://nlp.stanford.edu:8080/sutime/process

Usted extracto de atributos acerca de n-gramas (palabras consecutivas) en un documento:

  • numberOfLetters
  • numberOfSymbols
  • longitud
  • previousWord
  • nextWord
  • nextWordNumberOfSymbols
    ...

Y, a continuación, utilice un algoritmo de clasificación, y alimentar los 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  
...

Usted puede conseguir lejos con 50 ejemplos de cada uno, sino el más, mejor. A continuación, el algoritmo aprende basado en los ejemplos, y se puede aplicar a futuros ejemplos de que no se ha visto antes.

Puede aprender las reglas, tales como

  • si la palabra anterior es sólo a los personajes y tal vez los periodos de...
  • y la palabra actual en "febrero", "mar", "el" ...
  • y la palabra siguiente en el "xii", any_number ...
  • luego está la fecha

Aquí es un decente video por un ingeniero de Google sobre el tema

110voto

jeffehobbs Puntos 941

Es una tecnología de Apple se convirtió en realidad hace mucho tiempo llamado Apple Data Detectors . Puedes leer más acerca de esto:

http://www.Miramontes.com/Writing/Add-CACM/

Esencialmente se analiza el texto y detecta los patrones que representan piezas específicas de los datos, luego se aplica acciones OS contextual a él. Es bonito.

18voto

Gregory Marton Puntos 872

Esto se llama la expresión temporal de la identificación y el análisis. Aquí están algunas de las 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=en&safe=off&sclient=psy-ab&q=temporal+expression+tagger

5voto

hburde Puntos 1008

Podría ser una parte del rompecabezas del NSDataDetector clase. Su usado para reconocer algunos tipos estándar como números de teléfono.

2voto

Una vez escribí un analizador para hacer esto, usando pyparsing. Es muy sencillo, sólo tienes que ir todas las maneras, pero no hay muchos. Sólo tomó unas horas y fue muy rápido.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X