Herramientas de usuario

Herramientas del sitio


materias:pln:practico3

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
materias:pln:practico3 [2017/05/18 15:55] francolqmaterias:pln:practico3 [2019/02/05 19:44] (actual) – removed francolq
Línea 1: Línea 1:
-====== Trabajo Práctico 3 - Análisis Sintáctico ====== 
  
-[[materias:pln|(volver a la página principal)]] 
- 
-En este trabajo práctico implementaremos varios modelos de análisis sintáctico y realizaremos algunos experimentos con ellos. 
- 
-  * Repositorio: https://github.com/PLN-FaMAF/PLN-2017/tree/master/parsing. 
-  * Fecha de entrega: 8/06 a las 23:59. 
- 
- 
-===== Instrucciones ===== 
- 
-El código base para el proyecto se encuentra en el [[https://github.com/PLN-FaMAF/PLN-2017/tree/master/parsing|repositorio del a materia]]. 
-La entrega del proyecto es a través de github. Por lo tanto, deben **hacer un "fork" del repositorio** dentro de sus cuentas de github. 
- 
-Además del código fuente, **deben elaborar un README** con una breve explicación de lo que hicieron en cada ejercicio. El README puede estar en texto plano (txt), markdown (md) o restrucured text (rst), y debe estar incluído dentro de la carpeta ''tagging''. 
- 
-Criterios de Evaluación: 
- 
-  * Estilo de codificación (chequeado con flake8 y a ojo). 
-  * Diseño del código: uso de clases, herencia, etc. 
-  * Uso y aprobación de tests (provistos y definidos por uds.). 
-  * Uso apropiado de git (commits granulares, logs informativos). 
-  * Resultados. 
-  * README. 
- 
- 
-===== Ejercicio 1: Evaluación de Parsers ===== 
- 
-Programar un script ''eval.py'' que permita evaluar los parsers. 
- 
-  * Calcular: 
-    * Labeled precision, recall y F1. 
-    * Unlabeled precision, recall y F1. 
-  * Dar las siguientes opciones: 
-    * ''-m <m>'': evaluar sólo oraciones de largo menor o igual a ''m''. 
-    * ''-n <n>'': evaluar sólo las primeras ''n'' oraciones. 
-  * Entrenar y evaluar los modelos "baseline" para todas las oraciones de largo menor o igual a 20. 
- 
-Interfaz de ''eval.py'': 
- 
-<code> 
-$ python parsing/scripts/eval.py  --help 
-Evaulate a parser. 
- 
-Usage: 
-  eval.py -i <file> [-m <m>] [-n <n>] 
-  eval.py -h | --help 
- 
-Options: 
-  -i <file>     Parsing model file. 
-  -m <m>        Parse only sentences of length <= <m>. 
-  -n <n>        Parse only <n> sentences (useful for profiling). 
-  -h --help     Show this screen. 
-</code> 
- 
- 
-===== Ejercicio 2: Algoritmo CKY ===== 
- 
-  * Implementar el algoritmo CKY en un módulo ''cky_parser.py''. 
-  * Agregar a los tests un test con una gramática y una oración tal que la oración tenga más de un análisis posible (sintácticamente ambigua). 
- 
-Interfaz del parser: 
- 
-<code python> 
-class CKYParser: 
- 
-    def __init__(self, grammar): 
-        """ 
-        grammar -- a binarised NLTK PCFG. 
-        """ 
- 
-    def parse(self, sent): 
-        """Parse a sequence of terminals. 
- 
-        sent -- the sequence of terminals. 
-        """ 
-</code> 
- 
-Tests: 
- 
-  $ nosetests parsing/tests/test_cky_parser.py  
- 
-Documentación: 
- 
-  * http://www.nltk.org/_modules/nltk/tree.html 
- 
- 
-===== Ejercicio 3: PCFGs No Lexicalizadas ===== 
- 
-  * Implementar una UPCFG, una PCFG cuyas reglas y probabilidades se obtienen a partir de un corpus de entrenamiento. 
-  * Deslexicalizar completamente la PCFG: en las reglas, reemplazar todas las entradas léxicas por su POS tag. Luego, el parser también debe ignorar las entradas léxicas y usar la oración de POS tags para parsear. 
-  * Entrenar y evaluar la UPCFG para todas las oraciones de largo menor o igual a 20. Reportar resultados y tiempos de evaluación en el README. 
- 
-Interfaz de ''UPCFG'' en ''upcfg.py'': 
- 
-<code python> 
-class UPCFG: 
-    """Unlexicalized PCFG. 
-    """ 
- 
-    def __init__(self, parsed_sents, start='sentence'): 
-        """ 
-        parsed_sents -- list of training trees. 
-        """ 
- 
-    def productions(self): 
-        """Returns the list of UPCFG probabilistic productions. 
-        """ 
- 
-    def parse(self, tagged_sent): 
-        """Parse a tagged sentence. 
- 
-        tagged_sent -- the tagged sentence (a list of pairs (word, tag)). 
-        """ 
-</code> 
- 
-Tests: 
- 
-  $ nosetests parsing/tests/test_upcfg.py  
- 
-Documentación: 
- 
-  * http://www.nltk.org/_modules/nltk/grammar.html 
- 
- 
-===== Ejercicio 4: Markovización Horizontal ===== 
- 
-  * Modificar la UPCFG para admitir el uso de Markovización Horizontal de orden ''n'' para un ''n'' dado (con el parámetro opcional ''horzMarkov''). 
-  * Agregar al script de entrenamiento (''train.py'') una opción de línea de comandos que habilite esta funcionalidad. 
-  * Entrenar y evaluar para varios valores de ''n'' (0, 1, 2 y 3), para las oraciones de largo menor o igual a 20. Reportar resultados y tiempos de evaluación en el README. 
- 
-Documentación: 
- 
-  * Videolecture [[https://class.coursera.org/nlp/lecture/173|The Return of Unlexicalized PCFGs]], minuto 4:40. 
- 
-===== Ejercicio 5 (punto bonus): CKY con Producciones Unarias ===== 
- 
-  * Agregar el algoritmo CKY soporte para producciones unarias. 
-  * Modificar la UPCFG para admitir el uso de producciones unarias (con el parámetro ''unary=True''). 
-  * Agregar al script de entrenamiento (''train.py'') una opción de línea de comandos que habilite esta funcionalidad. 
- 
-Documentación: 
- 
-  * Videolecture [[https://class.coursera.org/nlp/lecture/167|CKY Parsing]], minuto 13:25. 
materias/pln/practico3.1495122910.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)