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 14:24] – created francolq | materias:pln:2019:practico1 [2025/11/15 13:47] (actual) – editor externo 127.0.0.1 | ||
|---|---|---|---|
| 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: (editor externo)
