materias:pln:2019:practico1
Diferencias
Muestra las diferencias entre dos versiones de la página.
Próxima revisión | Revisión previa | ||
materias:pln:2019:practico1 [2019/03/14 17:24] – created francolq | materias:pln:2019:practico1 [2019/04/01 21:30] (actual) – francolq | ||
---|---|---|---|
Línea 1: | Línea 1: | ||
====== Trabajo Práctico 1 - Modelado de Lenguaje ====== | ====== Trabajo Práctico 1 - Modelado de Lenguaje ====== | ||
- | [[materias: | + | [[materias: |
En este trabajo práctico implementaremos modelos de lenguaje y | En este trabajo práctico implementaremos modelos de lenguaje y | ||
realizaremos algunos experimentos con ellos. | realizaremos algunos experimentos con ellos. | ||
- | * Repositorio: | + | * Repositorio: |
- | * Fecha de entrega: <del>15/02</ | + | * Fecha de entrega: <del>28/3</ |
===== Instrucciones ===== | ===== Instrucciones ===== | ||
- | El código base para el proyecto se encuentra en el [[https:// | + | El código base para el proyecto se encuentra en el [[https:// |
La entrega del proyecto es a través de github. Por lo tanto, deben **hacer un " | La entrega del proyecto es a través de github. Por lo tanto, deben **hacer un " | ||
Línea 19: | Línea 19: | ||
Criterios de Evaluación: | Criterios de Evaluación: | ||
- | * Estilo de codificación (chequeado con flake8 y a ojo). | + | * Estilo de codificación (chequeado con pylint, |
* Diseño del código: uso de clases, herencia, etc. | * Diseño del código: uso de clases, herencia, etc. | ||
* Uso y aprobación de tests (provistos y definidos por uds.). | * Uso y aprobación de tests (provistos y definidos por uds.). | ||
Línea 34: | Línea 34: | ||
* Revisar a ojo la tokenización y segmentado en oraciones. Si es muy mala, probar otras formas de tokenización/ | * Revisar a ojo la tokenización y segmentado en oraciones. Si es muy mala, probar otras formas de tokenización/ | ||
* Modificar el script '' | * Modificar el script '' | ||
+ | |||
+ | |||
+ | Interfaz de '' | ||
+ | |||
+ | < | ||
+ | $ python languagemodeling/ | ||
+ | Train an n-gram model. | ||
+ | |||
+ | Usage: | ||
+ | train.py [-m < | ||
+ | train.py -h | --help | ||
+ | |||
+ | Options: | ||
+ | -n < | ||
+ | -m < | ||
+ | ngram: Unsmoothed n-grams. | ||
+ | addone: N-grams with add-one smoothing. | ||
+ | inter: N-grams with interpolation smoothing. | ||
+ | -o < | ||
+ | -h --help | ||
+ | </ | ||
+ | |||
Documentación: | Documentación: | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
* [[http:// | * [[http:// | ||
- | * [[http://nbviewer.jupyter.org/url/cs.famaf.unc.edu.ar/~francolq/Procesamiento%20B%C3%A1sico%20de%20Texto.ipynb# | + | * [[https://github.com/PLN-FaMAF/PLN-2019/blob/master/ |
* [[https:// | * [[https:// | ||
Línea 181: | Línea 204: | ||
* Separar el corpus en entrenamiento y test (90% y 10% resp.). | * Separar el corpus en entrenamiento y test (90% y 10% resp.). | ||
+ | * Implementar el cálculo de log-probability, | ||
+ | * Programar un script '' | ||
* Usar el script '' | * Usar el script '' | ||
* Usar el script '' | * Usar el script '' | ||
- | |||
- | Nueva interfaz de '' | ||
- | |||
- | < | ||
- | $ python languagemodeling/ | ||
- | Train an n-gram model. | ||
- | |||
- | Usage: | ||
- | train.py -n <n> [-m < | ||
- | train.py -h | --help | ||
- | |||
- | Options: | ||
- | -n < | ||
- | -m < | ||
- | ngram: Unsmoothed n-grams. | ||
- | addone: N-grams with add-one smoothing. | ||
- | -o < | ||
- | -h --help | ||
- | </ | ||
- | |||
Interfaz de '' | Interfaz de '' | ||
Línea 218: | Línea 223: | ||
-h --help | -h --help | ||
</ | </ | ||
+ | |||
+ | Documentación: | ||
+ | |||
+ | * {{ : | ||
+ | * Mails: | ||
+ | * [[https:// | ||
Línea 257: | Línea 268: | ||
(Course notes for NLP by Michael Collins, Columbia University)]] | (Course notes for NLP by Michael Collins, Columbia University)]] | ||
* **Especialmente** [[https:// | * **Especialmente** [[https:// | ||
- | * [[https:// | + | * {{ : |
* [[https:// | * [[https:// | ||
* [[http:// | * [[http:// | ||
Línea 266: | Línea 277: | ||
- | ===== Ejercicio 7 (punto bonus): Reordenamiento de Palabras ó Atribución de Autoría ===== | + | ===== Ejercicio 7: Suavizado por Back-Off con Discounting ===== |
+ | |||
+ | * Implementar el suavizado por back-off con discounting en '' | ||
+ | * Usar add-one para el nivel más bajo (unigramas). | ||
+ | * Usar datos held-out (un 10% de train) y barrido para elegir valor para beta. | ||
+ | * 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 '' | ||
+ | |||
+ | Interfaz de la clase '' | ||
+ | |||
+ | <code python> | ||
+ | class BackOffNGram: | ||
+ | |||
+ | def __init__(self, | ||
+ | """ | ||
+ | Back-off NGram model with discounting as described by Michael Collins. | ||
+ | |||
+ | n -- order of the model. | ||
+ | sents -- list of sentences, each one being a list of tokens. | ||
+ | beta -- discounting hyper-parameter (if not given, estimate using | ||
+ | held-out data). | ||
+ | addone -- whether to use addone smoothing (default: True). | ||
+ | """ | ||
+ | |||
+ | """ | ||
+ | Todos los métodos de NGram. | ||
+ | """ | ||
+ | |||
+ | def A(self, tokens): | ||
+ | """ | ||
+ | |||
+ | tokens -- the k-gram tuple. | ||
+ | """ | ||
+ | |||
+ | def alpha(self, tokens): | ||
+ | """ | ||
+ | |||
+ | tokens -- the k-gram tuple. | ||
+ | """ | ||
+ | |||
+ | def denom(self, tokens): | ||
+ | """ | ||
+ | |||
+ | tokens -- the k-gram tuple. | ||
+ | """ | ||
+ | </ | ||
+ | |||
+ | Tests: | ||
+ | |||
+ | $ nosetests languagemodeling/ | ||
+ | |||
+ | Documentación: | ||
+ | |||
+ | * [[http:// | ||
+ | (Course notes for NLP by Michael Collins, Columbia University)]] | ||
+ | * {{ : | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | |||
+ | |||
+ | ===== Ejercicio 8 (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/2019/practico1.1552584243.txt.gz · Última modificación: 2019/03/14 17:24 por francolq