Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa |
materias:pln:uba2018:practico1 [2018/02/08 19:01] – francolq | materias:pln:uba2018:practico1 [2018/08/10 03:03] (actual) – editor externo 127.0.0.1 |
---|
| |
* 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. |
| |
| |
| |
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://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)]] | * [[https://en.wikipedia.org/wiki/Pseudo-random_number_sampling#Finite_discrete_distributions|Pseudo-random number sampling (Wikipedia)]] |
* [[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)]] | |
| |
| |
* 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''): |
""" | """ |
</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'': |
</code> | </code> |
| |
Tests: | |
| |
$ nosetests languagemodeling/tests/test_addone_ngram.py | |
| |
| |
===== Ejercicio 5: Evaluación de Modelos de Lenguaje ===== | |
| |
* Separar el corpus en entrenamiento y test (90% y 10% resp.). | |
* Usar el script ''eval.py'' para calcular la perplejidad de los modelos entrenados en el ejercicio anterior. Reportar los resultados en el README. | |
| |
Interfaz de ''eval.py'': | Interfaz de ''eval.py'': |
* 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. |
* [[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]] |
| |
| |