viernes, 12 de junio de 2015

Extracción de Información: modelos de etiquetamiento secuencial para el reconocimiento de nombres de entidades (NER)

Los modelos basados en etiquetamiento secuencial, son métodos supervisados de clasificación, por lo tanto cuentan con dos partes: entrenamiento y prueba (o la clasificación, propiamente dicha)

Entrenamiento:

1. Conseguir un conjunto de documentos representativos de nuestro dominio.
2. Etiquetar cada palabra (token)  con la clase que le corresponde (persona, organización, etc.) o bien marcarla con la etiqueta: "otra". (simplemente la letra O).
3. Especificar características de extracción que se adecuen a las clases y el texto que tenemos.
4. Entrenar un clasificador secuencial para predecir las etiquetas del conjunto de prueba.

Prueba o clasificación:

1. Recibir un conjunto de documentos de prueba
2. Correr el algoritmo que inferirá la etiqueta de cada token.
3. Recuperar las entidades identificadas.

miércoles, 10 de junio de 2015

Extracción de Información: cómo evaluar el reconocimiento de nombres de entidades (NER)

Cuando aplicamos un algoritmo de reconocimiento de entidades, lo más probable es que parta el texto de entrada en tokens, es decir en palabras (ver post de tokenización). Con lo cual, siguiendo con el ejemplo anterior, obtendremos una primera salida como la siguiente:

Ready  =>libro
Player  =>libro
One     => Libro
Ernest  =>Persona
Cline.   => Persona
España   => Lugar, país
2011       => Fecha, año

Si queremos medir la precisión o incluso el recall (exactitud) de nuestro indicador, hay que hacerlo evaluando las entidades identificadas correctamente y NO los tokens. Es decir que sobre la salida anterior hay que realizar una tarea adicional, la cual consiste en identificar los limites de la entidad (el conjunto de tokens que la identifican):

Ready   =>libro 
Player   =>libro  
One      => Libro
Ernest   =>Persona
Cline.    => Persona
España  => Lugar, país
2011     => Fecha, año

En el ejemplo anterior identifiqué con colores el grupo de tokens que representan a la entidad. Si tuviésemos que medir la precisión para el ejemplo diríamos que hay 4 entidades clasificadas y que todas han sido identificadas correctamente.

sábado, 31 de enero de 2015

Extracción de Información: Reconocimiento de nombres de entidades (NER)


El objetivo de la extracción de información es capturar ciertas partes relevantes de un texto. Muchas veces en el contexto de varios documentos distintos, y generar luego, con dicha información, una representación estructurada, limpia y legible, como podría ser una tupla en una base de datos relacional.

El caso más común es la extracción de información fáctica, es decir, información del tipo: ¿Quién hizo qué a quién y cuándo?

Veamos un ejemplo, para clarificar lo anterior:

Las oficinas de Google en la Argentina ya tienen su historia. La empresa abrió sus filial local en 2008 en Puerto Madero.
Allí trabajan 215 empleados en los 6000 m2 que ocupan las instalaciones. [1]

De acá se podría extraer, sabiendo el nombre de la compañía, la ubicación y el año de apertura de la misma:

  • SEDE("Google_Argentina", "Puerto Madero")
  • APERTURA_SEDE("Google_Argentina", "2008")

Otro ejemplo de una tarea de extracción de información es la detección automática de eventos en un e-mail de Apple, como se muestra en la imagen:


En este caso el cliente de correo electrónico extrajo del texto una fecha, la identificó como tal y luego mostró al usuario la opción de generar un evento en el calendario.