Procesamiento de Información

El objetivo del curso es que el participante sea capaz de aplicar métodos básicos de clasificación en grandes cantidades de información no estructurada, considerando la adecuada representación de datos para su procesamiento automático y haciendo uso de herramientas computacionales comerciales, libres y propias.

Introducción

Procesamiento de Información

Hoy en día, la adecuada preparación de los datos, pre-procesamiento de datos, es fundamental para alimentar a los sistemas de información, o algoritmos de aprendizaje computacional, como aplicaciones de bases de datos, sistemas expertos, visión artificial, reconocimiento de voz, minería de datos y texto, entre otras.

Al pre-procesamiento de datos, generalmente, se le da poca importancia; sin embargo, una adecuada preparación de datos de entrada a los sistemas redundará en un mejor desempeño de los sistemas o algoritmos. Así el objetivo primordial es manipular y transformar los datos “crudos” en información valiosa que sea manipulable y que sea fácil de acceder.

Información estructurada

Por ejemplo, las bases de datos relacionales de un sistema de información son el resultado del análisis de un problema del dominio (bancario, aseguradora, escolar, etc.) y la construcción de las tablas de la base de datos que relacionan la información representan la solución de información a posibles preguntas que los usuarios pudiesen tener, es decir, preguntas como: cuántas compras realizó el cliente X en el día D1. Las respuestas a este tipo de preguntas se pueden obtener haciendo consultas a la base de datos, a saber, con expresiones del lenguaje SQL. A este tipo de información se le conoce como información estructurada.

Una revisión elemental de los conceptos básicos de las bases de datos relacionales y un poco de historia se encuentra en [“El modelo relacional de base de datos”] (http://ingenieriasimple.com/conred/el%20modelo%20relacional.pdf)

Información no estructurada

Por otro lado, a la información que no posee elementos como los de las bases de datos se le conoce como información no estructurada, por ejemplo los documentos escritos, no obstante, los documentos o textos escritos tienen otro nivel de estructuración. En este curso daremos énfasis en el procesamiento de información no estructurada y de las técnicas para transformarla a espacios donde sea manipulable y fácil de acceder, por ejemplo, el modelo de espacio vectorial ampliamente usado por sistemas de recuperación de información.

Los diferentes tipos de representación de los datos puede afectar el desempeño de los algoritmos, como el estudio realizado en twitter en español para la clasificación de emociones: “A case study of Spanish text transformations for twitter sentiment analysis”.

Jerarquía de datos

Poseer información en el momento correcto es valiosa para la toma de decisión por las implicaciones que conlleva. Generalmente, nos encontramos con términos como dato, información y conocimiento. Cuándo un dato se convierte en información, cuándo la información se convierte en conocimiento y esto es valioso, el modelo DIKW (Data-Information-Knowledge-Wisdom) se propuso para delinear una jerarquía de los sistemas de información y los compromisos de cada nivel.

La revisión completa del modelo se encuentra en “The wisdom hierarchy: representations of the DIKW hierarchy”

Ejercicio:

Realizar una síntesis entre 800900 palabras de la siguiente lectura. El documento debe tener una estructura: resumen, introducción, desarrollo y conclusiones.

“The wisdom hierarchy: representations of the DIKW hierarchy”

Realizar una síntesis entre 400600 palabras de la siguiente lectura, enfocada a los tipos de pre-procesamiento usados.

“A case study of Spanish text transformations for twitter sentiment analysis”

El documento debe tener una estructura: resumen, introducción, desarrollo y conclusiones.

Teoría de la información: descriptores de datos

Introducción

Actualmente, muchas de las decisiones organizacionales se toman basadas en estadística, esto es, casi todo está basado en números. En general, se requiere saber cómo recolectar datos, analizarlos y presentarlos para tomar decisiones con base en evidencia (información); ya sean datos administrativos, financieros, poblacionales, mediciones de sensores, información textual, audios, videos, etc.

Recolección de datos

Para poder hacer algún análisis sobre un conjunto de datos, se requiere determinar la fuente de información. Típicamente se realizan encuestas o se realizan mediciones de las variables que se quieren analizar. En el caso de las encuestas, se realizan preguntas puntuales para generar una muestra de la población que se desea estudiar. Por ejemplo, encuestas poblacionales, donde se puede conocer el total de la población de un país, su distribución de hombres y mujeres, y otros datos de interés como el nivel de escolaridad, edad, etc. En este caso, la fuente de información son las personas encuestadas.

Otra fuente de información valiosa es internet y, en especial, las redes sociales donde hay información opinable, donde las personas expresan sus opiniones sobre productos, servicios, personas, entidades, temas, etc., lo cual es una fuente de datos valiosa de la percepción de las personas, útil para la toma de decisiones para mercadotecnia, análisis de reputación, política pública, etc.

Análisis de datos

El análisis de los datos puede ser simple como calcular histogramas o más elaborados con técnicas de agrupamiento o clasificación de datos, encontrar correlaciones entre los datos, etc.

Presentación (visualización) de datos

Generalmente, las gráficas se adaptan adecuadamente para dar una percepción de la estructura, de los patrones, tendencias y relaciones en los datos. Las tablas también son otra forma de presentar los datos de manera concentrada.

Descripción de los datos

En estadística podemos distinguir dos tipos de datos, los datos cuantitativos y los datos cualitativos. Los cuantitativos se usan para los cálculos numéricos y para definir, por ejemplo, los ejes en las gráficas. Los cualitativos se usan para agrupaciones de las muestras (observaciones) en tablas o gráficas.

Los estadísticos muestrales comunes usados para caracterizar los datos se enfocan en las medidas de ubicación, por ejemplo, el promedio, la mediana, la moda; y medidas de dispersión como el rango, varianza y desviación estándar.

Como un primer acercamiento a la caracterización de los datos, el conteo y histogramas ayudan a describir los datos cuantitativamente, y nos da una visión inmediata de las características de los datos. Entre mayor es el tamaño de las observaciones, la distribución de los valores de los datos se apreciará mejor.

Acvividades

Revisar los siguientes videos

Instalación de entorno de trabajo Jupyter Lab

Revisión de estructuras básicas de Python

Ejercicio 1

Entregar en un archivo PDF el reporte de ambas actividades, incluyendo los códigos del notebook generado en Jupyter Lab, así como las gráficas que se solicitan y las respuestas a las preguntas realizadas.

Calcular frecuencias, a nivel de un caracter, de los siguientes documentos y generar los histogramas para cada archivo. Interpretar cada histograma en referencia a qué caracteres destacan y dar indicios por qué ocurren esas observaciones. Para generar los histogramas ordenar los caracteres léxicamente.

  1. http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​text_​1.​txt
  2. http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​text_​2.​txt
  3. http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​text_​3.​txt
  4. http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​text_​4.​txt
  5. http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​text_​5.​txt

Ejercicio 2

Calcular frecuencias, a nivel de palabras, de los siguientes documentos y responder las siguientes cuestiones:

Nota1: remover los símbolos de puntuación (comas, puntos, signos de interrogación, etc.) y acentos del texto. Solo se deberán procesar las consideradas palabras. Nota2: Las líneas que inician con el símbolo de almohadilla (#), no se deben incluir al procesamiento. Revisar los libros.

  1. ¿Cuántas palabras hay en cada texto?
  2. ¿Cuántas palabras diferentes (únicas) hay en el texto?
  3. ¿Cuales son las palabras con frecuencia 1 (hapax legomena) en el texto, mostrar las primeras 100 palabras si es que las hay?
  4. ¿Cuáles son las palabras más frecuentes (mayor frecuencia) , mostrar las primeras 100 palabras si es que las hay, en qué difieren en los textos?
  5. ¿Cuáles son las palabras de contenido más frecuentes (palabras que tenga significado en sí mismas, p. ej. “casa”), mostrar las primeras 100 palabras si es que las hay?

Generar los histogramas de todos los documentos. Para generar los histogramas ordenar las palabras léxicamente.

  1. http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​libro1.​txt
  2. http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​libro2.​txt

Medidas de información

Introducción

El concepto de información es muy amplio para acotarlo en una definición simplista. Sin embargo, en términos de una distribución de probabilidad, se puede definir una cantidad llamada entropía, la cual nos da la noción de una medida de información, es decir, es una medida de cuánta información posee una variable aleatoria. Esta noción también se extiende a información mutua, la cual es una medida de la cantidad de información que una variable aleatoria contiene de otra variable, siendo ésta última un caso especial de la entropía relativa.

Entropía

Es una medida de la incertidumbre de una variable aleatoria. La entropía de una variable aleatoria discreta se define como

(1)
\[H(X)=-\sum_{x \in X}{p(x)log~p(x)} \]

donde $p(x)$ es la función de probabilidad; comúnmente se usa $log$ base 2 y la unidad de medida son bits.

En la definición anterior usamos la convención $ 0~log 0=0$

Entropía relativa

La entropía relativa o divergencia de Kullback-Leibler es una medida de distancia entre dos distribuciones, $D(p\parallel q)$. Es decir, es una medida no simétrica de la similitud o diferencia de dos funciones de distribución.

(2)
\[D(p \parallel q)=-\sum_{x \in X}{p(x)log~\frac{p(x)}{q(x)}} \]

En la definición anterior usamos la convención $ 0~log \frac{0}{0}=0$

La entropía relativa es positiva y es cero si $ p =q$

Información mutua

La información mutua $ I(X,Y)$, es una medida de la cantidad de información que una variable aleatoria contiene de otra variable aleatoria, es decir, es la reducción de la incertidumbre de una variable aleatoria debido al conocimiento de la otra variable.

(3)
\[I(x_i;y_i)=log~\frac{p(x_i,y_i)}{p(x_i)p(y_i)} \]

La información mutua es la entropía relativa entre la distribución conjunta y el producto de la distribución $ p(x_i)p(y_i)$. Donde $p(x_i)$ y $p(y_i) $ se pueden obtener de las frecuencias relativas de los datos.

La frecuencia relativa $ n_i$ es el cociente entre la frecuencia absoluta entre el número total de datos N

(4)
\[p(i) = n_i=\frac{f_i}{N} \]

La información mutua se ha aplicado en el descubrimiento de las asociaciones de palabras que para las personas son de sentido común, pero para una computadora no lo son. En el dominio médico, las palabras doctor-paciente, doctor-panadería. será más probable la primera asociación que la segunda. En este caso, la información mutua nos ayuda a descubrir si la asociación es significativa o no, $ I(X,Y) >> 0$

(5)
\[I(doctor, paciente)= log~\frac{p(doctor,paciente)}{p(doctor)p(paciente)} \]

donde $p(doctor,paciente)$ es la probabilidad de que co-ocurran las dos palabras en una ventana de palabras definida, por ejemplo w=5 (ventana de cinco palabras).

Revisar el artículo Word Association Norms, Mutual Information, and Lexicography, (Church, Kenneth Ward and Hanks, Patrick).

Ejercicio

Encontrar las asociaciones de palabras más significativas usando la medida de información mutua para cada conjunto de datos. Entregar el documento PDF con los código generados para la resolución de la tarea. Incluir las asociaciones más importantes respecto a medida de información mutua. Es decir, se debe de calcular todas las asociaciones entre el vocabulario único, esto hacerlo de forma independiente para cada conjunto de datos (México, España, Venezuela). Mostrar las 100 asociaciones más importantes para cada país de acuerdo a los conjuntos de datos proporcionados, indicar su índice de información mutua. Comparar las asociaciones entre los tres países.

  1. Revisar el artículo Word Association Norms, Mutual Information, and Lexicography, (Church, Kenneth Ward and Hanks, Patrick). En este artículo se describen las estrategias usadas y detalles de la tarea.

  2. Realizar el descubrimiento de asociaciones de palabras para cada conjunto de datos de forma independiente. Los datos son tweets de México, Venezuela y España.

  3. Dado que son textos cortos, usar una ventana máxima de 4 palabras, para calcular las probabilidades conjuntas $p(x,y)$

  4. Usar frecuencia mínima, frecuencias <= 5, no se consideran

  5. Preprocesar los datos: usar minúsculas, eliminar acentos.

  6. Dado que los datos son de textos informales, hay una alta probabilidad de errores de ortografía y redundancia en los caracteres , es decir, palabras como bueeeeeno y bueno. Reducir las palabras bueeeeeeno => bueeno, es decir, todos los caracteres que se repiten dejarlos de longitud 2.

Descripción de los datos: los archivos están comprimidos con gzip y están en formato json.

  1. http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​MX_​1901.​json.​gz (2,147,441 tweets)
  2. http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​ES_​1901.​json.​gz (1,945,012 tweets)
  3. http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​VE_​1901.​json.​gz (433,780 tweets)

Cada línea del archivo contiene un tweet codificado en formato json, text plano, codificado en UTF-8, contiene dos campos tex y created_at (fecha de creación del tweet), por ejemplo:

"text":"@HoracituMuchasaludparatodos!!!","created_at":"TueJan0105:59:55+00002019"

Modelos de n-gramas

Introducción

La inferencia estadística en general consiste en tomar algunos datos, generados según alguna distribución de probabilidad desconocida, y hacer algunas inferencias sobre esta distribución.

Un ejemplo de estimación estadística es la tarea de modelado de lenguaje que consiste en predecir una palabra dadas palabras previas. Esta tarea es fundamental para reconocimiento de voz, reconocimiento óptico de caracteres, corrección ortográfica, traducción automática, entre otras.

Este tipo de tareas son conocidas como el juego de Shannon donde la tarea consiste en adivinar la siguiente letra en un texto propuesto por C. Shannon en 1951.

Modelos de n-gramas

La tarea de predecir la siguiente palabra puede enunciarse como intentar calcular la función de probabilidad $P$.

(6)
\[P(w_n| w_1, \dots, w_{n-1}) \]

En este problema, se usa una clasificación de las palabras previas (palabras históricas) para predecir la siguiente palabra, $w_n$. Con base en observaciones previas de un conjunto grande de textos, se puede saber qué palabras tienden a seguir a qué otras palabras.

En esta tarea, es evidente que habrá secuencias de palabras (oraciones) que no hayamos leído o escuchado antes. Por lo que no es posible considerar el historial de palabras separadamente y basar las predicciones.

Para enfrentar este problema, se requiere agrupar segmentos históricos que sean similares de alguna forma para obtener predicciones razonables de las palabras subsecuentes. En este sentido, hacer uso de la propiedad de Markov es útil puesto que prioriza contextos locales, es decir, solo considerar algunas palabras históricas para predecir la siguiente palabra, esto es, usar los n-1 palabras (estados) previos.

En el caso de los modelos basados en n-gramas, generalmente se usan n=2, 3, 4, esto es, secuencias de 2, 3 y 4 palabras consecutivas. Usar n-gramas de 4 o 5 palabras consecutivas sería observaciones que raramente ocurrían en un conjunto de datos. Por lo que los sistemas actuales basados en modelos de n-gramas usan usualmente n-gramas de 2 palabras (bigramas) o de 3 palabras (trigramas).

Recordar que las observaciones que consideramos son las apariciones de las palabras (eventos) en los documentos. Es decir, palabras como $rojo, rojos, roja, rojas $ se consideran palabras diferentes (4 parámetros) aunque pertenecen a la misma clase $[rojo]$, adjetivo. Esto aumentaría el vocabulario.

Existen algunas formas para reducir el número de parámetros, esto es, reducir el número de palabras. Por ejemplo, el uso de lematización, reducir a la forma canónica de la palabra, en el ejemplo, adjetivo singular masculino, $rojo$; o stemming, remover las inflexiones finales de las palabras y tener un representante, p. ej. $roj$.

Construyendo el modelo

Los modelos de n-gramas funcionan bien cuando se construyen los modelos con conjuntos grandes de datos (millones). Típicamente, se hace un procesamiento de los datos de entrada como remover la puntuación y caracteres extraños, cambiar a minúsculas, etc. También se etiqueta el inicio y fin de oraciones para aprender dichas delimitaciones o fronteras. Por ejemplo, las etiqueta de inicio de oración $<s>$ y final de oración $</s>$

<s> El universo es la totalidad del espacio y del tiempo, de todas las formas de la materia, la energía, el impulso, las leyes y constantes físicas que las gobiernan </s>

Se puede usar cualquier marcador de inicio o fin de oración siempre que sea único y diferenciador.

Enfoque de máxima verosimilitud (Maximun Likelihood Estimation, MLE)

Para obtener las probabilidades que nos ayuden a estimar la palabra (característica) objetivo, es de interés calcular $P(w_1 \dots w_n)$ y la tarea de predicción $P(w_n| w_1 \dots w_{n-1})$ donde

(7)
\[P(w_n| w_1 \dots w_{n-1}) = \frac{P(w_1 \dots w_n)}{P(w_1 \dots w_{n-1})} \]

Para obtener las probabilidades desde el punto de vista frecuentista se puede calcular con la frecuencia relativa.

(8)
\[P_{MLE}(w_n| w_1 \dots w_{n-1}) = \frac{C(w_1 \dots w_n)}{C(w_1 \dots w_{n-1})} \]

Donde $C( \cdot )$ es el conteo de las secuencias de palabras de longitud n, por ejemplo, n=2 (dos palabras), n =3 (tres palabras), así sucesivamente.

La intuición de los modelos de n-gramas es que en lugar de calcular la probabilidad de una palabra dado toda la historia de palabras previas, es aproximarla usando un contexto reducido de palabras.

Usando un modelo de bigramas, se puede aproximar solo usando la palabra previa.

(9)
\[P(w_n| w_1 \dots w_{n-1}) \approx P(w_n| w_{n-1}) \]

Para calcular la probabilidad de la secuencia completa:

(10)
\[P_{MLE}(w_1 \dots w_n ) \approx \displaystyle\prod_{k=1}^n P(w_k| w_{k-1}) \]

Para calcular la probabilidad de una palabra $ y$ dada una palabra previa $ x$, se calcula el conteo de los bigramas $ C(x y) $ y se normaliza con todos los bigramas que comparten la primera palabra $ x$, que es lo mismo que los unigramas de $ x$

(11)
\[P(y|x) = \frac{C(x y)}{C(x)} \]

En el caso del modelo de trigramas,

(12)
\[P(z|x, y) = \frac{C(x y z)}{C(x y)} \]

Por ejemplo, para calcular probabilidad de que ocurra la oración "<s> yo quiero comida china </s>" se calcularía de la siguiente forma con un modelo de bigramas:

P(<s> yo quiero comida china </s>) =

                   P(yo|<s>) P(quiero|yo) P(comida|quiero) P(china|comida) P(comida|</s>)

Sensibilidad de los modelos de n-gramas y suavizado

Como otros modelos estadísticos, el modelo de n-gramas depende en gran medida del conjunto de datos de entrenamiento. Lo que implica que las probabilidades codifican cuestiones específicas del conjunto de datos, por ejemplo, la palabra galaxia en un conjunto de documentos relativos al universo tendrá más probabilidades de aparición que en un conjunto de datos relativo a la fauna.

Adicionalmente, aunque el conjunto de datos (corpus) sea suficientemente grande para entrenamiento, habrá otras secuencias de palabras válidas en el lenguaje que el corpus no contenga, es decir, habrá n-gramas con probabilidad cero.

Para atenuar el problema de enfrentarse a probabilidades cero de n-gramas, se usa un suavizado de las probabilidades del conjunto de datos, esto es, se corta un poco de la masa de probabilidades de los conteos mayores, y se traslada a las secuencias que no tienen conteos. Hay varias técnicas como suavizado de Laplace, descuento de Good-Turing, Backoff, entre otras.

Suavizado de Laplace o ley de Laplace es una técnica sencilla que consiste en proporcionar un poco del espacio de probabilidades a los eventos no vistos. Esto es, se usa la matriz de conteo, por ejemplo de bigramas, y se suma 1 a todos los conteos, para posteriormente normalizar en probabilidades, bigramas que no ocurrieron en el conjunto de datos al menos tendrán una ocurrencia usando suavizado de Laplace. La probabilidad ajustada sería como sigue, donde se requiere ajustar agregando el tamaño del vocabulario V.

Recordar que para calcular la probabilidad de unigramas de una palabra $w_i$ y su conteo $c_i$ normalizado por el número de palabras tokens que ocurrieron N.

(13)
\[P(w_1) = \frac{C(w_1)}{N} \]

En el caso del suavizado con Laplace (Add-one)

(14)
\[P_{Lap}(w_1) = \frac{C(w_1)+1}{N+V} \]

Alternativamente se puede definir un conteo ajustado $c_i$* y se puede transformar en probabilidad normalizando por medio de N, el nuevo conteo estaría definido,

(15)
\[c* = \frac{(C(w_1)+1) N}{N+V} \]

Ahora $c_i$* se puede transformar en una probabilidad $p_i$* normalizada por N.

De forma similar puede aplicarse a los bigramas. Para el conteo de bígramas con el suavizado de Laplace se requiere aumentar el conteo de unigramas con el total de tipos de palabras en el vocabulario V.

(16)
\[P_{Lap}(w_y|w_x) = \frac{C(w_x w_y)+1}{C(w_x)+V} \]

Para profundizar el tema se recomienda consultar:

  1. Capítulo 6: Statistical Inference: n-gram models over sparse data. Manning, C. & Schütze, H. Foundations of Statistical Natural Language Processing, MIT Press. Cambridge, MA: May 1999.

  2. Capítulo 4: N-Grams. Jurafsky, Daniel & James H. Martin. Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics and Speech Recognition (2nd edition), Prentice Hall, 2008.

Ejercicio

Realizar los siguientes puntos:

  1. Calcular los modelos de probabilidad MLE y MLE con suavizado de Laplace para un modelo de bigramas. Con el corpus “europarl.es”

Para el preprocesamiento de datos:

import pickle
unigram_counter = Counter()

#Para guardar

pickle.dump(unigram_counter, file_name)

#Para usar

unigram_counter=pickle.load(file_name)
  1. Calcular si la siguientes oraciones son posibles, es decir, calcular las probabilidades de las siguientes oraciones usando el modelo de MLE y MLE con suavizado de Laplace.
    • “el parlamento debe enviar un mensaje”
    • “el parlamento debe enviar un consejo”
    • “el abismo entre ricos y pobres”
    • “el abismo entre pobres y ricos”
    • “la comisión debe ser totalmente transparente”
    • “la comisión debe ser transparente”
  2. Predicción de palabras, dada una palabra inicial mostrar las siguientes cinco palabras más probables de acuerdo con los modelos MLE y MLE con suavizado de Laplace. Para cada palabra que se procese, mostrar las siguientes cinco palabras ( No se requiere que sea interactivo, se puede dar una secuencia completa asumiendo que para cada palabra que se va procesando, se escribe la siguiente de la secuencia dada, esta será la interacción con el modelo:

:Ejemplo: secuencia proporcionada [los tribunales nacionales]

Salida esperada procesando cada palabra:

[los]

estados tribunales sectores conflictos jueces

[los tribunales]

de nacionales especializados penales tienen

Etc

Incluir 3 ejemplos más al del punto anterior, para demostrar sus modelos de predicción “interactiva”.

Descripción de los datos:

  1. El corpus para este ejercicio son documentos de la conferencia del parlamente europeo. Es un archivo comprimido (96MB)

  2. http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​europarl.​es.​gz (1,965,734 párrafos)

Cada línea es un párrafo que puede ser a nivel de oración . El archivo está codificado en texto plano en UTF-8.

Por ejemplo (primeras dos líneas):

Reanudación del período de sesiones Declaro reanudado el período de sesiones del Parlamento Europeo, interrumpido el viernes 17 de diciembre pasado, y reitero a Sus Señorías mi deseo de que hayan tenido unas buenas vacaciones.

Medidas de similitud

No hay nada más básico al pensamiento y lenguaje que el sentido de similitud; esto es, nuestro afán de ordenar cosas en tipos. Así, la similitud tiene un papel fundamental para el reconocimiento y aprendizaje puesto que sirve como un principio de organización como lo señala Tversky [1].

El análisis teórico de las relaciones de similitud es principalmente geométrico. Es decir, estos modelos representan a un objeto en un espacio coordenado; así las distancias entre los puntos reflejan las similitudes observadas entre los objetos respectivos.

Dos medidas de distancia como la distancia euclidiana (norma L2) y la distancia de Manhattan ( norma L1) se usan, por ejemplo, en agrupaciones de objetos, considerando una representación de sus características como vectores.

(17)
\[ Manhattan(x, y) = \sum_{i=1}^{N}|x_i - y_i| \]
(18)
\[ Euclidiana(\vec x, \vec y) = \sqrt {\sum_{i=1}^{N}(x_i - y_i)^2} \]

Dado $x$=(1,5,6) y $y$=(1,3,5), el objeto $x$ con tres características que lo definen (3 dimensiones), de la misma forma para $y$ la similitud en términos de la distancia euclidiana entre estos dos objetos sería 1.083 y $x$=(1,5,6) y $y$=(1,5,6) sería 0, puesto que son el mismo objeto.

A continuación discutiremos tres medidas de similitud provenientes del área de recuperación de información.

La medida de similitud de Jaccard, también conocida como coeficiente de Dice, hay dos versiones la primera que considera vectores binarios de características (está presente la propiedad o no lo está) y su versión de pesos asociados a cada una de las característica.

(19)
\[ Jaccard(X, Y) = \frac{|X \cap Y|}{|X \cup Y|} \]
(20)
\[ Jaccard_w(\vec x, \vec y) = \frac{ \sum_{i=1}^{N}min(x_i, y_i)}{\sum_{i=1}^{N}max(x_i, y_i)} \]

Donde $|X \cup Y|$ representa la cardinalidad de la unión de los conjuntos X y Y.

Por ejemplo, considerando vectores binarios (presencia o ausencia), para este caso también se pueden considerar como conjuntos puesto que solo está presente la característica o no lo está, si tenemos los objetos de tipo cadena $x$=“anita lava la tina” y $y$=“anita lava la ropa”, y hacemos un tokenizado a nivel de unigramas (palabras como cada una de sus características) tenemos $X=\{anita, lava, la, tina\}$ y $Y=\{anita, lava, la, ropa\}$.

La similitud entre los objetos X e Y usando la similitud de Jaccard sería 0.6

o de forma vectorial se ordenan las palabras considerando el orden léxico como cada una de las dimensiones del vector (cada dimensión representa una característica, es decir, una palabra del vocabulario). Así quedarían definidos como $x$=(1,1,1,1,0) y $y$=(1,1,1,0,1), y el resultado sería el mismo.

Esta forma vectorial es conveniente cuando las componentes no son binarias, puesto que algunas características del objeto (componentes) son más relevantes que otras, por lo que la similitud de Jaccard con pesado es más adecuada.

anita la lava ropa tina
x 1 1 1 1 0
y 1 1 1 0 1

Otra medida de similitud, es la similitud Dice, también conocida como coeficiente de Dice, al igual que Jaccard es popular para vectores binarios (presencia o ausencia de características), o en su forma de conjuntos.

(21)
\[Dice(X, Y) = 2 * \frac{|X \cap Y|}{|X| + |Y|} \]
(22)
\[Dice_w(\vec x, \vec y) = 2 * \frac{ \sum_{i=1}^{N}min(x_i, y_i)}{\sum_{i=1}^{N}(x_i +y_i)} \]

Jaccard penaliza más que Dice cuando hay pocas entradas que se comparten.

Una medida de similitud muy usada en los motores de búsqueda de documentos para identificar las búsquedas del usuario y que proviene del área de recuperación de información es la similitud coseno.

(23)
\[Coseno(\vec{x},\vec{y}) = \frac{\vec{x} \cdot \vec{y}}{|\vec{x}| |\vec{y}|} = \frac{ \sum_{i=1}^{N}x_i * y_i}{\sqrt{\sum_{i=1}^{N}x_i^2} \sqrt {\sum_{i=1}^{N}y_i^2}} \]

El coseno es idéntico al coeficiente de Dice para vectores con el mismo número de entradas diferentes de cero, pero penaliza menos en casos donde el número de entradas diferentes de cero es muy diferente.

El coseno es comúnmente usado con vectores donde sus componentes contienen valores reales y puesto que definen diferentes ponderaciones de las características que definen al objeto. Esto se verá a detalle en los modelos de espacio vectorial y los tipos de pesado de la información.

*Nota en el caso de la representación de los objetos como vectores, las componentes son el vocabulario único. Es decir si las palabras únicas en el conjunto de datos son 1000, los vectores que se representan para este conjunto de datos es de 1000 dimensiones.

Como se ha comentado en sesiones anteriores la forma de reducir las componentes o dimensiones para estos vectores es aplicar algunos preprocesamientos a los datos como convertir a minúsculas todas las palabras, borrar acentos, y aplicar técnicas de stemming o lematización, en este último caso, el proceso de stemming es menos costoso computacionalmente.

[1] Tversky, A., & Gati, I. (1978). Studies of similarity. Cognition and categorization, 1(1978), 79-98.

  1. Capítulo 8: Lexical Adquisition. Manning, C. & Schütze, H. Foundations of Statistical Natural Language Processing, MIT Press. Cambridge, MA: May 1999.

  2. Capítulo 20.7: WORD SIMILARITY: DISTRIBUTIONAL METHODS. Jurafsky, Daniel & James H. Martin. Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics and Speech Recognition (2nd edition), Prentice Hall, 2008.

Ejercicio

El ejercicio propuesto es detectar, a nivel básico por medio de una medida de similitud, el plagio que hay dentro de un conjunto de documentos.

Los datos son documentos de noticias adaptados a la tarea de detección de plagio. En el conjunto de datos del directorio “suspicious-documents”, hay documentos que tienen fragmentos plagiados de los documentos fuente “source document”, sin embargo, también hay otros documentos que simularon plagio pero no se plagió ningún párrafo de los documentos fuente.

La tarea es encontrar el nivel de plagio entre los archivos del directorio “source document” y los archivos del directorio “suspicious-documents”.

Entregar un reporte con el código para la detección del plagio mediante la implementación de una medida de similitud entre documentos, más similar indicará que mayor texto se ha plagiado de un documento hacia otro.

  1. Indicar mediante los nombres de archivos los 3 archivos más parecidos (indicar la medida de similitud) para cada archivo de los documentos del directorio “source document” comparados contra todos los archivos del directorio “suspicious-documents” usando la similitud de Jaccard a nivel de vectores binarios y aplicar los preprocesamientos: usar solo letras minúsculas, remover stopwords (palabras que no son de contenido) y aplicar un proceso de stemming para reducir el vocabulario.

Usar las utilerías de NLTK para facilitar los procesamientos

https://​www.​nltk.​org/​install.​html

https://​www.​nltk.​org/​data.​html

Remover Stopwords: revisar el paquete stopwords

from nltk.corpus import stopwords Usar la lista de stopwords para eliminarlas, recordar si se le aplicó stemming aplicar stemming también a las stopwords debido a que alguna podría cambiar, la lista ‘l’ contendría la lista de stopwords. l = stopwords.words(‘english’) Se recomienda usar el stemmer de NLTK para facilidad, usar Porter (inglés).

http://​www.​nltk.​org/​howto/​stem.​html

Básicamente es usar

from nltk.stem.porter import *
stemmer = PorterStemmer()
word = stemmer.stem('pages')

$word$ contendrá la palabra normalizada por medio de stemming ($'page'$) aplicar ese proceso a todos los textos.

  1. Repetir el punto uno y usar la medida Jaccard.

  2. Repetir el punto uno y usar la medida coseno.

  3. Comparar los resultados obtenidos.

Datos:

Los datos son el corpus para la detección de plagio con ofuscación de resúmenes de la competencia PAN, ver PAN-CLEF 2013.

Los datos son archivos de texto plano UTF-8 en inglés.

http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​PLAGCORPUS.​tar.​gz

Modelo de espacio vectorial

La adecuada representación de los datos y su apropiado almacenamiento es indispensable para su correcta recuperación. Es el principal objetivo que se busca al modelar los datos ya sea como las tradicionales bases de datos, donde por medio de un lenguaje de consultas (SQL, Structured Query Language) se puede encontrar información y manipularla según convenga; a este tipo de información se le conoce como información estructurada. En el caso de datos como los documentos textuales, donde la información (documentos, audio) se expresa en lenguaje natural (español, inglés, chino, etc.) se le conoce como información no estructurada, o mejor dicho, el nivel de estructuración de dicha información está a un nivel muy alto y su análisis sería muy complejo; por lo que es necesario estructurar dicha información de formas que sean convenientes (menos complejas) para procesar por la computadoras actuales y esta información resultante se útil para las personas o para otros procesos.

Modelos de representación

En sesiones anteriores se ha visto la representación de datos como conjuntos y vectores donde se han usado las propiedades de estos modelos de agrupar datos para desarrollar, por ejemplo, medidas de similitud entre objetos, vistas sus características como elementos del conjunto o dimensiones del vector, como las medidas de similitud de Jaccard, Dice y Coseno.

Modelo de espacio vectorial

La representación de objetos en forma de vectores ha sido muy favorecida y usada en el área de recuperación de información. Los motores de buscada actuales como Google, Bing, Yahoo, etc. usan este modelo como representación de datos para comparar la consulta que hace el usuario (documento de consulta) contra todos los documentos que tienen en su base de conocimiento (documentos de la web indexados). De esta manera, cada documento es representado como un vector. Para encontrar los documentos más relevantes dentro de la colección total de documentos, D, con respecto al documento consulta, Q, se calcula las similitudes (similitud coseno) de Q contra el conjunto de documentos D, los más similares a Q son los documentos que se muestran al usuario. Este es el principio básico de un motor de búsqueda.

Con la representación de los documentos como vectores, podemos usar las propiedades matemáticas de estos espacios, por ejemplo la similitud entre dos vectores dado el ángulo entre ellos, lo cual se calcula con la similitud coseno.

Por ejemplo, considerando vectores binarios (presencia o ausencia), si tenemos los objetos de tipo cadena $x$=“anita lava la tina” y $y$=“anita lava la ropa”, y hacemos un tokenizado a nivel de unigramas (palabras como cada una de sus características) tenemos $X=\{anita, lava, la, tina\}$ y $Y=\{anita, lava, la, ropa\}$.

La similitud entre los objetos X e Y está determinada por qué tanto se parecen respecto a las características que los definen, en este caso, cada dimensión del vector define una característica. En forma vectorial, generalmente, se ordenan las palabras considerando el orden léxico como cada una de las dimensiones del vector (cada dimensión representa una característica, es decir, una palabra del vocabulario). Así quedarían definidos como $x$=(1,1,1,1,0) y $y$=(1,1,1,0,1).

Esta forma vectorial es conveniente cuando las componentes no son binarias, puesto que algunas características del objeto (componentes) son más relevantes que otras, y se puede usar diferentes tipos de pesado para cada característica como la frecuencia del término (TF) o la combinación de la frecuencia del término y la frecuencia inversa del documento, (TF-IDF) que le da más importancia a las características distintivas de los documentos.

anita la lava ropa tina
x 1 1 1 1 0
y 1 1 1 0 1
(24)
\[Coseno(\vec{x},\vec{y}) = \frac{\vec{x} \cdot \vec{y}}{|\vec{x}| |\vec{y}|} = \frac{ \sum_{i=1}^{N}x_i * y_i}{\sqrt{\sum_{i=1}^{N}x_i^2} \sqrt {\sum_{i=1}^{N}y_i^2}} \]

El coseno es comúnmente usado con vectores donde sus componentes contienen valores reales y puesto que definen diferentes ponderaciones de las características que definen al objeto.

  1. A vector space model for automatic indexing. G. Salton, A. Wong, and C. S. Yang. http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.446.5101&rep=rep1&type=pdf

  2. Capítulo 6: Scoring, term weighting and the vector space model. Christopher D. Manning, Prabhakar Raghavan and Hinrich Schütze, Introduction to Information Retrieval, Cambridge University Press. 2008.

Ejercicio

Revisar los siguientes videos

Modelado Vectorial y pesado de términos

Clasificación de información

La categorización de documentos o clasificación de documentos consiste en ordenar un conjunto de documentos en categorías o clases previamente definidas.

Los documentos pueden ser desde textos cortos como tweets hasta documentos largos como libros.

Tradicionalmente, la tarea de categorización es realizada por expertos del dominio de aplicación. Sin embargo, con las grandes cantidades de información que se generan diariamente es necesario usar métodos que clasifiquen automáticamente la información.

Desde el punto de vista del aprendizaje computacional, es prometedor aprender el esquema de categorización por medio de ejemplos de entrenamiento. Una vez aprendido el esquema de categorización (modelo de predicción), éste se puede usar para clasificar futuros documentos sin clasificar.

Existen diversos enfoques para atacar este problema como es el uso de modelos bayesianos, árboles de decisión, programación evolutiva, redes neuronales, métodos de kernel, etc.

En general, un método de aprendizaje supervisado realiza los siguientes pasos: preprocesamiento de los documentos, calcular las probabilidades o transformar los datos crudos (documentos) a una forma vectorial, aprender el modelo de datos asociado a las categorías definidas en el conjunto de entrenamiento; y, por último, predecir nuevos datos que sirven de validación del método, es decir, que tan bien se desempeña con los datos de prueba.

En el caso del preprocesamiento, se obtienen n-gramas de palabras o caracteres o combinaciones de estos, como características del documento. También se realizan los procesamientos típicos como usar sólo letras minúsculas, eliminar puntuación o símbolos raros, eliminar stopwords, utilizar procesos de stemming o lematización, todo esto con el fin de reducir el vocabulario y que términos con varias formas (rojo, rojas, rojos, rojas) se puedan mapear a un mismo término (roj-) y que haya más emparejamientos entre características [1, 2].

Para crear el modelo de predicción, se usan los ejemplos de entrenamiento y la categoría asociada al ejemplo, la cual fue asignada por un experto humano. De ahí que el conjunto de datos puede tener un sesgo debido a la subjetividad intrínseca del conjunto de entrenamiento.

En el caso de reseñas u opiniones es típico usar categorías como positivo, negativo, neutro para categorizar estos textos cortos. Por ejemplo:

"Me gustó la comida del restaurante X" (positivo);

"El servicio de internet fue pésimo en el hotel" (negativo)

Generalmente entre más ejemplos de entrenamiento el método de clasificación aprenderá más y se espera que generalice bien, es decir, que al momento de predecir (clasificar) datos nuevos su desempeño sea alto [1, 2, 3] y no sólo se aprenda a la perfección el conjunto de entrenamiento, a esto se le llama sobreajuste (overfitting).

La clasificación automática de documentos es un paso importante para la toma de decisión basada en conocimiento. Por ejemplo si una persona desea comprar un producto (celular, computadora, lavadora, etc.) revisa qué opinan otros usuarios del producto para poder tomar su decisión. Se ha usado en aplicaciones médicas, noticas, reputación, opiniones, emociones, y muchas otras aplicaciones [1, 2]. De ahí que las aplicaciones para explotar la información que se genera de la categorización de datos ha tenido mucha importancia en los últimos años.

Referencias.

  1. Sidorov, G., Miranda-Jiménez, S., Viveros-Jiménez, F., Gelbukh, A., Castro-Sánchez, N., Velásquez, F., & Gordon, J. (2012, October). Empirical study of machine learning based approach for opinion mining in tweets. In Mexican international conference on Artificial intelligence (pp. 1-14). Springer, Berlin, Heidelberg.

  2. Tellez, E. S., Miranda-Jiménez, S., Graff, M., Moctezuma, D., Siordia, O. S., & Villaseñor, E. A. (2017). A case study of Spanish text transformations for twitter sentiment analysis. Expert Systems with Applications, 81, 457-471.

    • Ver (A case study of Spanish text transformations for twitter sentiment analysis).
  3. Sebastiani, F. (2005). Text categorization. In Encyclopedia of Database Technologies and Applications (pp. 683-687). IGI Global.

Ejercicio

Revisar el siguiente video

Notebooks utilizados

http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​clasificacion.​ipynb

http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​MSV.​ipynb

Modelado Vectorial y clasificación de información

El ejercicio propuesto es clasificar información sobre comentarios de twitter donde el objetivo es un celular y algunas marcas en específico.

Los datos son tweets sobre el tema de celulares. Se proporciona un dataset de entrenamiento que cuenta con cuatro clases , campo “klass” (information, positive, negative y neutral). Los comentarios fueron etiquetados de manera manual por personas y se asume ese conocimiento como verdadero.

Dentro del archivo de datos hay dos campos que servirán para entrenar “text” y el campo “klass” que contiene las posibles categorías.

La información que se presentará en forma de resumen por medio conteos de las opiniones clasificadas (positivas, negativas, información o neutras) al usuario será respecto al campo “Type” y al campo “Categories”.

La tarea es mostrar un reporte ejecutivo, es decir, gráficas y conteos sobre los campos Type y Categories, por ejemplo, en el caso de Type = Galaxy". Se suman todas las opiniones clasificadas por el enfoque implementado.

{color: navy} Galaxy

Positivas = xxxx

Negativas = xxxx

Neutras = xxxx

Información= xxxxx

{color: navy} Galaxy, Categoría OS:

Positivas = yyyy

Negativas = yyyy

Neutras = yyy

Información= yyy

Generar un reporte con el código para la clasificación de tweets de opiniones con las gráficas y conteos considerando los grupos para el campo TYPE y CATEGORIES del conjunto de datos proporcionado que no se ha etiquetado (archivo cellphones_unk.json).

El Reporte en pdf incluirá los códigos fuente y

  1. Gráficas y conteos de opiniones con el modelo bayesiano con peso TF y TF-IDF

  2. Gráficas y conteos de opiniones con el modelo SVM con peso TF y TF-IDF

Nota: aplicar los procesamientos como uso de sólo minúsculas, eliminar puntuación, eliminar stopwords, usar unigramas, y usar stemming.

  1. Comparar los resultados en términos de los conteos de datos clasificados con los distintos pesados y clasificadores usados.

Datos:

Los datos son archivos de texto en formato json UTF-8 en español. Cada línea es un tweet en formato JSON.

Datos de entrenamiento

Distribución de datos

No Tweets clase
1398 “information”
860 “negative”
1856 “neutral”
1212 “positive”

http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​cellphones_​train.​json

Datos de prueba

Distribución de datos

No Tweets clase
600 “information”
368 "negative
796 “neutral”
519 “positive”

http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​cellphones_​test.​json

Datos por clasificar

http://​ingeotec.​mx/​~sabino/​MCDI-​PI/​cellphones_​unk.​json

Medidas de evaluación

Introducción

Las técnicas de clasificación se han aplicado a diversas áreas de la ciencia.

Las métricas de evaluación juegan un papel importante para encontrar un clasificador óptimo; por lo que, elegir las métricas de evaluación adecuadas es esencial.

En los problemas de clasificación podemos considerar la clasificación binaria, muticlase y multietiqueta [1]. En cualquier caso, se requiere que la salida de los modelos de clasificación sea estimada y analizada y el análisis debe interpretarse adecuadamente para poder evaluar los diferentes modelos.

Las métricas de evaluación comúnmente usadas en clasificación de texto son precisión (precision, del inglés) , recall y medida-F (F1, F-score, F-measure). Estas medidas reflejan la importancia de recuperar los ejemplos positivos en la clasificación [2, 3].

Precisión

Es el número de ejemplos positivos clasificados correctamente dividido por el número de ejemplos etiquetados por el sistema como positivos

(25)
\[Precision = \frac{TP}{TP+FP} \]

TP: True positive (ejemplo clasificado como positivo)

FP: False positive (ejemplo clasificado como positivo por el sistema pero que en realidad era negativo)

Recall

Es el número de ejemplos positivos clasificados correctamente dividido por el número de ejemplos positivos en los datos.

(26)
\[Recall = \frac{TP}{TP+FN} \]

FN: False negativo (ejemplo clasificado como negativo por el sistema pero que en realidad era positivo)

F-score (F-measure, F1)

Es la media harmónica de la precisión y recall

(27)
\[F-score = 2 \cdot \frac{precision \cdot recall}{precision + recall} \]

Matriz de confusión

La Tabla 1 representa la matriz de confusión para un clasificador de dos clases. Con este tipo de tablas se puede representar el cálculo de los ejemplos de las clases reconocidos correctamente (true positive), el número de ejemplos reconocidos correctamente que no pertenecen a la clase (true negative), los ejemplos que fueron asignados incorrectamente a la clase (false positive), o los ejemplos que no fueron reconocidos como ejemplos de la clase (false negative).

Clase en datos Clasificado como positivo Clasificado como negativo
positivo Verdadero positivo (TP) Falso negativo (FN)
negativo Falso Positivo (FP) Verdadero negativo (TN)

Table 1. Matriz de confusión para un clasificador binario

Accuracy

El accuracy es otra medida también usada para evaluar el desempeño de los sistemas de clasificación en las competencias de clasificación de texto, aunque se prefiere F1, ya que es la combinación de precisión y recall, lo cual nos da una mejor guía del desempeño del clasificador. El accuracy representa la efectividad general del sistema clasificador. Sin embargo, si el clasificador está sesgado hacia la clase negativa, es decir, no reconoce la clase de interés, con esta métrica dará un valor alto, puesto que la clase que no es de interés también se incluye en esta medida.

Por ejemplo, en un sistema clasificador de textos agresivos, si los datos están desbalanceados es decir, hay más ejemplos de textos no agresivos (3,000) , en contraste con ejemplos que sí son agresivos (800); generalmente los modelos aprende la clase más poblada, en este caso la clase que no es agresiva; no obstante, al predecir nuevos datos, los ejemplos negativos (true negative) sesgaran la medida y se obtendrá un buen desempeño, pero en realidad no es que reconozca muy bien los ejemplos agresivos (true positive), esto debido a la métrica.

(28)
\[ Accuracy = \frac{TP+TN}{TP+FN+FP+TN} \]

En competencias internacionales en tareas de clasificación como SemEval [4], IberLef [5], mex-A3t [6], entre otras, se prefieren métricas como F-score, precisión, y recall para ser objetivos en el desempeño de los sistemas clasificadores.

Métricas Promedio: Micro- Macro (Micro- Macro average)

Si el clasificador es multiclase hay dos tipos de promedio de métricas que afectan cuando los datos están desbalanceados.

micro average

(29)
\[Precision_{micro} = \frac{TP_{clase-1}+ TP_{clase-2}+ \dots + TP_{clase-n} }{ TP_{clase-1}+FP_{clase-1} + \dots + TP_{clase-n}+FP_{clase-n} } \]
(30)
\[Recall_{micro} = \frac{TP_{clase-1}+ \dots + TP_{clase-n} }{TP_{clase-1}+FN_{clase-1} + \dots + TP_{clase-n}+FN_{clase-n} } \]
(31)
\[F-score_{micro} = 2 \cdot \frac{Precision_{micro} \cdot Recall_{micro} }{Precision_{micro} + Recall_{micro} } \]

 macro average

(32)
\[Precision_{macro} = \frac{Precision_{clase-1}+ \dots + Precision_{clase-n} }{ n } \]
(33)
\[Recall_{macro} = \frac{Recall_{clase-1}+ \dots + Recall_{clase-n} }{ n } \]
(34)
\[F-score_{macro} = \frac{F-score_{clase-1}+ \dots + F-score_{clase-n} }{ n } \]

En competencias de evaluación de sistemas de clasificación multiclase se prefiere usar F1-macro sobre la clase positiva, es decir, sobre las clases de interés. Datos de entrenamiento & prueba

Hay tres fases en el proceso de clasificación, a saber, la etapa de entrenamiento, la etapa de validación o prueba (evaluación del modelo), y la etapa de predicción (predicción nuevos datos).

En la etapa de entrenamiento, el modelo es entrenado con los datos de entrada. En esta etapa los datos se preprocesan y los parámetros del modelo se ajustan.

Es importante que los datos de entrada contengan los suficientes ejemplos para cada clase que se quiere predecir, puesto que esto influirá en la construcción del modelo. Es decir procurar que las clases estén balanceadas, que contenga aproximadamente la misma cantidad de ejemplos por cada clase.

Por ejemplo, si se desea crear un clasificador que identifique mensajes si son agresivos o no, es un clasificador binario, los datos para el entrenamiento es recomendable tener ejemplos tanto de textos agresivos como no agresivos. Generalmente, en este tipos de problemas, se cuenta con menos ejemplos de la clase positiva, en este caso, de ejemplos agresivos (clase positiva) que de ejemplos no agresivos (clase negativa).

A veces es recomendable reducir el número de ejemplos negativos aunque se pierda diversidad del vocabulario que puedan proporcionar estos ejemplos. Lo que se recomienda es construir el modelo con la reducción y evaluar el modelo.

K-iteraciones de Validación Cruzada (K-Fold CrossValidation)

La validación cruzada es una técnica para evaluar los resultados de un análisis estadístico.

En el caso cuando se tiene un conjunto de datos de entrenamiento y otro de prueba, se entra el modelo con un conjunto y se evalúa con otro conjunto de validación. En este caso, hemos realizado solo una prueba del desempeño del clasificador.

La técnica de validación cruzada nos permite repetir la evaluación del clasificador y calcular la media aritmética de las medidas de evaluación (precisión, recall, F-score, etc) sobre diferentes particiones de los datos.

Por ejemplo, K-Fold cross-validation con k=3, se toma el conjunto de datos T (entrenamiento, o la unión de entrenamiento y test, para tener más ejemplos) y se divide en tres partes $(P_1, P_2,P_3)$ con las clases balanceadas y sin repetición de los ejemplos. El proceso de evaluación se repite 3 veces. En cada iteración, se entrena con dos partes y se evalúa con la tercer parte, es decir en iteración 1 se entrena con $P_1 y P_2$ y se evalúa con $P_3$. Después se entraba con $P_1 y P_3$ y se evalúa con $P_2$. Finalmente, se entrena con $P_2 y P_3$ y se evalúa con $P_1$. El desempeño general del clasificador es la media de las métricas obtenidas en cada iteración.

Referencias.

[1] Hossin, M., & Sulaiman, M. N. (2015). A review on evaluation metrics for data classification evaluations. International Journal of Data Mining & Knowledge Management Process, 5(2), 1.

[2] Tharwat, A. (2018). Classification assessment methods. Applied Computing and Informatics. ISSN 2210-8327. https://doi.org/10.1016/j.aci.2018.08.003.

[3] Sokolova, M., & Lapalme, G. (2009). A systematic analysis of performance measures for classification tasks. Information Processing & Management, 45(4), 427-437.

[4] http://alt.qcri.org/semeval2019/index.php?id=tasks

[5] https://sites.google.com/view/iberlef-2019/

[6] https://mexa3t.wixsite.com/home/aggressive-detection-track

Ejercicio

Evaluar el desempeño de dos clasificadores vistos en el bloque anterior: Naive Bayes y Support Vector Machine (lineal).

Usar los preprocesamientos del ejercicio anterior, usar CounterVectorizer y TFIDFVectorizer para el pesado, para evaluar los clasificadores propuestos.

Una vez entrenado cada modelo, predecir los datos para el conjunto test que se proporciona: datos de agresividad (2 clases) y datos de celulares (4 clases):

Realizar la evaluación de los desempeños de cada combinación, es decir, el clasificador, los distintos pesados y para los dos conjuntos de datos:

Se sugiere usar las métricas de sklearn

from sklearn.metrics import  f1_score, precision_score, recall_score

print("Precisión Bayes: ", precision_score(Y_gold, Y_predict,  average='macro'))

consultar:

https://​scikit-​learn.​org/​stable/​modules/​classes.​html#​module-​sklearn.​metrics

Para obtener la matriz de confusión podemos usar la función de sklearn las columnas y filas están asociadas a las etiquetas que se indican y es una matriz de NxN, en el ejemplo son 4 clases.

Por ejemplo, la primer fila y primer columna indicaría los datos “information” que se clasificaron como “information” es decir los true positive para la clase “information” (535), la primera fila y segunda columna indicaría los ejemplos que se clasificaron como “negative” (8) pero que eran en realidad de la clase “information”, etc.

from sklearn.metrics import confusion_matrix
cm = confusion_matrix(Y_gold, Y_predict, labels=\['information', 'negative', 'neutral', 'positive'\])
print(cm)

[[535   8  49   8]
 [ 11 212  90  55]
 [ 59  80 537 120]
 [ 20  46 100 353]]

Datos

Autor

Sabino Miranda Jiménez

Investigador Cátedras CONACYT asignado a INFOTEC

112 Circuito Tecnopolo Norte Col. Tecnopolo Pocitos II,
C.P. 20313, Aguascalientes, Ags, México.

Tel. +52 (555) 624 28 00 Ext. 6384
email: sabino.miranda at infotec.mx