Programa

Horario: sábados de 13 a 15 hs

Aula: 134

Herramientas para el procesamiento de textos en Python

1- Titular y colaboradores:

Titular

Martín Kondratzky

Colaboradores

Fernando Schiaffino

Fernando Carranza

Macarena Fernández Urquiza


2- Fundamentación y descripción del programa

En los últimos años, las ciencias de la computación han desarrollado una vasta variedad de herramientas de gran utilidad para el procesamiento de datos, que se aplican tanto con fines comerciales como académicos en todas las áreas del conocimiento científico. Sin embargo, las ciencias humanas, que suelen ser más refractarias respecto de las innovaciones en este campo, a menudo quedan desactualizadas con respecto de estas nuevas herramientas, desaprovechando los recursos tecnológicos disponibles y, en muchas ocasiones, perdiendo una gran cantidad de tiempo haciendo de forma manual tareas que actualmente una computadora es capaz de hacer en minutos.

En las ciencias humanas y sociales, la fuente más importante de información disponible al investigador son los textos, producto verbal que sirve de vehículo a la indagación. El problema que lleva en sí mismo el tratamiento automático de este tipo de fuentes es el mismo que implica cualquier fuente de datos no estructurada: una gran dificultad para extraer datos de calidad.

En este seminario de extensión, buscamos introducir a los estudiantes de distintas disciplinas en el el uso y el respaldo teórico de una variedad de herramientas computacionales para el procesamiento de lenguaje natural. Para ello introduciremos nociones básicas de teoría de los lenguajes y de programación en Python (Unidad I), que será el lenguaje utilizado a lo largo de todo el curso. Ambas cuestiones resultan necesarias para poner en perspectiva la clase de retos que plantean los textos y las limitaciones que atañen a sus posibles soluciones. Se presentará sucesivamente el estado de arte general de los tipos de algoritmos y herramientas computacionales que se utilizan para resolver problemas lingüísticos que atañen a los niveles del léxico y la morfología (Unidad II), de la sintaxis (Unidad III) y de la semántica o interpretación de los textos (Unidad IV). El recorrido no pretende ser exhaustivo sino dar una introducción general al uso de algunos de estos recursos computacionales. Si bien trabajaremos cada problema desde el punto de vista teórico, pondremos especial foco en la parte práctica y de implementación, ya que durante las clases se explorarán y correrán diversas aplicaciones computacionales concretas, todas usando Python como lenguaje de programación de cabecera.


3- Objetivos

De la justificación del programa se desprenden los siguientes objetivos del curso:

  • Introducir a los estudiantes de la facultad y a la comunidad en general en el uso de herramientas computacionales para el procesamiento de información textual.
  • Demostrar las posibilidades del análisis computacional en relevamiento y análisis de datos textuales para estudios en el campo de las humanidades
  • Demostrar la utilidad de las herramientas disponibles para la exploración de bibliografía.
  • Comprender la base lingüística y/o computacional subyacentes a cada herramienta.
  • Brindar una introducción al mundo de la programación en Python.
  • Ofrecer un espacio de práctica supervisada para el empleo de las diferentes herramientas.
  • Mostrar casos de uso real.
  • Presentar diferentes recursos digitales disponibles para la realización de investigaciones y trabajos que involucren el procesamiento de textos.


4- Contenidos y Bibliografía


Contenidos:


Unidad I: Nociones básicas de algoritmos y programación

Algoritmos. Introducción a Python: variables, objetos, operadores, funciones, clases. NLTK (Natural Language Toolkit).

Jerarquía de Chomsky. Costo computacional. Tiempo lineal, polinómico y exponencial. Nociones básicas de tratabilidad y decidibilidad.


Unidad II: Problemas de morfología y léxico

Escritura y reconocimiento de expresiones regulares. Preprocesamiento y normalización de textos. Tokenización (separación de oraciones y palabras). Lematización (reconocimiento de lexemas) y Stemming (reconocimiento de raíces).


Unidad III: Cómo se combinan las palabras

POS Tagging. Gramáticas formales. Parsing (etiquetadores sintácticos). Shallow y full parsing. Dependencias vs. constituyentes. Algoritmos básicos de parsing. NLTK. Parsing probabilístico.


Unidad IV: La interpretación de los textos

Modelos de bolsa de palabras. Eliminación de stopwords. Clustering. Clasificación de textos.


5- Bibliografía por unidad


Unidad I: Nociones básicas

  • Bird, S., Klein, E., & Loper, E. (2009). Natural language processing with Python: analyzing text with the natural language toolkit. California: O'Reilly Media
  • Hopcroft, John, Rajeev Motwani & Jeffrey D. Ullman (2001). Capítulo 1 “Automata: The Methods and the madness“. Introduction to Automata Theory, Languages and Computation. Massachusetts: Addison-Wesley. pp. 1-35.
  • Partee, B., A. Meulen, y R. Wall (1993). Capítulo 16: “Basic Concepts”. Mathematical Methods in Linguistics. Dordrecht: Kluwer Academic Publishers. pp 433-454.


Unidad II: Problemas de morfología y Léxico

  • Jurafsky, D. y J. Martin (2000) Capítulo 2 "Regular expressions and automata". Speech and language processing. New Jersey: Prentice-Hall, 21-56.


Unidad III: Cómo se combinan las palabras

  • Manning, C. & H. Schütze. (1999). Capítulo 12 “Probabilistic Parsing”. Foundations of Statistical Natural Language Processing. Cambridge/Massachusetts: The MIT Press. Pp. 407-460.
  • Russell S. y Norvig P. (1995). Capítulo 23: “Practical Natural Language Processing”. Artificial Intelligence: a modern approach. New Jersey: Prentice Hall.
  • Bird, S., Klein, E., & Loper, E. (2009). Capítulo 5: “Categorizing and Tagging Words”. Natural language processing with Python: analyzing text with the natural language toolkit. California: O'Reilly Media.


Unidad IV: La interpretación de los textos


6- Bibliografía General


  • Baker, C. F., & Fellbaum, C. (2009, August). WordNet and FrameNet as complementary resources for annotation. In Proceedings of the Third Linguistic Annotation Workshop (pp. 125-129). Association for Computational Linguistics..
  • Bolshakov, I. y A. Gelbukh (2004). Computational Linguistics: model, resources, applications. México: UNAM.
  • Carnie, Andrew (2010). Capítulo 9 “Dependency and Constituency”. Constituent Structure. Oxford/New York: Oxford University Press, pp. 168-188.
  • Clark, A. (2003, March). Pre-processing very noisy text. In Proc. of Workshop on Shallow Processing of Large Corpora (pp. 12-22).
  • Clark, E., & Araki, K. (2011). Text normalization in social media: progress, problems and applications for a pre-processing system of casual English. Procedia-Social and Behavioral Sciences, 27, 2-11.
  • Davis, M., R. Sigal & E. Weyuker. (1994). Computability, Complexity and Languages. San Diego: Academic Press.
  • Debusmann, R. (2000). An introduction to dependency grammar. Hausarbeit fur das Hauptseminar Dependenzgrammatik SoSe, 99, 1-16. Disponible en http://www.ps.uni-saarland.de/~rade/papers/dg.pdf.
  • Dougherty, D., & Robbins, A. (1997). sed & awk: UNIX Power Tools. California. O'Reilly
  • Downey, A. (2012). Think Python. Massachusetts: Green Tea Press.
  • Feldman, R., & Sanger, J. (2007). The text mining handbook: advanced approaches in analyzing unstructured data. Cambridge university press. Cap. I “Introduction to Text Mining”; cap V “Clustering”; cap. VII “Probabilistic Models for Information Extraction”.
  • Fernández Montraveta, A. & G. Vázquez, G. (2010). “La construcción del wordnet 3.0 en espanol”. En La lexicografía en su dimensión teórica (pp. 201-220). Disponible en http://s3.amazonaws.com/academia.edu.documents/5944423/creacion_wordnet_malaga.pdf?AWSAccessKeyId=AKIAIWOWYYGZ2Y53UL3A&Expires=1495819135&Signature=fKkAaRA8wQftr3t0WE4QWm0vNz0%3D&response-content-disposition=inline%3B%20filename%3DLa_construccion_del_WordNet_3.0_en_espan.pdf.
  • Fitzgerald, M. (2012). Introducing Regular Expressions. California: O’Reilly.
  • Gilly, D. (1998). UNIX in a Nutshell: System V Edition.
  • Grune, D. y C. Jacobs (2008). Parsing Techniques. A practical guide. Amsterdam: Springer.
  • Hopcroft, John, Rajeev Motwani & Jeffrey D. Ullman (2001). Introduction to Automata Theory, Languages and Computation. Massachusetts: Addison-Wesley.
  • Jiang, J. J., & Conrath, D. W. (1997). Semantic similarity based on corpus statistics and lexical taxonomy. Disponible en https://arxiv.org/pdf/cmp-lg/9709008.
  • Kiritchenko, S., Zhu, X., & Mohammad, S. M. (2014). Sentiment analysis of short informal texts. Journal of Artificial Intelligence Research, 50, 723-762.
  • Liang, P. (2013). Lambda dependency-based compositional semantics. Disponible en https://arxiv.org/pdf/1309.4408.pdf.
  • Liang, P., Jordan, M. I., & Klein, D. (2011). “Learning dependency-based compositional semantics”. En Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies-Volume 1 (pp. 590-599). Association for Computational Linguistics. Disponible en https://arxiv.org/pdf/1109.6841.
  • Manning, C. & H. Shütze (1999). Foundations of Statistical Natural Language Processing. Cambridge/Massachusetts: The MIT Press.
  • Mohammad, S. M., Kiritchenko, S., & Zhu, X. (2013). NRC-Canada: Building the state-of-the-art in sentiment analysis of tweets. arXiv preprint arXiv:1308.6242.
  • Moreno Sandoval, A. (1998). Introducción a la lingüística computacional. Introducción a los modelos simbólicos, estadísticos y biológicos. Madrid: Síntesis.
  • Moreno Sandoval, A. (2001). Gramáticas de Unificación y rasgos. Madrid: A. Machado Libros, pp. 227-256.
  • Partee, B., A. Meulen, y R. Wall (1993). Mathematical Methods in Linguistics. Dordrecht: Kluwer Academic Publishers.
  • Peregrín Otero, Carlos (1970). Introducción a la lingüística transformacional. Madrid: Siglo XXI. 1973.
  • Roark, Brian & Richard Sproat (2007). Computational Approaches to Morphology and Syntax. Oxford: Oxford University Press.
  • Petruck, Miriam RL. 1996. “Frame semantics”. Handbook of pragmatics. 1–13.
  • Sag, Ivan, Thomas Wasow y Emily Bender (1999), Capítulo 2 “Some Simple Theories of Grammar”. Syntactic Theory: A Formal Introduction. Stanford: CSLI, pp. 21-48.
  • Steyvers, M., & Griffiths, T. (2007). Probabilistic topic models. Handbook of latent semantic analysis, 427(7), 424-440. Disponible en http://173.236.226.255/tom/papers/SteyversGriffiths.pdf.
  • Tan, Pang-Ning, Michael Steinbach y Vipin Kumar (2006). Introduction to Data Mining. Boston: Pearson Education.
  • Taulé, M., Martí, M. A., Bies, A., Nofre, M., Garí, A., Song, Z., ... & Ellis, J. (2015, June). Spanish Treebank Annotation of Informal Non-standard Web Text. In International Conference on Web Engineering (pp. 15-27). Springer International Publishing. Disponible en https://www.ldc.upenn.edu/sites/www.ldc.upenn.edu/files/nlpit2015-spanish-treebank-annotation.pdf.
  • van Vugt, S. (2015). Red Hat RHCSA/RHCE 7 Cert Guide: Red Hat Enterprise Linux 7 (EX200 and EX300). Pearson IT Certification.
  • Wall, R. (1972). Introduction to mathematical linguistics. New Jersey: Prentice Hall.
  • Watt, A. (2005). Beginning Regular Expressions. Indianapolis: Wiley Publishing.
  • Zhu, X., Kiritchenko, S., & Mohammad, S. M. (2014, August). Nrc-canada-2014: Recent improvements in the sentiment analysis of tweets. In Proceedings of the 8th international workshop on semantic evaluation (SemEval 2014) (pp. 443-447).


7. Destinatarios

Los destinatarios del presente seminario son alumnos y graduados de carreras humanísticas y afines con interés en el manejo de fuentes de datos no estructuradas, particularmente, textos.


8. Carga horaria

El seminario cuenta con una carga horaria total de 20 horas repartidas en 10 clases de 2hs cada una a razón de una clase por semana.


9. Condiciones de cursada y requisitos de aprobación.

Para la cursada del presente seminario se recomienda llevar computadora portátil. Es requisito para la aprobación cumplir con una asistencia mínima al 75% de las clases y aprobar una serie de trabajos prácticos a especificar durante la cursada.