sentiment-analysis-service / INSTALACION.md
jossy-gutierrez
feat: use HuggingFace Inference API with local model fallback
1212697
|
Raw
History Blame Contribute Delete
8.36 kB
# 📦 Guía de Instalación - Microservicio de Análisis de Sentimientos
## 📋 Prerrequisitos
Antes de comenzar, asegúrate de tener instalado:
- **Python 3.9 o superior** ([Descargar aquí](https://www.python.org/downloads/))
- **pip** (gestor de paquetes de Python, viene con Python)
- **PostgreSQL** (ya instalado para tu backend)
- **Node.js y npm** (ya instalado para tu backend)
### Verificar instalaciones
```bash
# Verificar Python
python --version
# O en algunos sistemas:
python3 --version
# Verificar pip
pip --version
# O:
pip3 --version
```
---
## 🐍 Instalación del Microservicio Python
### Paso 1: Navegar al directorio
```bash
cd D:\Projects\Personal\sentiment-analysis-service
```
### Paso 2: Crear entorno virtual (RECOMENDADO)
Un entorno virtual aísla las dependencias del proyecto del sistema.
**En Windows (Git Bash o CMD):**
```bash
# Crear entorno virtual
python -m venv venv
# Activar entorno virtual
# En Git Bash:
source venv/Scripts/activate
# En CMD:
venv\Scripts\activate
```
**En Windows (PowerShell):**
```powershell
# Crear entorno virtual
python -m venv venv
# Activar entorno virtual
venv\Scripts\Activate.ps1
```
**En Linux/Mac:**
```bash
# Crear entorno virtual
python3 -m venv venv
# Activar entorno virtual
source venv/bin/activate
```
Cuando el entorno esté activado, verás `(venv)` al inicio de tu línea de comando.
### Paso 3: Instalar dependencias
```bash
pip install -r requirements.txt
```
**Si requirements.txt no existe o falta algo, instalar manualmente:**
```bash
# Dependencias principales
pip install fastapi==0.104.1
pip install uvicorn==0.24.0
pip install transformers==4.35.2
pip install torch==2.1.0
pip install python-dotenv==1.0.0
# Nota: torch puede tardar varios minutos en descargar (es un paquete grande)
```
### Paso 4: Verificar instalación
```bash
# Ver paquetes instalados
pip list
# Deberías ver: fastapi, uvicorn, transformers, torch, python-dotenv
```
### Paso 5: Configurar variables de entorno
Crear archivo `.env` en la raíz del proyecto:
```bash
# En la carpeta sentiment-analysis-service, crear .env
touch .env
```
**Contenido del archivo `.env`:**
```env
# Modelo de análisis de sentimientos
MODEL_NAME=pysentimiento/robertuito-sentiment-analysis
# Dispositivo (cpu o cuda para GPU)
DEVICE=cpu
# Configuración del servidor
HOST=0.0.0.0
PORT=8000
# CORS - orígenes permitidos (tu frontend)
CORS_ORIGINS=http://localhost:5173,http://localhost:3000,http://localhost:5174
```
### Paso 6: Primera ejecución (descarga del modelo)
La primera vez que ejecutes el servicio, descargará el modelo de ML (~500MB).
```bash
# Iniciar el servicio
python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
```
**Salida esperada:**
```
INFO: Will watch for changes in these directories: ['D:\\Projects\\Personal\\sentiment-analysis-service']
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
INFO: Started reloader process [XXXX] using WatchFiles
INFO: Started server process [XXXX]
INFO: Waiting for application startup.
INFO: Loading model: pysentimiento/robertuito-sentiment-analysis
Downloading model... (esto puede tardar varios minutos)
INFO: Model loaded successfully on device: cpu
INFO: Service ready!
INFO: Application startup complete.
```
### Paso 7: Verificar que funciona
Abre tu navegador en: **http://localhost:8000**
Deberías ver:
```json
{
"service": "Sentiment Analysis API",
"version": "0.1.0",
"status": "running"
}
```
**Probar endpoint de salud:**
http://localhost:8000/health
```json
{
"status": "healthy",
"model_loaded": true,
"model_name": "pysentimiento/robertuito-sentiment-analysis"
}
```
---
## 🔧 Instalación del Backend (Node.js)
### Paso 1: Navegar al backend
```bash
cd D:\Projects\Personal\mdg-backend
```
### Paso 2: Instalar dependencia de axios
```bash
npm install axios
```
### Paso 3: Ejecutar migraciones
```bash
npm run migration:run
```
**Salida esperada:**
```
📝 Creando tabla analisis_sentimiento...
✅ Tabla analisis_sentimiento creada exitosamente
📝 Agregando campo estado_analisis a diario_emocional...
✅ Campo agregado exitosamente
```
### Paso 4: Configurar variables de entorno
Editar archivo `.env` del backend, agregar:
```env
# URL del microservicio de análisis
SENTIMENT_SERVICE_URL=http://localhost:8000
```
### Paso 5: Reiniciar el backend
```bash
npm run dev
```
---
## 🚀 Iniciar todo el sistema
### Orden recomendado:
1. **Base de datos (PostgreSQL)** - Debe estar corriendo
2. **Microservicio Python** - Terminal 1
3. **Backend Node.js** - Terminal 2
4. **Frontend React** - Terminal 3
### Terminal 1: Microservicio Python
```bash
cd D:\Projects\Personal\sentiment-analysis-service
source venv/Scripts/activate # Activar entorno virtual
python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
```
### Terminal 2: Backend Node.js
```bash
cd D:\Projects\Personal\mdg-backend
npm run dev
```
### Terminal 3: Frontend React
```bash
cd D:\Projects\Personal\proyecto-de-grado
npm run dev
```
---
## 🧪 Probar el sistema
### 1. Probar microservicio directamente
**Usando curl:**
```bash
curl -X POST "http://localhost:8000/analyze/enhanced" \
-H "Content-Type: application/json" \
-d '{"text": "Hoy me siento muy feliz porque logré terminar mi proyecto"}'
```
**Usando Postman o similar:**
- URL: `POST http://localhost:8000/analyze/enhanced`
- Body (JSON):
```json
{
"text": "Hoy me siento muy feliz porque logré terminar mi proyecto"
}
```
**Respuesta esperada:**
```json
{
"sentimiento_general": "positivo",
"score_positivo": 0.85,
"score_negativo": 0.10,
"score_neutral": 0.05,
"confianza": 0.85,
"modelo_usado": "pysentimiento/robertuito-sentiment-analysis",
"emocion_predominante": "Feliz",
"palabras_clave": [
{"word": "proyecto", "frequency": 1},
{"word": "logré", "frequency": 1},
{"word": "terminar", "frequency": 1}
],
"alertas": []
}
```
### 2. Probar desde el frontend
1. Inicia sesión como paciente
2. Ve a "Mis Tareas" → "Diario Emocional"
3. Escribe una entrada
4. Haz clic en "Guardar Entrada"
5. Espera unos segundos
6. Ve al tab de "Análisis de Sentimientos" (como psicólogo viendo al paciente)
---
## ❌ Problemas Comunes
### Error: "python no reconocido"
**Solución:**
- Instala Python desde python.org
- Asegúrate de marcar "Add Python to PATH" durante la instalación
- Reinicia tu terminal
### Error: "pip no reconocido"
**Solución:**
```bash
python -m pip --version
# Usar: python -m pip install -r requirements.txt
```
### Error: "Cannot find module transformers"
**Solución:**
```bash
# Asegúrate de tener el entorno virtual activado
source venv/Scripts/activate
pip install transformers torch
```
### Error: "Address already in use" (puerto 8000 ocupado)
**Solución:**
```bash
# Cambiar puerto en el comando
python -m uvicorn app.main:app --reload --port 8001
# Y actualizar en backend .env:
SENTIMENT_SERVICE_URL=http://localhost:8001
```
### Error: "Connection refused" desde backend
**Solución:**
- Verifica que el microservicio Python esté corriendo
- Verifica que el puerto sea correcto (8000)
- Verifica la variable SENTIMENT_SERVICE_URL en backend
### Modelo tarda mucho en descargar
**Solución:**
- Es normal, el modelo pesa ~500MB
- Se descarga solo la primera vez
- Ten paciencia, puede tardar 5-15 minutos dependiendo de tu conexión
### Error: "torch not found" o problemas con torch
**Solución (Windows):**
```bash
# Instalar versión específica de torch
pip install torch==2.1.0 --index-url https://download.pytorch.org/whl/cpu
```
---
## 🔄 Actualizar el sistema
### Si haces cambios en el código Python:
El servidor se reinicia automáticamente (modo `--reload`)
### Si haces cambios en el backend Node.js:
El servidor se reinicia automáticamente (modo `dev`)
### Si cambias las migraciones:
```bash
cd D:\Projects\Personal\mdg-backend
npm run migration:run
```
---
## 🛑 Detener los servicios
Para detener cualquier servicio, presiona:
```
Ctrl + C
```
Para desactivar el entorno virtual de Python:
```bash
deactivate
```
---
## 📚 Próximos pasos
Una vez instalado todo, consulta:
- `USO.md` - Guía de uso del sistema
- `API.md` - Documentación de la API
- `ARQUITECTURA_ANALISIS.md` - Arquitectura técnica