====== Práctico 4: Propuestas de Temas ====== ===== 1. Desambiguación de Entidades (Entity Linking) ===== Propuesto por: Laura Linkear menciones de entidades a nodos en una ontología (e.g., freebase). Como sería un PoC (prueba de concepto), usaríamos solamente un subconjunto de la ontología, para que no sea demasiado grande. Una aproximación naïve es armar una caracterización de los nodos de la ontología mediante sus vecinos, una caracterización de los candidatos a linkearse mediante las palabras de su contexto, hacer embeddings de eso y ahí buscar a qué nodo se acerca más cada mención de una entidad. Referencia principal: * http://digital.library.unt.edu/ark:/67531/metadc31001/m2/1/high_res_d/Mihalcea-2007-Wikify-Linking_Documents_to_Encyclopedic.pdf Documentación: * https://en.wikipedia.org/wiki/Entity_linking ===== 2. Extracción de Relaciones Mediante Bootstrapping ===== Propuesto por: Laura Extracción de relaciones aplicando bootstrapping. Implementación de una versión simplificada de [[http://www.anthology.aclweb.org/P/P06/P06-1102.pdf|Fact Extraction on the Fast Lane]]: a partir de unos cuantos ejemplos semilla, extraer features, usarlas (posiblemente mediante un clasificador) para identificar nuevos ejemplos en corpus no anotado, incorporar los ejemplos fiables como ejemplos de entrenamiento y volver a iterar. Tiene fuerte énfasis en el trabajo sobre las features. Referencia principal: * [[http://www.anthology.aclweb.org/P/P06/P06-1102.pdf|Fact Extraction on the Fast Lane]] ===== 3. Análisis de Sentimientos como Extracción de Relaciones ===== Propuesto por: Laura Aspect-based sentiment analysis como extracción de relaciones entre pedazos de texto (que vendrían a ser la primer entidad) que expresan propiedades (que vendría a ser la relación) de un objeto (que vendría a ser la segunda entidad). Aplicando bootstrapping y feature engineering. Referencia principal: * http://www.anthology.aclweb.org/D/D09/D09-1159.pdf ===== 4. Segmentación de Usuarios de Twitter ===== Propuesto por: Laura Segmentación (clustering) de usuarios de twitter a partir del texto de sus tweets, y luego visualización de los contenidos de los segmentos usando metadatos demográficos (nombre, ubicación geográfica, edad, sexo) y alguna forma de wordcloud. Referencia principal: * http://www.ee.columbia.edu/~lyndon/pubs/wsm2009-twitter.pdf ===== 5. Traducción Automática Estadística ===== Propuesto por: Paula Implementación de sistema de TA estadístico por frases usando los paquetes open source Moses (modelo de traducción y decoder), Giza (alineamiento de palabras), KenLM (modelo de lenguaje). Referencia principal: * http://www.statmt.org/moses/?n=Moses.Baseline Recursos: * http://www.europarl.europa.eu ===== 6. Reconocimiento de Entidades para Mejorar la Traducción Automática ===== Propuesto por: Paula Una forma de mejorar la TA es reconociendo algunas de las entidades nombradas (NE) en el texto origen. Como se explica en [1] traducir en forma errónea algunas NE (por ejemplo nombres propios, de organizaciones, etc) puede producir textos incomprensibles o demandar demasiada post-edición (corrección por traductores humanos), lo cual es bastante costoso. En este proyecto se propone: - Identificar las NEs en el texto origen: Para identificar NEs se puede usar NLTK o crear su propio reconocedor de NE. - Marcarlas como “no traducibles”, dejando esa tarea para los post-editores. - Evaluar los resultados con y sin identificación de NEs. Referencia principal: * [1] http://www.mt-archive.info/EAMT-2003-Babych.pdf ===== 7. Evaluación de la Traducción Automática ===== Propuesto por: Paula Se propone mejorar la evaluación de la TA implementando una nueva métrica que intente captar más que el solapamiento léxico, en particular usando un parser para captar la fluidez a través de la estructura sintáctica de las TA. Hay trabajos que indican que las métricas “syntax-based” correlacionan mejor con las humanas que las “string-based” como BLEU [1]. Acá hay lugar para experimentar con distintas métricas: se pueden probar solapamientos de árboles lexicalizados/no lexicalizados, altura de los árboles, o alguna otra que surja en el proceso. Se pueden inspirar en [1]. Referencia principal: * [1] http://dl.acm.org/citation.cfm?id=1626369 Recursos: * [[ftp://jaguar.ncsl.nist.gov/mt/resources/mteval-v13a.pl|script BLEU]] Documentación: * www.aclweb.org/anthology/P02-1040.pdf ===== 8. POS Tagging del Español con Redes Neuronales ===== Propuesto por: Cristian Se propone la creación de un PoS-tagger automático del español, mediante el uso de redes neuronales para dicha aplicación. Dicho PoS-tagger se entrenará y evaluará con los corpus: Tibidabo Treebank & IULA Spanish LSP Treebank. La idea será crear un modelo que sirva para predecir el pos tag de la palabra actual dada una ventana de palabras anteriores (y posiblemente posteriores). Opcionalmente, se pueden usar algunos word embeddings pre-entrenados para la tarea. Referencia principal: * [[http://arxiv.org/pdf/cmp-lg/9410018.pdf|Part-of-Speech Tagging with Neural Networks]] Recursos: * Tibidabo Treebank & IULA Spanish Treebank * [[http://www.cs.famaf.unc.edu.ar/~ccardellino/resources/spanish_billion_words/SBW-vectors-300-min5/SBW-vectors-300-min5.bin.gz|Word Embeddings Pre-Entrenados del Español]] Documentación: * Natural Language Processing (almost) from Scratch * [[http://deeplearning.net/software/theano/tutorial/|Theano Tutorial]] * [[http://deeplearning.net/tutorial/|Deep Learning Tutorials]] * http://deeplearning.net/tutorial/logreg.html * http://deeplearning.net/tutorial/mlp.html * Keras: Theano-based Deep Learning library * Stanford's CS224d: Deep Learning for Natural Language Processing (Prestar especial atención a las Lectures Notes) ===== 9. Evaluación de Word Embeddings para el Español ===== Propuesto por: Cristian En este proyecto se proponen tareas de evaluación para un modelo de word embeddings (también conocido como vectores de palabras) para el español, entrenado con un corpus de 1.5 mil millones de palabras del español, utilizando el algoritmo Word2Vec con el modelo de Skip-grams. La tarea será una extensión de la forma de evaluación sugerida en la clase de Stanford CS224d: Deep Learning for Natural Language Processing. En este curso se propone el uso de 4-uplas de palabras con alguna relación semántica bien definida, por ejemplo “capital de país” (e.g. Berlin Germany Bangkok Thailand). De cada una de estas 4-uplas, se realizan operaciones de suma y resta sobre 3 de ellas y se espera que el resultado sea un vector lo más cercano posible al vector de la cuarta palabra. El objetivo de este proyecto es encontrar una ontología (como por ejemplo freebase) en la que se encuentren las palabras del recurso de 4-uplas original del curso, identificar qué grafo relaciona a estas palabras en la ontología y extraer todas las 4-uplas que están identificadas con ese mismo grafo de la ontología, para generar una mayor cantidad de 4-uplas equivalentes y en diferentes idiomas. También se explorará cómo se pueden generalizar los grafos identificados para encontrar relaciones comparables y distintas a las del recurso. Referencia principal: * [[http://cs224d.stanford.edu/syllabus.html|Stanford's CS224d: Deep Learning for Natural Language Processing]] (especial atención en las primeras 3 clases y las lecture notes 1 y 2) Documentación: * Distributed Representations of Words and Phrases and their Compositionality * Efficient Estimation of Word Representations in Vector Space * From Frequency to Meaning: Vector Space Models of Semantics Recursos: * [[http://www.cs.famaf.unc.edu.ar/~ccardellino/resources/spanish_billion_words/SBW-vectors-300-min5/SBW-vectors-300-min5.bin.gz|Word Embeddings Pre-Entrenados del Español]] * [[http://www.cs.famaf.unc.edu.ar/~ccardellino/resources/spanish_billion_words/spanish_billion_words.tar.bz2|Corpus de 1.5 Mil Millones de Palabras del Español]] ===== 10. Análisis Sintáctico Lexicalizado ===== Propuesto por: Franco Programar un head-finder basado en reglas para lexicalización de árboles sintácticos. Definir un conjunto de reglas de head-finding para el idioma castellano. Programar un parser lexicalizado con suavizado de las probabilidades de las producciones. Referencia principal: * Charniak (1997) Documentación: * https://class.coursera.org/nlp/lecture/170 * http://www.cs.columbia.edu/~mcollins/courses/nlp2011/notes/lexpcfgs.pdf * {{:materias:pln:practico4:spanishheadfinder.java|Spanish head finder}} de [[http://nlp.stanford.edu/software/corenlp.shtml|Stanford CoreNLP]]. ===== 11. Análisis Sintáctico de Dependencias Basado en Transiciones ===== Propuesto por: Franco Programar un analizador de dependencias basado en transiciones. Usar un pipeline de scikit-learn para decidir cada acción. Para entrenar, convertir árboles de dependencias en secuencias de acciones. Para parsear, hacer el proceso inverso. Entrenar y evaluar con el corpus Ancora en su versión de dependencias. Referencia principal: * [[https://class.coursera.org/nlp/lecture/177|Greedy Transition-Based Parsing (31:05)]] ===== 12. Extracción de Información en Resoluciones Universitarias ===== Propuesto por: Franco La UNC ofrece acceso público a todas las resoluciones y ordenanzas que emiten los diferentes órganos de gobierno que la componen. En estos documentos se encuentran todas las decisiones que se toman, y en particular se pueden encontrar todos los cambios que ocurren en la planta docente, como designaciones, licencias y renuncias de profesores. En este proyecto se propone detectar y procesar aquellas resoluciones de la UNC que se refieren a cambios en la planta docente, encontrando y etiquetando las entidades como nombres de personas, números de legajo, cargos, dedicaciones, fechas, etc. La información obtenida podrá ser consultada a través de una interfaz web. Referencia principal: * https://github.com/HackatONG-ProgramAR/resoluciones-unc ===== 13. Métodos Espectrales ===== Propuesto por: Franco Estudiar la referencia principal y hacer un resumen. Referencia principal: * Borja Balle, Xavier Carreras, Franco M. Luque y Ariadna Quattoni. Spectral learning of Weighted Automata: A forward-backward perspective. Machine Learning Journal Special Issue on Grammatical Inference ([[http://www.lsi.upc.edu/~carreras/pubs/2013-mlj-bclq.pdf|preprint]]). Springer US, 2014. ===== 14. Clustering para POS Tagging No Supervisado ===== Propuesto por: Franco Programar un tagger que agrupe en clusters las palabras que ocurren en un corpus de acuerdo a su similaridad y a la similaridad de los contextos en los que aparecen. Para ello, definir un conjunto de features representativos y un pipeline de scikit-learn que use un algoritmo de clustering. Realizar experimentos con el corpus Ancora, probando varios de los algoritmos de clustering provistos por scikit-learn. Referencia principal: * http://scikit-learn.org/stable/modules/clustering.html ===== 15. Extracción de Información para Orientación Partidaria ===== Propuesto por: Ezequiel Medina En este proyecto se propone hacer un programa que extraiga los datos de las actas de votaciones de la cámara de diputados de la nación. Con el objetivo de conocer la orientación de cada diputado y también la de cada partido político con respecto a cada proyecto de ley votado. Con esta información, y con unas preguntas acerca de las leyes votadas, se busca poder calcular un porcentaje de compatibilidad del usuario con cada diputado y cada partido político, y de esta manera orientarlo ideológicamente. Las preguntas y los resultados se presentarían en una página web. Referencia principal: * http://iepy.machinalis.com/ Recursos: * http://www.diputados.gov.ar/secadmin/ds_electronicos/actas_votacion-portada.html Documentación adicional: * http://www.diputados.gov.ar/sesiones/bat.html ===== 16. Relevamiento de Literatura sobre Modelado de Lenguaje ===== Propuesto por: Giovanni Rescia Estudio y resumen del reporte técnico e implementación de algoritmos de smoothing para el modelado de lenguaje. Se hará un estudio y resumen del reporte técnico "An Empirical Study of Smoothing Techniques for Language Modeling" que trata sobre el modelado de lenguaje de n-gramas y hace una descripción, implementación y análisis de resultados de varias técnicas de smoothing. También se relacionarán algunas técnicas de smoothing mencionadas en el reporte con lo realizado en el práctico 1. Por último, se implementará el algoritmo de Kneser-Ney y se comparará su performance con las otras técnicas de smoothing ya implementadas. Referencia principal: * http://www.speech.sri.com/projects/srilm/manpages/pdfs/chen-goodman-tr-10-98.pdf ===== 17. Modelo Probabilístico de Lenguaje basado en Redes Neuronales ===== Propuesto por: Ale Naser Pastoriza El objetivo de un modelo estadístico de lenguaje es determinar la probabilidad conjunta de una secuencia de palabras. Esto es intrínsecamente difícil por la dimensionalidad que presenta el problema. En este trabajo se ataca el problema de la dimensionalidad aprendiendo una representación distribuída de palabras que permite que una sentencia de entrenamiento informe al modelo sobre un número exponencial de sentencias semánticamente vecinas. El modelo aprende simultáneamente (1) un modelo distribuído para cada palabra junto con (2) la función de probabilidad para secuencias de palabras, expresadas en términos de esas representaciones. Los experimentos demostrarán como, utilizando una red neuronal (perceptrón multicapa) para la función de probabilidad (recuérdese que es un aproximador universal de funciones continuas), se mejora significativamente aquellos valores de perplejidad alcanzados por los modelos de n-gramas. Referencia Principal: * http://www.jmlr.org/papers/volume3/bengio03a/bengio03a.pdf ===== 18. Agrupamiento de Noticias de Distintas Fuentes ==== Propuesto por: Mallku Soldevila Se propone desarrollar una herramienta que organice las noticias provenientes de múltiples fuentes, de acuerdo al tema principal de las mismas. Es decir que la herramienta va a agrupar las noticias en categorías que son a priori desconocidas. La tarea puede ser tratada como un caso de "clustering" sobre representaciones vectoriales de los documentos que contienen las noticias, tal como se propone en la referencia principal. Referencia principal: * [[http://www.mdpi.com/1999-4893/5/3/364/pdf|Incremental Clustering of News Reports]] Recursos: * [[http://cs.famaf.unc.edu.ar/~laura/corpus/]] Documentación: * http://userpages.umbc.edu/~tri1/docs/unsuperdocumentclass.pdf ===== 19. Bonus Track: Visualización de Algoritmos de Parsing ==== Propuesto por: Franco Implementar en [[https://thewalnut.io/|Walnut]], la plataforma de visualización de algoritmos de nuestros amigos Machinalis, las animaciones de alguno de los métodos de parsing que vimos en la materia: * CKY ([[http://www.cse.iitm.ac.in/~sujeet/CYK/parser.html?example=1|ejemplo]]) * Basado en transiciones ([[https://api.spacy.io/|ejemplo]])