Este proyecto implementa un pipeline completo de Procesamiento de Lenguaje Natural (PLN) y Machine Learning para analizar reseñas de películas extraídas de IMDb.
El objetivo es clasificar automáticamente las reseñas como positivas o negativas a partir del texto, empleando técnicas estadísticas y de aprendizaje supervisado.
- Python 3.9 o superior
- pip actualizado (
python -m pip install --upgrade pip) - Entorno virtual recomendado (
venvoconda)
git clone https://github.com/<TU_USUARIO>/imdb-sentiment-analysis.git
cd imdb-sentiment-analysispip install -r requirements.txtpython -m spacy download en_core_web_smEjecuta el pipeline principal (entrenamiento y evaluación del modelo):
python src/modeling_04.pyLos resultados (métricas, curvas ROC, matriz de confusión y CSVs de salida) se guardarán automáticamente en la carpeta output/.
Para generar las visualizaciones y tablas de apoyo:
python src/visualization_06.pyEsto creará:
prediction_distribution.pngprobability_histogram.pngwordcloud_positive.pngwordcloud_negative.pngword_freq_for_tableau.csv
en la carpeta output/.
El proyecto incluye una webapp simple para probar el modelo de manera interactiva.
Desde la raíz del proyecto:
python deployment/app.pyLuego abre tu navegador en:
http://127.0.0.1:8000
Desde allí podrás introducir reseñas y obtener la predicción en tiempo real.
Los resultados del modelo incluyen:
- Matriz de confusión normalizada
- Curva ROC y AUC
- Distribución de predicciones
- Nubes de palabras de reseñas positivas y negativas
Además, se ha creado un dashboard interactivo en Tableau Public para la exploración visual de los resultados.
👉 Ver Dashboard en Tableau Public
.
├── data/ # Datos originales y preprocesados
├── deployment/ # Webapp (app.py)
├── models/ # Modelos y pipelines entrenados
├── output/ # Resultados, métricas y visualizaciones
├── src/ # Scripts principales del pipeline
│ ├── preprocessing_02.py
│ ├── modeling_04.py
│ └── visualization_06.py
├── tests/ # Pruebas unitarias
├── requirements.txt
├── LICENSE
└── README.md
- Python 3.9+
- spaCy – Tokenización y lematización
- scikit-learn – Modelado y evaluación
- pandas, numpy – Manipulación de datos
- seaborn, matplotlib, wordcloud – Visualización
- Flask – Webapp interactiva
- Tableau Public – Visualización de resultados
Este proyecto utiliza el dataset IMDb Large Movie Review Dataset introducido por Maas et al. (2011).
Por favor, cite el trabajo original si reutiliza el dataset o los resultados asociados.
Referencia obligatoria:
Maas, Andrew L., Daly, Raymond E., Pham, Peter T., Huang, Dan, Ng, Andrew Y., and Potts, Christopher.
Learning Word Vectors for Sentiment Analysis.
Proceedings of the 49th Annual Meeting of the Association for Computational Linguistics: Human Language Technologies (ACL-HLT 2011), Portland, Oregon, USA.
pp. 142–150.
http://www.aclweb.org/anthology/P11-1015
Este dataset se distribuye únicamente con fines educativos y de investigación.

