Lección 22 del curso Python Nivel Intermedio.
En la lección anterior vimos las funciones «search», «findall» y «finditer» de las Expresiones Regulares en Python, y con esto ya hemos visto los elementos más importantes de esta interesante herramienta que pondremos en práctica en esta última lección del curso.
En este proyecto final usaremos varias herramientas aprendidas en este curso, especialmente las Expresiones Regulares, para implementar un programa capaz de realizar un análisis básico del lenguaje humano (también llamado Lenguaje Natural).
En particular implementaremos un programa capaz de analizar sentimientos en el lenguaje escrito, es decir determinar si un Tweet contiene mensajes positivos, negativos o neutrales.
Comencemos entonces entendiendo qué es esto del procesamiento del lenguaje natural, cuál será el problema a resolver en este proyecto y cómo realizar la lectura del set de datos:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Como acabamos de ver en el video anterior, el Procesamiento del Lenguaje Natural (o NLP por sus siglas en Inglés: Natural Language Processing) se refiere al uso de técnicas computacionales para analizar el contenido del lenguaje natural, ya sea escrito o hablado.
Para este proyecto en particular el objetivo es implementar un programa que determine si un Tweet expresa un sentimiento positivo, negativo o neutral. Y para esto haremos uso del set de datos TAS 2020, que contiene más de 7.000 Tweets en idioma Español de diferentes variantes regionales.
El set incluye un conjunto de entrenamiento con 4.802 Tweets y un conjunto de prueba con 2.465 Tweets. Además, cada Tweet está compuesto por un identificador único, el contenido del Tweet y una categoría que indica si es negativo, neutral o positivo. Entonces el desafío de este proyecto radica en que los Tweets están escritos de manera informal, con errores ortográficos, emojis y onomatopeyas.
Así que buena parte del reto en este proyecto será el pre-procesamiento de los datos, del cual hablaremos a continuación:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Bien, acabamos de ver cómo implementar la función «limpiar_tweet», una función de pre-procesamiento que permite tomar un Tweet y eliminar no relevantes y preservar únicamente el texto con el contenido junto con su categoría correspondiente, lo que permitirá su posterior clasificación. ¡Y para ello hemos usado precisamente expresiones regulares!
Habiendo completado esta fase de pre-procesamiento veamos cómo implementar algunas funciones auxiliares que nos permitirán comenzar a analizar el contenido de los Tweets para su posterior clasificación:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Acabamos de crear la función «analizar_tweets» encargada, como su nombre lo indica, de analizar la totalidad de los Tweets preprocesados para determinar las palabras más utilizadas en cada categoría. Como resultado esta función generará cuatro listados:
- «stop_words»: un listado con las palabras comúnmente usadas independientemente de la categoría, como artículos y conjunciones.
- «positivas»: un listado con las palabras más comunes en Tweets que expresan sentimientos positivos.
- «negativas»: un listado con las palabras más comunes en Tweets que expresan sentimientos negativos.
- «neutrales»: un listado con las palabras más comunes en Tweets que expresan sentimientos neutrales.
Estos listados nos proporcionarán información valiosa para la clasificación de Tweets en las diferentes categorías. Así que veamos cómo implementar esta fase de clasificación y cómo poner a prueba nuestro clasificador:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
Acabamos de ver cómo implementar la función «clasificar_tweet» que acepta como entrada un Tweet del conjunto de prueba y, tras pre-procesarlo con la función «limpiar_tweet», hace uso de los listados obtenidos con la función «analizar_tweets» para determinar a qué categoría pertenece el Tweet (positiva, negativa o neutral).
Esta clasificación se basará en la relación entre las palabras positivas, negativas y neutrales encontradas en el Tweet. De esta manera, se podrá asignar una categoría al Tweet de acuerdo con la predominancia de las palabras asociadas a cada sentimiento.
Y con todo esto, y haciendo uso de varias de las herramientas aprendidas en este curso (como las listas y las tuplas, los diccionarios y los sets y las Expresiones Regulares), hemos logrado desarrollar una aplicación muy interesante que nos permite clasificar Tweets dependiendo del sentimiento que estén expresando.
Aunque existen formas mucho más sofisticadas y mucho más precisas, que usan técnicas de Machine Learning, este clasificador básico lo hace bastante, bastante bien.
Y con esto hemos terminado este curso de “Python Nivel Intermedio”. Los invito entonces a ver el video de cierre en donde haremos un resumen de lo aprendido en este curso y donde podrán también evaluar el curso y hablaremos de lo que vendrá en el próximo curso de Python Nivel Avanzado:
Contenido exclusivo para suscriptores
Si eres suscriptor accede en este enlace ó suscríbete a la Academia Online y accede a todo el contenido (lecciones en video, código fuente, sets de datos y descargas) de todos los cursos, proyectos y tutoriales.
¡De nuevo te felicito por haber llegado hasta este punto! y te invito a contactarme para dejarme tus comentarios sobre este curso y tus sugerencias para seguir mejorando el contenido de la Academia Online.
Te invito igualmente a culminar esta serie con el curso Python Nivel Avanzado. ¡Un saludo y nos vemos en el próximo curso!
Todas las lecciones del curso Python Nivel Intermedio
