1. Ejercicio 1.

  2. Implemente un algoritmo en AWK para calcular la frecuencia de cada palabra para un cierto documento. Obtenga la gráfica correspondiente y publique los resultados obtenidos en su página personal.

  3. Ejercicio 2.

    Modifique el programa del ejercicio 1 para obtener la probabilidad de cada palabra en un cierto documento, usando la frecuencia de dicha palabra y su normalización. Grafique los resultados obtenidos usando GNUPLOT. Cuide de usar una escala logarítmica en ambos ejes (X y Y)de la gráfica. Para mejorar el pre-procesamiento de este archivo, deje todas las palabras en minúsculas, y además elimine todas las palabras cerradas y los símbolos de puntuación (use la siguiente lista para el idioma Español y la siguiente para el idioma Inglés).

  4. Ejercicio 3.

    Recopile hojas de al menos 4 tipos de árboles distintos y categoricelas de acuerdo a su ancho y largo. Use 20 hojas para conformar un corpus de training y 5 hojas adicionales para conformar el corpus de test. Grafique todos los datos de training en gnuplot.

  5. Ejercicio 4.

    Use un algoritmo de distancias básico para calcular los centroides de cada grupo de hojas en el conjunto de training y use este centroide para programar un clasificador simple basado en distancias. Grafique los datos de test y el centroide.

  6. Ejercicio 5.

    Implemente el clasificador de Naïve Bayes para la detección de Spam (correo electrónico basura - PENDIENTE DE SUBIR).

    Genere un programa llamado training.awk que reciba como parametro un archivo de texto que contenga muestras de documentos spam y no spam (documentos de entrenamiento o training); este archivo deberá generar un modelo de clasificación, es decir, un archivo de texto con las probabilidades condicionales de cada palabra del vocabulario dada cada categoría (SPAM, NO_SPAM).

    Genere también un programa llamado test.awk que reciba como parámetros el modelo obtenido mediante el programa anteriior (training.awk) y un archivo de texto con las muestras que deseamos clasificar (documentos de prueba o test). Para cada documento de prueba, el clasificador deberá arrojar como respuesta el ID del documento junto con la categoría más probable (SPAM o NO_SPAM).

  7. Ejercicio 6.

    Use un algoritmo de Naïve Bayes para clasificar hojas de árboles, usando los conjuntos de entrenamiento y prueba recopilados en el Ejercicio 3.

  8. Ejercicio 7.

    Grafique la distribución de las palabras de un corpus (descargar aquí), además de las distribucionesesperadas de acuerdo a la Ley de Zipf y de acuerdo a la fórmula de Mandelbroot. Use el programa ejemplo presentado en clase como referencia (descargar aquí).

  9. Ejercicio 8.

    Calcule la distancia asimétrica de Kullback-Leibler para la distribución de palabras calculada en el Ejercicio 7 con respecto a la distribución esperada de acuerdo a la Ley de Zipf (Zipfian Law) y de acuerdo a la fórmula de Mandelbroot. Que distribución se ajusta mejor a los datos?. Investigue porqué esta distancia no es considerada una métrica.

  10. Ejercicio 9.

    Asuma que la probabilidad de las palabras se distribuye de manera normal (gaussiana) y use un conjunto de textos (descargar aquí) para estimar los parámetros µ y σ sobre dicha colección de datos para tres palabras distintas. Seleccione una palabra de frecuencia alta, una de frecuencia media y una de frecuencia baja, seleccionadas a partir del vocabulario de todo el corpus (sugerencia: use las palabras "reuter", "world" y "mexico").

  11. Ejercicio 10.

    Se trata de implementar un programa que descubra el idioma en que está escrito un determinado texto. Se usará el clasificador de Naïve Bayes para entrenar modelos del lenguaje para diversos idiomas. Posteriormente se calculará la probalidad de cada idioma dado un nuevo determinado texto de entrada, es decir, P(I|T), donde I es un idioma y T es un texto. Calcule el modelo del lenguaje a partir de n-gramas de letras, en particular, bigramas de letras. Use los siguientes textos para entrenar tres modelos de lenguaje en Inglés (descargar aquí), Francés (descargar aquí) e Italiano (descargar aquí). Usar el siguiente archivo como test (descargar aquí). Para verificar la precisión de su sistema, use el siguiente gold standard (descargar aquí).

  12. Ejercicio 11.

    Implementar el modelo Booleano de recuperación de información usando el siguiente corpus(descargar aquí). Haga uso del modelo entidad-relación y relacional expuesto en clase para implementar este Sistema de Recuperación de Información (SRI) en un sistema de base de datos relacional como MySQL. NOTA: Use la cuenta "pln" en el servidor yoliztli.cs.buap.mx para acceder a la base de datos.

  13. Ejercicio 12.

    Implementar el modelo de espacio vectorial de recuperación de información usando el siguiente corpus(descargar aquí). Implemente el modelo completo usando AWK. Cree cinco consultas y verifique visualmente la calidad de los resultados.