• Prácticas

    Para arrancar seguiremos el curso propuesto por Google: http://code.google.com/edu/languages/google-python-class/
    La primer entrega consiste en hacer los ejercicios propuestos por este mini curso: string1.py, string2.py, list1.py, list2.py y wordcount.py
     

    La segunda parte de la materia se focalizará en la cognición humana a gran escala, es decir inferir computo humano a partir de grandes repositorios de datos. En partcular, nos concentraremos en análisis de texto, como producto del pensamiento humano.

     

    Para llevar adelante estos análisis utilzaremos NLTK. Para bajar una presentación introductoria,click acá. Script de ejemplo clase 2, click aca.

    Ejercicios

    Para bajar un conjunto de documentos para analizar, haga click aquí (completo) o aquí (versión reducida)

    1. Cargar los documentos y separar las palabras.
    2. Contar la cantidad de palabras totales y la cantidad de palabras por documento
    3. Realizar un gráfico de frecuencias de las 50 palabras más frecuentes
    4. Realizar un gráfico de frecuencias de las 50 palabras más frecuentes que no sean stopwords
    5. Buscar todas las palabras que tengan más de 3 vocales
    6. Buscar los documentos provenientes de Buenos Aires
    7. Graficar la frecuencia de palabras interesantes (no stopwords) para los documentos de Bs. As.
    8. Hacer un gráfico de dispersión de palabras clave (dispersion_plot) para los doc de Bs. As.
    9. Tomar un subconjunto de documentos, y lematizarlos.
    10. Tomando los textos lematizados hacer análisis de frecuencia.
    11. Si te quedaste con ganas de más ejercicios, entrá en:http://nltk.googlecode.com/svn/trunk/doc/book/ch01.html

    Ejercicios

    1) Bajar de Project Gutenberg el libro de Darwin "ON THE ORIGIN OF SPECIES"

    2) Procesar el texto, tokenizando eliminando signos de puntuación

    3) Armar una función que reciba una lista de tokens, una lista de palabras y un tamaño de ventana y devuelva una lista de probabilidades de encontrar la palabra en cada ventana para cada palabra pasada por parámetro, .

    4) Calcular la entropía de la distribución de palabras seleccionadas para distintos tamaños de ventana

    5) Generar una versión randomizada del texto, y medir la entropía de las palabras randomizadas.

    6) Calcular la "information value" de las palabras seleccionadas, cuya definición es: "The difference between the two entropies multiplied by the frequency of the word gives the word’s 'information value' in the text. Information value, just as in binary computing, is measured in bits."

    7) Distinguir las palabras del texto en artículos, sustantivos y adjetivos usando un POS-tagger. Verificar si la entropía separa a estos grupos de palabras.

     REDUCCION DE LA DIMENSIONALIDAD

    Los siguientes ejercicios pueden hacerse en el lenguaje/herramienta preferida. Daremos soporte en matlab y python.

    1. Generar una lista de elementos linealmente dependiente con ruido gaussiano (por ejemplo, y=x.2 + ruido) 

    MATLAB: Usar la función normrnd(mu,sigma)

    2. Calcular las componentes principales mediante la técnica PCA, y verificar que hay una dirección "privilegiada" que explica la mayor parte de la varianza. 

    MATLAB: Usar la función princomp(data)

    3. Verificar que la componente principal no es alterada por el aumento del tamaño del ruido.

    4. Calcular la matriz de ocurrencias de palabras del corpus de La Nación, siendo cada línea una palabra distinta y una columna cada artículo periodístico.

    5. Calcular LSA de 300 dimensiones sobre el corpus de La Nación: a partir de la matriz calculada, regularizarla y calcular SVD de 300 dimensiones.

    LINK: http://calamaro.exp.dc.uba.ar/incc/
    MATLAB: [U,S,V] = svds(A,k) con k = 300

    6. Buscar ejemplos de palabras "parecidas" y distintas en el espacio LSA.