Construcción de un Modelo de Análisis de Sentimientos desde Cero con el Dataset SST-2

El Dataset SST-2: Un Estándar para el Análisis de Sentimientos

El dataset SST-2 (Stanford Sentiment Treebank v2) constituye uno de los benchmarks más reconocidos y utilizados en el ámbito del Procesamiento del Lenguaje Natural (PLN) para la tarea de análisis de sentimientos. Originado en el laboratorio de PLN de la Universidad de Stanford, este conjunto de datos se deriva de reseñas de películas del sitio web Rotten Tomatoes y está diseñado específicamente para tareas de clasificación binaria de sentimientos.

A diferencia de otros conjuntos de datos de clasificación de texto más convencionales, la particularidad de SST-2 radica en su rica estructura. Aunque la versión comúnmente utilizada para clasificación binaria solo mantiene etiquetas de sentimiento a nivel de oración (0 para negativo, 1 para positivo), su versión original incluía árboles de análisis sintáctico completos y etiquetas de sentimiento a nivel de frase. Esta granularidad inicial permitía a los modelos discernir matices, como la diferencia emocional entre "no es bueno" y simplemente "bueno". Esta herencia de diseño subyacente asegura una calidad de datos superior a la de muchos otros datasets.

El conjunto de datos comprende aproximadamente 67,000 ejemplos de entrenamiento, una cantidad considerable para tareas de PLN. Su división es estándar y robusta: cuenta con 872 muestras para el conjunto de validación y 1,821 muestras para el conjunto de prueba (cuyas etiquetas no son públicamente visibles). Esta segmentación es fundamental para evaluar el rendimiento del modelo de forma imparcial y mitigar el sobreajuste.

Preparación del Entorno y Carga de Datos

Configuración del Entorno Python

Para asegurar un entorno de desarrollo estable y evitar conflictos de dependencias, se recomienda encarecidamente utilizar un entorno virtual de Python. A continuación, se detallan los pasos para configurar un entorno con las versiones de librerías utilizadas en este ejemplo:

conda create -n entorno_sst2 python=3.8
conda activate entorno_sst2
pip install torch==1.12.1 transformers==4.25.1 datasets==2.8.0 
pip install pandas scikit-learn matplotlib

Es importante destacar que las versiones de la librería transformers pueden afectar la compatibilidad de las APIs. Las versiones especificadas son conocidas por su estabilidad. Para entornos como Google Colab, la instalación puede realizarse directamente con !pip install.

Estrategias para la Carga del Dataset

Existen varias formas eficientes de cargar el dataset SST-2, cada una adecuada para diferentes escenarios:

Opción 1: Carga con Hugging Face Datasets (Recomendado)

La librería datasets de Hugging Face es la forma más directa y robusta de acceder a SST-2, ya que maneja internamente la descarga, el preprocesamiento inicial y la estandarización del formato.

from datasets import load_dataset

datos_corpus = load_dataset("glue", "sst2")
print(datos_corpus["train"][:2]) # Visualizar las dos primeras entradas

Opción 2: Carga desde Archivos CSV Locales

Para entornos sin conexión a internet o cuando se trabaja con versiones personalizadas del dataset, se pueden cargar los datos desde archivos CSV locales. Se asume que los archivos sst2_train.csv y sst2_val.csv están disponibles.

import pandas as pd

df_entrenamiento = pd.read_csv("sst2_train.csv")
df_validacion = pd.read_csv("sst2_val.csv")

# Opcionalmente, mostrar las primeras filas
# print(df_entrenamiento.head())

Opción 3: Uso de TensorFlow Datasets

Si el flujo de trabajo principle se basa en TensorFlow, tensorflow_datasets ofrece una integración nativa para cargar SST-2.

import tensorflow_datasets as tfds

conjunto_tf = tfds.load("glue/sst2")

# Los conjuntos se acceden como diccionarios, por ejemplo:
# for ejemplo in conjunto_tf['train'].take(1):
#    print(ejemplo)

La opción de Hugging Face es generalmente preferible debido a su simplicidad y a que ya reuselve muchas de las complejidades relacionadas con la codificación y el formato de los datos subyacentes.

Etiquetas: SST-2 análisis de sentimientos nlp Hugging Face Datasets PyTorch

Publicado el 8-25 09:58