Gramáticas Formales para el Lenguaje Natural Curso 2016

Gramáticas Formales para el Lenguaje Natural
Curso 2016
Tarea 2: Treebanks, PCFG y Parsing
Objetivo
El objetivo de esta entrega es reafirmar y evaluar los conceptos adquiridos sobre
sintaxis del español, categorías sintagmáticas, gramáticas libres de contexto
probabilísticas y parsing.
Introducción
Este trabajo contiene preguntas y tareas de implementación vinculadas al análisis
sintáctico en español. Para responder a algunas de las preguntas puede ser conveniente
considerar herramientas de visualización o escribir pequeñas rutinas de código.
Se utilizará el corpus con anotaciones morfosintácticas AnCora. Para las partes de
implementación se utilizará Python y la librería NLTK (Natural Language Processing
Toolkit).
Implementación
Para realizar el laboratorio se entrega un template de código con secciones a completar.
El template organiza lo que se pide y sirve a su vez como guía. Debe realizar el
laboratorio sobre el template impartido.
Parte 1 - AnCora
1. Obtener los siguientes valores procesando el corpus.
a) Cantidad de oraciones.
b) Oración más larga (la primera).
c) Largo de oración promedio.
d) Vocabulario con frecuencia de ocurrencia.
e) Vocabulario con frecuencia de ocurrencia por categoría.
2. Obtener los árboles siguientes.
a) Obtener los árboles con la mayor y menor cantidad de nodos.
b) Obtener todos los árboles que contengan alguna palabra con un lema dado.
3. Observando varios ejemplos diga qué diferencias encuentra entre la estructura de los
grupos verbales de AnCora y la vista en el curso.
Parte 2 - PCFG
1. Inferir una PCFG a partir del corpus usando nltk.induce_pcfg.
a. Obtener las reglas no léxicas.
b. Obtener las categorías léxicas contempladas por la gramática.
c. Obtener las reglas léxicas de una categoría dada.
2. Generar un parser con la gramática inferida con nltk.ViterbiParser
3. Generar análisis para las siguientes oraciones, comentar los resultados obtenidos.
a. El juez manifestó que las medidas exigidas por el gobierno actual son
muy severas.
b. El partido entre los equipos europeos tendrá lugar este viernes.
c. El domingo próximo se presenta la nueva temporada de ópera.
Parte 3 - PCFG con UNK words
1. Transformar la gramática para que contemple palabras desconocidas (UNK).
Se propone considerar la palabras con frecuencia 1 en el corpus como UNK
remplazando las reglas para dichas palabras por (c → UNK) antes de inducir la
PCFG.
2. Modificar el proceso de parsing para que considere UNKs con la nueva gramática
(sustituir en la oración las palabras desconocidas por UNK, puede basarse en el
vocabulario con frecuencias pedido en la parte 1).
3. Generar análisis para las siguientes oraciones, comentar los resultados obtenidos.
a. El domingo próximo se presenta la nueva temporada de ópera.
b. Pedro y Juan jugarán el campeonato de fútbol.
4. ¿Qué problema tiene esta técnica? Proponga un enfoque para solucionarlo (no es
necesario implementarlo).
Parte 4 - PCFG con lexicalización
1. Lexicalización en el primer nivel.
a. Analice con el parser de la parte 2 la oración agramatical:
* El juez vino que avión.
¿Obtuvo algún resultado? ¿Es correcto? Analice las causas del resultado
obtenido.
b. Realice las modificaciones necesarias para que el lema de cada palabra sea
considerado en el nodo del nivel inmediatamente superior a las hojas del árbol.
Infiera nuevamente la gramática y vuelva a analizar la oración de la parte 4.1.a.
¿Qué observa? Justifique.
2. Lexicalización de grupos verbales.
a. Analice con el parser de la parte 4.1.b los siguientes ejemplos:
i. El juez manifestó su apoyo al gobierno.
ii. * El juez opinó su apoyo al gobierno.
Analice los resultados obtenidos.
b. Realice las modificaciones necesarias para que el lema de cada verbo sea
considerado en los nodos grup.verb del árbol. Infiera nuevamente la gramática y
vuelva a analizar las oraciones. ¿Qué observa? Justifique.
c. Analice con los parsers de las partes 4.1.b y 4.2.b la oración:
El juez manifestó que renunciará.
¿Qué observa? Justifique.
Entrega
Se debe completar el template impartido en las secciones de código correspondientes y
escribir un informe reportando los resultados.
Se debe entregar un archivo entrega2_grupoXX.zip que contenga el template completo
y el informe en formato pdf.
La fecha de la entrega es el lunes 30 de mayo.
Referencias
[1] Teórco del curso - https://eva.fing.edu.uy/course/view.php?id=654
[2] Python - https://www.python.org/
[3] NLTK - http://www.nltk.org/
[4] Anaconda - http://continuum.io/downloads
[5] AnCora - http://clic.ub.edu/corpus/ancora
[6] http://www.cs.famaf.unc.edu.ar/~francolq/jcc
[7] http://www.aclweb.org/anthology/N03-1016.pdf