Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa |
materias:pln:2019:practico2 [2019/04/11 20:43] – francolq | materias:pln:2019:practico2 [2019/04/29 21:36] (actual) – francolq |
---|
| |
* 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. |
| |
| |
* [[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]] |
==== 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]]) |
| |
| |
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: | Documentación: |
* 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]]** |
| |
| |
| |
| |
/* | |
===== 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 7 (punto bonus): Lexicón de Sentimientos (y Emojis) ===== | |
| /* |
| ===== 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. |
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.)]] |
* [[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://kt.ijs.si/data/Emoji_sentiment_ranking/index.html|Emoji Sentiment Ranking v1.0]]** | * **[[http://kt.ijs.si/data/Emoji_sentiment_ranking/index.html|Emoji Sentiment Ranking v1.0]]** |
* [[http://scikit-learn.org/stable/modules/generated/sklearn.pipeline.FeatureUnion.html|FeatureUnion (scikit-learn)]] | * 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]] |
| |
/* | /* |