6.7 KiB
FLUJOS
Plataforma de análisis y visualización de flujos de información. Conecta noticias, documentos y eventos históricos para entender la historia como una sucesión de eventos y combatir la desinformación.
Arquitectura
flujos/
├── FLUJOS/ # Aplicación principal (Node.js + Python)
│ ├── BACK_BACK/ # Servidor Express + Flask API + módulo OBSEI
│ └── VISUALIZACION/ # Frontend (Three.js, force-graph, GraphQL)
└── FLUJOS_DATOS/ # Pipeline de datos
├── FLUJOS_DATOS/ # Proyecto Django + scrapers + modelos Keras
├── NOTICIAS/ # Scraper y procesador de noticias
├── WIKIPEDIA/ # Extracción de artículos de Wikipedia
├── TORRENTS/ # Procesamiento de documentos WikiLeaks
├── COMPARACIONES/ # Scripts de comparación y similitud
└── SCRIPTS/ # Utilidades varias
Requisitos previos
Sistema
- Node.js >= 18.x
- Python >= 3.11
- MongoDB >= 6.x (corriendo en local o servidor remoto)
- Elasticsearch >= 8.x (opcional, para búsqueda avanzada)
Instalación de MongoDB (Ubuntu/Debian)
# Importar clave GPG
curl -fsSL https://pgp.mongodb.com/server-6.0.asc | sudo gpg -o /usr/share/keyrings/mongodb-server-6.0.gpg --dearmor
# Añadir repositorio
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-6.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
# Instalar
sudo apt update && sudo apt install -y mongodb-org
# Arrancar
sudo systemctl start mongod && sudo systemctl enable mongod
Instalación
1. Clonar el repositorio
git clone https://gitea.laenre.net/hacklab/FLUJOS.git
cd FLUJOS
git checkout production
2. Variables de entorno
cp .env.example FLUJOS/BACK_BACK/.env
Edita el archivo .env con tus valores:
| Variable | Descripción | Valor por defecto |
|---|---|---|
MONGO_URL |
URL de conexión a MongoDB | mongodb://localhost:27017 |
DB_NAME |
Nombre de la base de datos | FLUJOS_DATOS |
PORT |
Puerto del servidor Node.js | 3000 |
3. Instalar dependencias Node.js
# Dependencias del servidor principal
cd FLUJOS/BACK_BACK
npm install
# Dependencias del frontend
cd ../VISUALIZACION
npm install
4. Entorno virtual Python
cd ../../FLUJOS_DATOS
python3 -m venv myenv
source myenv/bin/activate
5. Instalar dependencias Python
# Dependencias del pipeline de datos
pip install transformers==4.10.0 tensorflow==2.17.0 scikit-learn==0.24.2 \
pandas==1.3.2 numpy==1.19.5 elasticsearch==7.13.4 nltk==3.6.2
# Módulo OBSEI (análisis y clasificación)
pip install obsei[all]
# Dependencias Django
cd FLUJOS_DATOS
pip install django
6. Migraciones Django (base de datos SQLite auxiliar)
cd FLUJOS_DATOS
python manage.py migrate
Base de datos MongoDB
La aplicación principal lee de la base de datos FLUJOS_DATOS en MongoDB. Las colecciones necesarias son:
Colecciones
| Colección | Descripción |
|---|---|
wikipedia |
Artículos de Wikipedia procesados y tokenizados |
noticias |
Noticias escrapeadas y procesadas |
torrents |
Documentos de WikiLeaks procesados |
comparaciones |
Relaciones de similitud entre documentos |
Esquema de documentos (wikipedia, noticias, torrents)
{
"archivo": "nombre_del_archivo.txt",
"tema": "tema principal",
"subtema": "subtematica",
"texto": "contenido del documento...",
"fecha": "2024-01-15T00:00:00Z"
}
Esquema de comparaciones
{
"noticia1": "nombre_archivo_1.txt",
"noticia2": "nombre_archivo_2.txt",
"porcentaje_similitud": 0.87
}
Nota: Las colecciones se pueblan ejecutando los scripts del pipeline de datos (ver sección siguiente). Los datos en bruto (archivos descargados) no están incluidos en el repositorio por su tamaño.
Pipeline de datos
Los scripts se ejecutan en este orden para poblar la base de datos:
1. Scraping → FLUJOS_DATOS/NOTICIAS/main_noticias.py
FLUJOS_DATOS/WIKIPEDIA/main.py
FLUJOS_DATOS/TORRENTS/procesar_torrents.py
2. Procesamiento → FLUJOS_DATOS/FLUJOS_DATOS/FLUJOS_DATOS/DATA/scraper.py
FLUJOS_DATOS/FLUJOS_DATOS/FLUJOS_DATOS/DATA/guarda_csv.py
3. Modelos Keras → FLUJOS_DATOS/FLUJOS_DATOS/FLUJOS_DATOS/KERAS/train_model.py
4. Comparaciones → FLUJOS_DATOS/COMPARACIONES/pipeline_completo.py
Consulta
FLUJOS_DATOS/DOCS/LEEME.txtyFLUJOS_DATOS/DOCS/comandos_clave.txtpara más detalle sobre cada paso.
Arrancar la aplicación
Servidor principal (Node.js)
cd FLUJOS/BACK_BACK
npm start
# o en desarrollo:
npm run dev
La aplicación estará disponible en http://localhost:3000
API Flask (análisis con TensorFlow)
cd FLUJOS/BACK_BACK
source ../../FLUJOS_DATOS/myenv/bin/activate
python flask_api/app.py
Estructura de la API
| Endpoint | Método | Descripción |
|---|---|---|
/ |
GET | Página principal |
/api/data |
GET | Devuelve nodos y enlaces para visualización |
Parámetros de /api/data
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
tema |
string | Sí | Tema principal a consultar |
subtematica |
string | No | Filtro por subtema |
palabraClave |
string | No | Búsqueda por texto libre |
fechaInicio |
date | No | Filtro fecha inicio (ISO 8601) |
fechaFin |
date | No | Filtro fecha fin (ISO 8601) |
nodos |
int | No | Límite de nodos (máx. 500, por defecto 100) |
complejidad |
float | No | % mínimo de similitud entre nodos (0-100) |
Contribuir
- Haz fork del repositorio en
gitea.laenre.net/hacklab/FLUJOS - Crea una rama desde
production - Haz tus cambios y abre un Pull Request
"Los gigantes vistos en perspectiva parecen marionetas."