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. 

jueves, 16 de octubre de 2014

Análisis de Sentimientos: Otras tareas relacionadas

¿Cómo detectar más de un sentimiento en la misma frase?


¿Qué sucede cuando tenemos frases como la siguiente?
  • ¡La comida era excelente pero el servicio pésimo!

Minqing Hu y Bing Liu en [1] idearon un método para lidiar con este tipo de sentencias basados en dos conceptos simples:
  1. Frecuencia
  2. Reglas
1. Buscaron todas las frases frecuentes en las críticas de un lugar dado, por ejemplo para un mismo restaurante encontraron que se repetía muchas veces la frase: "tacos de pescado". A este tipo de frases las llamaron aspectos, atributos o bien "objetos de sentimiento" ya que representan el objeto al cual se está criticando. 
2. Filtraron todas esas frases frecuentes con algunas reglas como: "ocurre después de una palabra que indica sentimientos", ejemplo: "geniales tacos de pescado!" => indica que "tacos de pescado" es muy probablemente un aspecto.

viernes, 16 de mayo de 2014

Análisis de Sentimientos: Creación de un lexicón propio

En ocasiones conviene armar un Lexicón propio para un dominio especifico antes que usar uno ya existente. Podemos empezar por crear nuestro Lexicón a partir de:

  •  un puñado de ejemplos previamente clasificados
  • algunas reglas escritas a mano que identifiquen ciertos patrones en una frase.


Pero no necesariamente será suficiente, entonces la pregunta que nos hacemos es: ¿Cómo expandir dicho Lexicón inicial?


Algoritmo de Hatzivassiloglou y McKeown para la ampliación de un Lexicón


Hatzivassiloglou y McKeown [1] idearon un método bastante intuitivo para identificar la polaridad de una palabra. Básicamente buscaron que otras palabras aparecían vinculadas a palabras ya conocidas. El razonamiento es el siguiente: si una palabra con polaridad conocida aparece unida por la conjunción "y" (and en inglés) a una segunda palabra concluyo que la nueva palabra tendrá una polaridad similar. En cambio si vienen unidas por la conjunción "pero" (but en inglés) la polaridad de la nueva palabra será opuesta.

Adjetivos unidos por "y" tienen la misma polaridad:

  • Justo y legitimo
  • corrupto y brutal

lunes, 14 de abril de 2014

Análisis de Sentimientos: lexicón de sentimientos

Cuando hacemos análisis de sentimientos, utilizamos todas las palabras en un texto. Es por ello de suma utilidad contar con algún tipo de diccionario (o lexicón que es una vocablo más elegante) que tenga por cada palabra un valor de sentimiento asociado. A un diccionario de este tipo se lo llama: Lexicón de Sentimientos (Sentiment Lexicón en ingles).

A continuación presento algunos diccionarios de sentimientos que pueden utilizar:

The General Inquirer

Es un lexicón en idioma ingles que hace bastante tiempo que existe (desde 1966) y clasifica las palabras en distintas categorías. Tiene, por ejemplo, una clasificación muy simple de palabras entre “positivas” y “negativas”, pero tiene también otros grupos de categorías como por ejemplo: las dimensiones semánticas de Osgood, o la clasificación entre: placer, dolor, virtud y vicio. Pueden ver las distintas categorías, o mejor dicho grupos de categorías en este sitio: http://www.wjh.harvard.edu/~inquirer/homecat.htm

En resumen:

  • Tiene 1915 palabras en la categoría: “positivas” y 2291 palabras en la categoría “negativas”
  • Tiene clasificaciones complejas como por ejemplo: Fuerte vs. Débil o Activa vs. Pasiva
  • Está en ingles
  • Es gratis para su uso en investigación.

Enlaces:



jueves, 30 de enero de 2014

Análisis de Sentimientos: un algoritmo para empezar

Lo más sencillo es detectar la polaridad de una actitud, es decir, detectar si una critica, por ejemplo, es positiva o negativa.
Voy a explicar una versión adaptada del algoritmo de Pang y Lee para detectar la polaridad de una critica cinematográfica. Pueden encontrar más información sobre su trabajo en esta página: http://www.cs.cornell.edu/people/pabo/movie-review-data/

Dadas las siguientes criticas literarias (prestadas de cinesargentinos.com.ar):

Critica 1:

Hace mucho tiempo no veía una peli tan buena como esta. Original y hermosa desde todo punto de vista, las canciones, los chistes y los efectos visuales. Increible como mejoraron en los últimos años con las expresiones de los personajes animados! Una obra maestra desde donde se la mire! No entendia como Monster University no había sido nominada al oscar, pero luego de ver Frozen, entiendo que Monster's no tenía nada que hacer. Es de las pelis que, para aquellos que crecimos con los clasicos de disney como el rey leon, tarzan o el jorobado de Notre dame, nos reavivan el niño que tenemos adentro. Si o si verla en 3D.

Critica 2:

La película es malísima. Está entre las peores que he visto en mi vida, sino es la peor. Es lineal, predecible, aburrida. Solo apta para menores de 13 años. Deberían dedicarse a otra cosa todos los que intervinieron para que exista. Realmente es muy recomendable que NO LA VEAN. Después no digan que no les advertí.

Para una persona es muy sencillo determinar que la critica 1 es positiva y que la critica 2 es negativa, pero ¿cómo podría resolverse esto por software?