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. 



Este tipo de extracción de información podría realizarse solo con expresiones regulares y una lista de nombres. Y muchas veces no hace falta más que eso.

Reconocimiento de Nombres de Entidades  (Named Entity Recognition, NER )

Una sub-tarea muy importante de la clasificación de textos es el reconocimiento de nombres de entidades, NER por sus siglas en ingles.

Se trata de poder identificar y clasificar en un texto los nombres de las entidades. Pero, ¿qué es una entidad? Rápidamente podríamos decir que una entidad es algo concreto, físicamente delimitado y lo más importante, algo que tiene un nombre. Yo soy una entidad, la Universidad de Buenos Aires es una entidad, Asunción de Paraguay es una entidad, pero no son entidades el agua, la arena, una silla, etc.

Para clarificar lo anterior, tomemos el siguiente texto de Wikipedia

   Ready Player One es un libro de ciencia ficción. Es la primera novela de Ernest Cline. El libro fue publicado en España en noviembre de 2011 por Ediciones B.
Es el año 2044 y el mundo es un desastre. Las fuentes de energía fósiles están prácticamente agotadas y el precio del combustible está por las nubes. En medio de una enorme depresión a nivel mundial la mayoría de la gente subsiste como puede. Sin embargo un videojuego de realidad virtual llamado OASIS proporciona la vía de escape que las personas necesitan. La gente dedica más tiempo al juego que a la vida real misma. El juego ofrece todas las posibilidades imaginables y cualquier cosa es posible. [2]

Aplicando un algoritmo muy simple que marque las palabras que comienzan con mayúscula e ignore los comienzos de oración, detectaríamos lo siguiente:

   Ready Player One es un libro de ciencia ficción. Es la primera novela de Ernest ClineEl libro fue publicado en España en noviembre de 2011 por Ediciones B.
Es el año 2044 y el mundo es un desastre. Las fuentes de energía fósiles están prácticamente agotadas y el precio del combustible está por las nubes. En medio de una enorme depresión a nivel mundial la mayoría de la gente subsiste como puede. Sin embargo un videojuego de realidad virtual llamado OASIS proporciona la vía de escape que las personas necesitan. La gente dedica más tiempo al juego que a la vida real misma. El juego ofrece todas las posibilidades imaginables y cualquier cosa es posible.

Una vez identificados estos nombres se continúa con la clasificación de los mismos, entonces tenemos:

Ready Player One   => Libro
Ernest Cline.           => Persona
España                    => Lugar, país
2011                        => Fecha, año
Ediciones B.           => Empresa, editorial
2044                        => Fecha, año
OASIS                    => ?? (Vídeo Juego de ficción)

En el ejemplo anterior se clasificaron los años como entidades, ¿es correcto eso? ¿Es un año o una fecha una entidad? Si bien no son entidades en el sentido estricto de la palabra se suele clasificar también las fechas. De hecho, es común que una tarea de reconocimiento de nombres de entidades abarque la identificación y clasificación de muchas cosas que no son estrictamente entidades como por ejemplo: cantidades, compuestos químicos, proteínas, etc.

Usos:
  • Muchas veces los nombres identificados se utilizan para crear indices o enlaces a contenidos relacionados.
  • Si estamos haciendo Análisis de Sentimientos, como se vio en post anteriores, el reconocimiento de nombres de entidades puede servir para identificar al destinatario de los sentimientos. Ejemplo: un producto o una empresa.
  • En ocasiones la extracción de información consiste simplemente en obtener nombres de entidades y la relación que existe entre ellas.
  • Es utilizado en sistemas de preguntas y respuestas (question answering), estos sistemas los explicaré más adelante en algún otro post


Referencias:

[1]  http://www.infotechnology.com/comunidad/Como-son-las-oficinas-de-Google-en-la-Argentina-20140910-0008.html#sthash.u4rTaR4X.dpuf

[2] http://es.wikipedia.org/wiki/Ready_Player_One

No hay comentarios:

Publicar un comentario