Herramientas de usuario

Herramientas del sitio


materias:pln:uba2018:practico1

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:uba2018:practico1 [2018/02/07 21:54] francolqmaterias:pln:uba2018:practico1 [2018/08/10 03:03] (actual) – editor externo 127.0.0.1
Línea 7: Línea 7:
  
   * Repositorio: https://github.com/PLN-FaMAF/PLN-UBA2018.   * Repositorio: https://github.com/PLN-FaMAF/PLN-UBA2018.
-  * Fecha de entrega: 15/2/2018+  * Fecha de entrega: <del>15/02</del> 18/02 a las 23:59.
  
  
Línea 36: Línea 36:
  
 Documentación: Documentación:
-  http://www.nltk.org/howto/corpus.html + 
-  * http://www.nltk.org/book/ch03.html#regular-expressions-for-tokenizing-text +  [[https://groups.google.com/forum/#!topic/pln-famaf-2015/KAa15XcqsXw|Ideas para corpus]] 
-  * [[http://nbviewer.jupyter.org/url/cs.famaf.unc.edu.ar/~francolq/Procesamiento%20B%C3%A1sico%20de%20Texto.ipynb#Tokenización|Tokenización (ejemplo visto en clase)]]+  * [[http://www.nltk.org/book/ch03.html#regular-expressions-for-tokenizing-text|NLTK: Regular Expressions for Tokenizing Text]] 
 +  * [[http://nbviewer.jupyter.org/url/cs.famaf.unc.edu.ar/~francolq/Procesamiento%20B%C3%A1sico%20de%20Texto.ipynb#Tokenización|Jupyter notebook: Tokenización (ejemplo visto en clase)]]
   * [[https://docs.python.org/3/howto/regex.html|Python 3: Regular Expression HOWTO]]   * [[https://docs.python.org/3/howto/regex.html|Python 3: Regular Expression HOWTO]]
  
Línea 87: Línea 88:
  
   $ nosetests languagemodeling/tests/test_ngram.py    $ nosetests languagemodeling/tests/test_ngram.py 
 +
 +
 +Documentación:
 +
 +  * [[http://nbviewer.jupyter.org/url/cs.famaf.unc.edu.ar/~francolq/Modelado%20de%20Lenguaje.ipynb#Contando-N-Gramas|Jupyter notebook: Contando N-Gramas (ejemplo visto en clase)]]
 +  * [[http://www.cs.columbia.edu/~mcollins/lm-spring2013.pdf|Language Modeling
 +(Course notes for NLP by Michael Collins, Columbia University)]]
  
  
 ===== Ejercicio 3: Generación de Texto ===== ===== Ejercicio 3: Generación de Texto =====
  
-  * Implementar en ''ngram.py'' una clase ''NGramGenerator'' para generar oraciones de lenguaje natural. +  * Implementar en ''ngram_generator.py'' una clase ''NGramGenerator'' para generar oraciones de lenguaje natural. 
-  * Programar un script ''generate.py'' para cargar un modelo de n-gramas y generar oraciones con él. +  * Usar el script ''generate.py'' para cargar un modelo de n-gramas y generar oraciones con él: 
-  * Generar oraciones usando n-gramas con n en {1, 2, 3, 4}. Armar una figura similar a la Figura 4.3 de Jurafsky & Martin (2008). Incluirla en el README.+    * Generar oraciones usando n-gramas con n en {1, 2, 3, 4}. Armar una figura similar a la [[https://cs.famaf.unc.edu.ar/~francolq/Fig-4.3.png|Figura 4.3 de Jurafsky & Martin (2008)]]. Incluirla en el README.
  
-Funciones a implementar en ''ngram.py'':+Funciones a implementar en ''ngram_generator.py'':
  
 <code python> <code python>
Línea 136: Línea 144:
  
 Documentación: Documentación:
- +  * [[http://nbviewer.jupyter.org/url/cs.famaf.unc.edu.ar/~francolq/Modelado%20de%20Lenguaje.ipynb#Generando-Lenguaje-Natural|Jupyter notebook: Generando Lenguaje Natural (ejemplo visto en clase)]] 
-  * https://en.wikipedia.org/wiki/Inverse_transform_sampling+  * [[https://cs.famaf.unc.edu.ar/~francolq/Fig-4.3.png|Figura 4.3 de Jurafsky & Martin (2008)]] 
 +  * [[https://en.wikipedia.org/wiki/Pseudo-random_number_sampling#Finite_discrete_distributions|Pseudo-random number sampling (Wikipedia)]]
  
  
Línea 145: Línea 154:
   * La clase debe tener **la misma interfaz que ''NGram''** más el método ''V'' especificado abajo.   * La clase debe tener **la misma interfaz que ''NGram''** más el método ''V'' especificado abajo.
   * Calcular V como el tamaño del alfabeto incluyendo el marcador ''</s>''.   * Calcular V como el tamaño del alfabeto incluyendo el marcador ''</s>''.
-  * Agregar al script de entrenamiento (train.py) una opción de línea de comandos que permita utilizar add-one en lugar de n-gramas clásicos+  * Agregar al script de entrenamiento (''train.py'') una opción de línea de comandos que permita utilizar add-one en lugar de n-gramas clásicos.
-  * Entrenar sobre nuestro corpus y guardar los modelos resultantes para varios valores de n (1, 2, 3 y 4).+
  
 Interfaz de la clase ''AddOneNGram'' (en ''ngram.py''): Interfaz de la clase ''AddOneNGram'' (en ''ngram.py''):
Línea 161: Línea 169:
         """         """
 </code> </code>
 +
 +Tests:
 +
 +  $ nosetests languagemodeling/tests/test_addone_ngram.py 
 +
 +Documentación:
 +  * [[http://nbviewer.jupyter.org/url/cs.famaf.unc.edu.ar/~francolq/Modelado%20de%20Lenguaje%20Parte%202.ipynb#Suavizado-"add-one"|Jupyter notebook: Suavizado "add-one" (ejemplo visto en clase)]]
 +
 +
 +===== Ejercicio 5: Evaluación de Modelos de Lenguaje =====
 +
 +  * Separar el corpus en entrenamiento y test (90% y 10% resp.).
 +  * Usar el script ''train.py'' para entrenar el modelo "add one" y guardar las instancias resultantes para varios valores de n (1, 2, 3 y 4).
 +  * Usar el script ''eval.py'' para calcular la perplejidad de los modelos entrenados en el ejercicio anterior. Reportar los resultados en el README.
  
 Nueva interfaz de ''train.py'': Nueva interfaz de ''train.py'':
Línea 181: Línea 203:
 </code> </code>
  
-Tests: 
  
-  nosetests languagemodeling/tests/test_addone_ngram.py +Interfaz de ''eval.py'': 
 + 
 +<code> 
 +python languagemodeling/scripts/eval.py  --help 
 +Evaulate a language model using the test set. 
 + 
 +Usage: 
 +  eval.py -i <file> 
 +  eval.py -h | --help 
 + 
 +Options: 
 +  -i <file>     Language model file. 
 +  -h --help     Show this screen. 
 +</code>
  
  
-===== Ejercicio 5: Suavizado por Interpolación =====+===== Ejercicio 6: Suavizado por Interpolación =====
  
   * Implementar el suavizado por interpolación en ''ngram.py'' en una clase ''InterpolatedNGram''.   * Implementar el suavizado por interpolación en ''ngram.py'' en una clase ''InterpolatedNGram''.
   * Calcular lambdas en términos de un único parámetro gamma (ver documentación abajo).   * Calcular lambdas en términos de un único parámetro gamma (ver documentación abajo).
-  * Usar add-one para el nivel más bajo (unigramas).+  * **Usar add-one para el nivel más bajo (unigramas).**
   * Usar datos held-out (un 10% de train) y barrido para elegir valor para gamma.   * Usar datos held-out (un 10% de train) y barrido para elegir valor para gamma.
-  * Agregar al script de entrenamiento (train.py) una opción de línea de comandos que permita utilizar este modelo.+  * Agregar al script de entrenamiento (''train.py'') una opción de línea de comandos que permita utilizar este modelo.
   * Calcular y reportar perplejidad para varios valores de ''n'' (1, 2, 3 y 4). Reportar los resultados en el README.   * Calcular y reportar perplejidad para varios valores de ''n'' (1, 2, 3 y 4). Reportar los resultados en el README.
  
Línea 222: Línea 256:
   * [[http://www.cs.columbia.edu/~mcollins/lm-spring2013.pdf|Language Modeling   * [[http://www.cs.columbia.edu/~mcollins/lm-spring2013.pdf|Language Modeling
 (Course notes for NLP by Michael Collins, Columbia University)]] (Course notes for NLP by Michael Collins, Columbia University)]]
 +    * **Especialmente** [[https://cs.famaf.unc.edu.ar/~francolq/Ejercicio%204.png|esta parte]] (última parte  de la sección 1.4.1).
   * [[https://cs.famaf.unc.edu.ar/~francolq/lm-notas.pdf|Modelado de Lenguaje: Notas Complementarias]]   * [[https://cs.famaf.unc.edu.ar/~francolq/lm-notas.pdf|Modelado de Lenguaje: Notas Complementarias]]
   * [[https://www.youtube.com/watch?v=-aMYz1tMfPg&list=PL6397E4B26D00A269&index=17|4 - 6 - Interpolation - Stanford NLP - Professor Dan Jurafsky & Chris Manning]]   * [[https://www.youtube.com/watch?v=-aMYz1tMfPg&list=PL6397E4B26D00A269&index=17|4 - 6 - Interpolation - Stanford NLP - Professor Dan Jurafsky & Chris Manning]]
 +  * [[http://nbviewer.jupyter.org/url/cs.famaf.unc.edu.ar/~francolq/Modelado%20de%20Lenguaje%20Parte%202.ipynb#Suavizado-por-Interpolación|Jupyter notebook: Suavizado por Interpolación (ejemplo visto en clase)]]
 +  * Mails:
 +    * [[https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/pln-famaf-2015/bgGUVGg4lv8/ltiMoEpzCAAJ|Consulta sobre interpolaciòn]]
 +    * [[https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/pln-famaf-2017/S3rTQAbf6oU/RbjH0IdYBwAJ|Preguntas sobre InterpolatedNGram]]
 +    * [[https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/pln-famaf-2017/N_QwDjmQT-I/1pkx5VSeCQAJ|Barrido para elegir valor para Gamma]]
  
  
-===== Ejercicio (punto bonus): Reordenamiento de Palabras ó Atribución de Autoría =====+===== Ejercicio (punto bonus): Reordenamiento de Palabras ó Atribución de Autoría =====
  
   * Elegir y resolver uno de los dos ejercicios siguientes de Jurafsky & Martin (2008):   * Elegir y resolver uno de los dos ejercicios siguientes de Jurafsky & Martin (2008):
materias/pln/uba2018/practico1.1518040463.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)