22 - Proyecto final: Análisis de Sentimientos con Expresiones Regulares en Python

Lección 22 del curso Python Nivel Intermedio.

Introducción

En la lección anterior vimos las funciones search, findall y finditer de las Expresiones Regulares en Python, y con esto culminamos esta interesante herramienta que pondremos en práctica en esta última lección del curso.

En este proyecto 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.

Contenido exclusivo suscriptores

Suscríbete y accede al set de datos, código fuente y video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

¿Qué es el Procesamiento del Lenguaje Natural?

El Procesamiento del Lenguaje Natural (en Inglés Natural Language Processing, NLP) hace referencia al uso de técnicas computacionales para analizar el contenido del lenguaje natural, es decir el lenguaje que usamos cotidianamente nosotros los seres humanos (bien sea escrito o hablado).

El problema a resolver

El objetivo será implementar un programa que logre determinar si una frase escrita (en particular un Tweet) expresa un sentimiento positivo, negativo o neutral.

El set de datos

Para poder implementar nuestro programa usaremos el set TAS 2020, un set de datos que contiene más de 7. 000 Tweets en Español y escritos en diferentes variantes: España, Perú, Costa Rica, Chile, Uruguay y México.

Estas son las características en detalle del set de datos:

Uno de los grandes retos de programa a implementar está en el hecho de que cada Tweet está escrito en lenguaje informal, es decir que puede contener errores ortográficos, emojis u onomatopeyas (es decir palabras escritas que intentan describir el sonido de una palabra hablada, como boom, upssss, etc.)

Características del código a implementar

Teniendo en cuenta las características de nuestro dataset, implementaremos múltiples funciones para que al combinarlas y aplicarlas a un Tweet en particular logremos el objetivo del proyecto: clasificarlo en una de las tres posibles categorías.

A continuación describiremos estas funciones:

  1. limpiar_tweet: esta función aceptará como argumento de entrada un Tweet proveniente del set de entrenamiento, lo pre-procesará (eliminando elementos como el IDENTIFICADOR, el nombre de usuario, URLs, hashtags (#) y emojis, entre otros) y entregará a la salida el Tweet “limpio” (únicamente con palabras del lenguaje natural) y la categoría a la que este pertenece. Las [Expresiones Regulares] jugarán un papel fundamental en la implementación de esta función.
  2. analizar_tweets: con la totalidad de los Tweets pre-procesados analizaremos su contenido para determinar cuáles son las palabras más usadas en cada una de las categorías. El resultado de este análisis nos permitirá obtener cuatro listados:
    • stop_words: un listado con las palabras usadas más comúnmente independientemente de la categoría. Usualmente estas palabras pueden ser artículos y conjunciones (como las, los, y, desde, etcétera) y no determinan la categoría a la que pertenece el Tweet
    • positivas: un listado con las palabras usadas más comúnmente en los Tweets que expresan sentimientos positivos.
    • negativas : un listado con las palabras usadas más comúnmente en los Tweets que expresan sentimientos negativos.
    • neutrales : un listado con las palabras usadas más comúnmente en los Tweets que expresan sentimientos positivos.
  3. clasificar_tweet: está función aceptará como argumento de entrada un Tweet proveniente del set de prueba, lo pre-procesará (con la función limpiar_tweet) y usará los listados obtenidos con analizar_tweets para determinar a qué categoría pertenece (positiva, negativa o neutral). Esta clasificación dependerá de la relación entre las palabras positivas, negativas y neutrales encontradas en el Tweet.

Implementación

Veamos entonces paso a paso como implementar cada una de las funciones descritas anteriormente y cómo poner a prueba nuestro clasificador de Tweets:

Contenido exclusivo suscriptores

Recuerda suscribirte para acceder al set de datos, código fuente y video con la explicación detallada de esta lección. Además podrás disfrutar de todos los cursos de la Academia Online

Conclusión

¡Muy bien! Con 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á para el próximo curso de “Python Nivel Avanzado”.

Ver todas las lecciones de este curso