Herramientas de usuario

Herramientas del sitio


materias:pln:2019:practico2

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:2019:practico2 [2019/04/08 18:07] francolqmaterias:pln:2019:practico2 [2019/04/29 21:36] (actual) francolq
Línea 6: Línea 6:
  
   * Repositorio: https://github.com/PLN-FaMAF/PLN-2019.   * Repositorio: https://github.com/PLN-FaMAF/PLN-2019.
-  * Fecha de entrega: 25/04 a las 23:59.+  * Fecha de entrega: <del>25/04</del> 2/5 a las 23:59.
  
  
Línea 51: Línea 51:
     * [[http://www.sepln.org/workshops/tass/2018/task-1|TASS 2018 Task 1]]     * [[http://www.sepln.org/workshops/tass/2018/task-1|TASS 2018 Task 1]]
       * [[http://www.sepln.org/workshops/tass/2018/task-1/private/evaluation/evaluate.php|Resultados]]       * [[http://www.sepln.org/workshops/tass/2018/task-1/private/evaluation/evaluate.php|Resultados]]
 +      * [[http://ceur-ws.org/Vol-2172/|Proceedings]]
 +      * [[http://ceur-ws.org/Vol-2172/p0_overview_tass2018.pdf|Overview]]
 +      * [[http://ceur-ws.org/Vol-2172/p2_elirf_tass2018.pdf|ELiRF-UPV (1st place)]]
 +      * [[http://ceur-ws.org/Vol-2172/p5_retuyt_tass2018.pdf|RETUYT (2nd place)]]
 +      * [[http://ceur-ws.org/Vol-2172/p1_atalaya_tass2018.pdf|Atalaya (3rd place)]]
     * [[https://competitions.codalab.org/competitions/21957|TASS 2019]]     * [[https://competitions.codalab.org/competitions/21957|TASS 2019]]
   * [[https://cs.famaf.unc.edu.ar/~francolq/criterios_polaridad.pdf|Etiquetado de polaridad]]   * [[https://cs.famaf.unc.edu.ar/~francolq/criterios_polaridad.pdf|Etiquetado de polaridad]]
Línea 90: Línea 95:
 ==== Lematización o Stemming ==== ==== Lematización o Stemming ====
  
-Modificar el tokenizador del ''CountVectorizer'' para que además haga stemming o lematización de las palabras. Una posibilidad es usar el Snowball stemmer que viene con NLTK.+Modificar el tokenizador del ''CountVectorizer'' para que además haga stemming o lematización de las palabras.
  
 +Recursos:
   * http://scikit-learn.org/stable/modules/feature_extraction.html#customizing-the-vectorizer-classes   * http://scikit-learn.org/stable/modules/feature_extraction.html#customizing-the-vectorizer-classes
-  * http://www.nltk.org/api/nltk.stem.html#module-nltk.stem.snowball+  * Stemmers: 
 +    * [[http://www.nltk.org/api/nltk.stem.html#module-nltk.stem.snowball|Snowball (NLTK)]] 
 +  * Lematizadores: 
 +    * [[https://spacy.io/|Spacy]] 
 +    * [[http://www.cis.uni-muenchen.de/~schmid/tools/TreeTagger/|Treetagger]] (con [[https://treetaggerwrapper.readthedocs.io/en/latest/|treetaggerwrapper]])
  
  
Línea 114: Línea 124:
 Para los tres tipos de clasificadores, pruebe diferentes combinaciones de parámetros y evalúe sobre el corpus de development. Reporte mejor resultado y configuración para cada clasificador. Para los tres tipos de clasificadores, pruebe diferentes combinaciones de parámetros y evalúe sobre el corpus de development. Reporte mejor resultado y configuración para cada clasificador.
  
-  * [[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html|maxent:]] Probar distintos valores para ''penalty'' y ''C''+  * [[http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html|Regresión Logística]] (maxent): Probar distintos valores para ''penalty'' y ''C''
-  * [[http://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html|svm:]]  Probar distintos valores para ''penalty'' y ''C''.+  * [[http://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html|SVM]] Probar distintos valores para ''penalty'' y ''C''.
  
 +Documentación:
 +
 +  * **[[https://github.com/PLN-FaMAF/PLN-2019/blob/master/notebooks/sentiment/05%20Grid%20Search.ipynb|Caso de estudio: 05 Grid Search]]**
   * [[http://scikit-learn.org/stable/modules/grid_search.html|Tuning the hyper-parameters of an estimator (scikit-learn)]]   * [[http://scikit-learn.org/stable/modules/grid_search.html|Tuning the hyper-parameters of an estimator (scikit-learn)]]
  
Línea 129: Línea 142:
     - ¿Hay features incorrectos, confusos o engañosos?     - ¿Hay features incorrectos, confusos o engañosos?
     - ¿De qué manera se podrían corregir? (no hace falta implementar)     - ¿De qué manera se podrían corregir? (no hace falta implementar)
 +
 +Documentación:
 +
 +  * **[[https://github.com/PLN-FaMAF/PLN-2019/blob/master/notebooks/sentiment/06%20Inspeccion%20de%20Modelos.ipynb|Caso de estudio: 06 Inspeccion de Modelos]]**
  
  
Línea 146: Línea 163:
   * Pruebe variaciones del texto del tweet, viendo de qué manera afecta las probabilidades.   * Pruebe variaciones del texto del tweet, viendo de qué manera afecta las probabilidades.
   * Proponga alguna modificación en el preprocesamiento que pueda mejorar la clasificación de la instancia.   * Proponga alguna modificación en el preprocesamiento que pueda mejorar la clasificación de la instancia.
 +
 +
 +Documentación:
 +
 +  * **[[https://github.com/PLN-FaMAF/PLN-2019/blob/master/notebooks/sentiment/07%20Analisis%20de%20Error.ipynb|Caso de estudio: 07 Analisis de Error]]**
  
  
Línea 154: Línea 176:
  
  
-/* 
 ===== Ejercicio 7 (punto bonus): Word Embeddings ===== ===== Ejercicio 7 (punto bonus): Word Embeddings =====
-*/ 
  
 +  * Obtener word embeddings pre-entrenados para el idioma castellano.
 +  * Programar un transformador de scikit-learn que, dado un tokenizador, calcule embeddings de tweets como el promedio de los embeddings de las palabras que lo componen.
 +  * Incorporar estos features al pipeline de clasificación de polaridad.
 +  * Entrenar, evaluar y analizar los resultados.
  
 +Recursos:
 +  * [[https://github.com/scikit-learn/scikit-learn/issues/8978|sklearn issue #8978: Vectorize text based on word embeddings]]
 +  * Embeddings:
 +    * [[https://fasttext.cc/|fastText]]
 +    * [[https://nlp.stanford.edu/projects/glove/|GloVe]]
  
-===== Ejercicio (punto bonus): Lexicón de Sentimientos =====+ 
 +/* 
 +===== Ejercicio 8 (punto bonus): Bolsa de Caracteres ===== 
 +*/ 
 + 
 + 
 +===== Ejercicio 8 (punto bonus): Lexicón de Sentimientos (y Emojis) =====
  
   * Obtener o elaborar un lexicón de palabras con polaridad positiva y negativa del castellano.   * Obtener o elaborar un lexicón de palabras con polaridad positiva y negativa del castellano.
-  * Programar dos features que calculen la cantidad de ocurrencias de palabras positivas y negativas en cada tweet.+  * Programar features que incorporen el uso de estas palabras en los tweets. Algunas opciones: 
 +    * Dos features, con conteos de cantidad de palabras positivas y negativas utilizadas. 
 +    * Escalar los valores (usar StandardScaler). 
 +    * Si el lexicón tiene valores de intensidad, usarlos de alguna manera.
   * Agregar estos nuevos features al pipeline (se puede usar FeatureUnion).   * Agregar estos nuevos features al pipeline (se puede usar FeatureUnion).
   * Entrenar, evaluar y analizar los resultados.   * Entrenar, evaluar y analizar los resultados.
Línea 170: Línea 208:
 Documentación: Documentación:
  
 +  * **[[https://github.com/PLN-FaMAF/PLN-2019/blob/master/notebooks/sentiment/08%20Lexicon%20de%20Sentimiento.ipynb|Caso de estudio: 08 Lexicon de Sentimiento]]**
   * Posibles fuentes de lexicones:   * Posibles fuentes de lexicones:
     * [[http://habla.dc.uba.ar/gravano/sdal.php?lang=esp|Spanish DAL: Diccionario de Afectos en Español (Agustín Gravano et al.)]]     * [[http://habla.dc.uba.ar/gravano/sdal.php?lang=esp|Spanish DAL: Diccionario de Afectos en Español (Agustín Gravano et al.)]]
Línea 175: Línea 214:
     * [[https://github.com/JoseCardonaFigueroa/sentiment-analysis-spanish/blob/master/data/subjectivity.csv]]     * [[https://github.com/JoseCardonaFigueroa/sentiment-analysis-spanish/blob/master/data/subjectivity.csv]]
     * [[http://www.lsi.us.es/~fermin/ML-SentiCon.zip|ML-SentiCon: A Layered, Multilingual Sentiment Lexicon (English, Spanish, Catalan, Galician, Basque)]]     * [[http://www.lsi.us.es/~fermin/ML-SentiCon.zip|ML-SentiCon: A Layered, Multilingual Sentiment Lexicon (English, Spanish, Catalan, Galician, Basque)]]
-  * [[http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.FeatureUnion.html|FeatureUnion (scikit-learn)]] +    * **[[http://kt.ijs.si/data/Emoji_sentiment_ranking/index.html|Emoji Sentiment Ranking v1.0]]** 
- +  * Scikit-learn: 
 +    * [[http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.FeatureUnion.html|FeatureUnion]] 
 +    * [[https://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html|StandardScaler]]
  
 /* /*
materias/pln/2019/practico2.1554746864.txt.gz · Última modificación: 2019/04/08 18:07 por francolq