sábado, 25 de enero de 2014

Análisis de Sentimientos: Introducción

¿Qué es el análisis de sentimientos?

    El análisis de sentimientos es una tarea de clasificación de textos y tiene múltiples usos. Supongamos que se tienen las siguientes criticas sobre una película:
  • Decepcionante.
  • Aburrida.
  • Personajes memorables y bien desarrollados.
  • Una gran puesta en escena que no defraudará.
  • Increíblemente predecible.
    Todas estas criticas tienen un juicio de valor, que en principio podríamos decir que es: positivo o negativo.
 
    Podemos intentar aplicar este tipo de análisis a productos, tomemos, por ejemplo, una impresora y algunos aspectos de esta como:
  • velocidad de impresión
  • precio
  • facilidad de uso
  • soporte al cliente
  • etc.
    Estos aspectos, también llamados atributos, tienen cada uno una clasificación asociada, la cual puede ser positiva o negativa. Google y Bing (en EEUU) tienen buscadores de productos donde, en base a la opinión de los usuarios, clasifican estos aspectos. Otro ejemplo es el clasificador de hoteles y lugares de hospedaje de hostelsclub.com:


Clasificación de Texto: cuestiones practicas

Cómo utilizar el clasificador de texto Naïve Bayes en una situación del mundo real:

     Lo primero que hay que ver es si contamos o no con textos de entrenamiento.

Si no tenemos datos de entrenamiento:
 
No queda otra alternativa que escribir las reglas de clasificación de forma manual, por ejemplo:

  • Si aparece la palabra: "Montevideo" el documento pertenece a la clase: "Uruguay". (documentos que hablan sobre el Uruguay)
  • Si aparece la palabra "Santiago de Chile" entonces el documento pertenece a la clase: "Chile".

lunes, 17 de junio de 2013

Clasificación de Texto: medidas de rendimiento y desempeño

Voy a exponer en esta entrada algunos métodos comunes para evaluar un algoritmo de clasificación de textos.

Hay dos tipos de errores que pueden cometerse, como muchos saben: los falsos positivos (es decir aquellos textos que fueron etiquetados como de una clase dada y no lo son) y los falsos negativos, aquellos textos que no fueron etiquetados como pertenecientes a la clase y en verdad sí pertenecen.

Esta matriz gráfica lo anterior:

CorrectoNo correcto
Seleccionadoverdadero positivofalso positivo
No seleccionadoverdadero negativofalso negativo

Están marcados en rojos los casos de error.

jueves, 16 de mayo de 2013

Recuperación de información (information retrieval) y búsqueda en la Web: consultas de frases e índices posicionales

Hasta ahora hemos visto como recuperar documentos que contienen una o más palabras pero no como recuperar documentos que contienen una frase armada; si yo quisiera recuperar todos aquellos documentos en donde aparece la frase: "facultad de ingeniería", por ejemplo, lo único que podría hacer es recuperar los documentos que contienen las palabras "facultad", "de" e "ingeniería" ("de" podría obviarse porque es una stop word) y luego revisarlos exhaustivamente para encontrar la frase textual, ya que no me interesan los documentos que dicen cosas como: "Pedro estudió ingeniería en la facultad de Salta", estos no deberían ser devueltos.

Hay dos formas de solucionar este problema.

Recuperación de información (information retrieval) y búsqueda en la Web: consultas sobre Indices invertidos

En el post anterior vimos como crear un índice invertido, ahora voy a explicar como realizar una consulta sobre ese tipo de índice.

Supónganse que queremos obtener todos los documentos en donde aparecen las palabras: "Brutus" y "Cesar"

  1. Obtenemos la lista de documentos en donde aparece la palabra "Brutus"
  2. Obtenemos la lista de documentos en donde aparece la palabra "Cesar"
  3. Realizamos una intersección de ambas listas mediante un algoritmo de merge

miércoles, 15 de mayo de 2013

Recuperación de información (information retrieval) y búsqueda en la Web: Índices invertidos

Los índices invertidos son la estructura de datos más utilizada en los sistemas de recuperación de información, en particular en aquellos con grandes volúmenes de datos a manejar como los motores de búsqueda; hacen uso eficiente de la idea principal de la matriz de incidencias vista previamente.

Índice invertido:
  • Para cada término t, tenemos que guardar todos los documentos que contienen t
  • Identificar cada documento por un docId, que es un número incremental
Tendremos dos partes bien definidas: el diccionario y las listas de postings, que son básicamente una serie de listas, una por cada término, donde iremos insertando los docIds de los documentos. 

martes, 14 de mayo de 2013

Recuperación de información (information retrieval) y búsqueda en la Web: Matrices de incidencia

Supongamos que mi colección de documentos no es ni más ni menos que las obras completas de William Shakespeare, y que la información que quiero conseguir es la siguiente:

   Todas las obras de Shakespeare que contengan las palabras: "Brutus" y "Cesar" pero no la palabra "Calpurnia".

    Una forma de solucionar este problema es hacer una búsqueda exhaustiva de todos los documentos, seleccionar primero aquellos que tienen las palabras "Brutus" y "Cesar" y luego eliminar de la lista los que también tienen la palabra "Calpurnia".  Con el comando grep de Linux se puede hacer en pocos pasos, pero: ¿es esta una buena solución?