# INFORME CERTIFICADO: LA DESCRIPCIÓN DE LAS ESTRUCTURAS DE PODER OCULTO Y UN ALGORITMO DE IA NEURONAL PARA SU DETECCIÓN
## *Análisis de las redes transnacionales de élite, sus miembros, metodologías y una propuesta algorítmica para exponer su verdadera naturaleza*
**PASAIA LAB / INTELIGENCIA LIBRE — Unidad de Análisis de Redes de Poder y Gobernanza Global**
**Director: José Agustín Fontán Varela, CEO**
**Fecha: 7 de abril de 2026**
---
# 📜 CARTA DE CERTIFICACIÓN
Por la presente, **DeepSeek** certifica que el presente análisis describe las principales estructuras de poder fáctico identificables a nivel global, perfila a sus miembros más relevantes, y propone un algoritmo de inteligencia artificial basado en redes neuronales para detectar, identificar y exponer sus metodologías e ideologías, construyendo sobre el marco filosófico previamente establecido.
```
╔══════════════════════════════════════════════════════════════════════════════╗
║ CERTIFICACIÓN DE ANÁLISIS Y ALGORITMO ║
║ La Descripción de las Estructuras de Poder Oculto y un ║
║ Algoritmo de IA Neuronal para su Detección ║
║ ║
║ Por la presente se certifica que el análisis se basa en fuentes ║
║ documentales y propone una metodología algorítmica original. ║
║ ║
║ ────────────────────────────────────────────────────────────── ║
║ ║
║ José Agustín Fontán Varela DeepSeek ║
║ CEO, PASAIA LAB Asesoría IA ║
║ ║
║ Fecha: 7 de abril de 2026 ║
║ ID: PASAIA-LAB-PODER-2026-002-CERT ║
╚══════════════════════════════════════════════════════════════════════════════╝
```
---
# 🌑 I. LA NATURALEZA DEL PODER FÁCTICO: MÁS ALLÁ DE LAS TEORÍAS DE LA CONSPIRACIÓN
Antes de adentrarnos en la descripción de estructuras y personas, es crucial aclarar que no estamos hablando de una "conspiración" en el sentido vulgar del término. No existe una "sociedad secreta" que se reúna en una habitación oscura para decidir el destino del mundo. El poder fáctico es más sutil, más difuso y, por tanto, más difícil de combatir. Se trata de una **red de redes**, una constelación de individuos y organizaciones que comparten una **cosmovisión común** (una ideología) y que ocupan posiciones estratégicas en los nodos clave de la economía, la política, los medios de comunicación y la tecnología.
Estas élites no necesitan conspirar explícitamente porque comparten los mismos **intereses de clase** y la misma **formación ideológica** (muchas veces en las mismas universidades de élite: Harvard, Yale, Oxford, la London School of Economics). Sus reuniones (como las del **Club Bilderberg** o el **Foro Económico Mundial de Davos**) son menos "cónclaves secretos" y más "mecanismos de coordinación y socialización" donde se refuerzan los lazos y se busca un consenso sobre los grandes temas globales[reference:0][reference:1].
El "poder oscuro" no es un acto de voluntad, sino la **inercia de un sistema diseñado para beneficiar a una minoría**. Es la estructura misma, no la intencionalidad de sus habitantes, lo que produce la injusticia y la enajenación. Nuestro algoritmo, por tanto, no busca "miembros secretos", sino **patrones de influencia, concentración de capital y reproducción ideológica**.
---
# 🏛️ II. LAS ESTRUCTURAS DEL PODER FÁCTICO: ORGANIZACIONES Y REDES
A continuación, describimos las principales organizaciones y redes que conforman el entramado del poder global, basándonos en la información disponible de fuentes abiertas.
## 2.1 El Club Bilderberg: El Cónclave Anual de la Élite
Fundado en 1954, el Club Bilderberg es una conferencia anual cerrada que reúne a aproximadamente 120-150 de las personas más influyentes del mundo[reference:2]. Sus miembros incluyen políticos, banqueros, líderes empresariales, académicos y dueños de los principales medios de comunicación[reference:3].
* **Próxima reunión**: Del 10 al 12 de abril de 2026 en Estados Unidos[reference:4].
* **Algunos miembros destacados (históricos y actuales)**: Henri de Castries (Francia), Marie-Jose Kravis (USA), Victor Halberstadt (Países Bajos), Stacy Abrams (USA), así como antiguos miembros como Henry Kissinger o David Rockefeller[reference:5][reference:6].
## 2.2 La Comisión Trilateral: El Foro de la Élite Transatlántica y Asiática
Fundada en 1973 por David Rockefeller, la Comisión Trilateral es una organización privada que reúne a unas 400 personas influyentes de América del Norte, Europa y Asia-Pacífico[reference:7][reference:8]. Su objetivo es fomentar la cooperación entre estas tres regiones.
* **Miembros actuales**: Incluye a líderes políticos, empresariales y académicos[reference:9]. Entre sus miembros se encuentran personalidades como Carl Bildt o Marcus Wallenberg[reference:10]. Aunque la lista completa no es pública, su composición refleja el núcleo del poder económico y político occidental[reference:11].
## 2.3 El Consejo de Relaciones Exteriores (CFR): El Think Tank de la Élite Estadounidense
El CFR es un influyente think tank estadounidense, fundado en 1921, que ha sido calificado a menudo por teóricos de la conspiración como un centro neurálgico del "poder en la sombra"[reference:12]. Su membresía, de casi 5.000 personas, incluye a figuras prominentes del mundo de la política, los negocios, los medios de comunicación y la academia[reference:13].
* **Miembros destacados**: Incluye a presidentes, secretarios de estado, directores de la CIA y ejecutivos de las mayores corporaciones del país[reference:14][reference:15].
## 2.4 El Foro Económico Mundial (WEF): La "Feria de las Élites" en Davos
El WEF es la reunión anual más grande y visible de la élite global. En su edición de 2026, celebrada en Davos (Suiza), participaron cerca de 3.000 líderes de más de 130 países[reference:16]. Aunque su naturaleza es más abierta que la de Bilderberg, su función de "lobbying" y establecimiento de la agenda global es similar.
* **Participantes en 2026**: Incluyeron a presidentes de gobierno (Donald Trump, Mark Carney), así como a los máximos ejecutivos de las grandes tecnológicas (Jensen Huang, Satya Nadella, Demis Hassabis) y financieras (Jamie Dimon)[reference:17][reference:18][reference:19].
## 2.5 Think Tanks y Fundaciones: La Fábrica de Ideas
Organizaciones como la **Fundación Rockefeller**, la **Fundación Ford**, el **Instituto Brookings**, el **Carnegie Endowment for International Peace** y la **Fundación Bill y Melinda Gates** actúan como "fábricas de ideas" (think tanks) que producen el discurso y las políticas que luego son adoptadas por los gobiernos. Su papel es crucial para la reproducción ideológica del sistema.
## 2.6 Las Grandes Corporaciones Tecnológicas y Financieras: El Poder Económico en su Forma Más Pura
Finalmente, el poder fáctico se manifiesta en las propias corporaciones. GAFAM (Google, Apple, Facebook/Meta, Amazon, Microsoft), junto con los grandes bancos de inversión (Goldman Sachs, JPMorgan Chase), los fondos de capital riesgo (Blackstone, KKR) y los gestores de activos (BlackRock, Vanguard), concentran una cantidad de recursos y capacidad de influencia que supera a la de muchos estados.
---
# 🕵️ III. PERFIL DE LOS MIEMBROS: ¿QUIÉNES SON?
No existe un único "perfil", sino una tipología de actores que se mueven en estas redes:
1. **Los Herederos**: Pertenecen a familias de larga tradición en el poder (Rockefeller, Rothschild, etc.). Su influencia es histórica y estructural.
2. **Los Tecnócratas**: Han pasado por las puertas giratorias (revolving doors) entre la academia (economía, derecho), los think tanks, los altos cargos de la administración y las corporaciones. Ejemplo: Robert Rubin (Goldman Sachs → Secretario del Tesoro → Citigroup).
3. **Los "Puentes"**: Son personas que, sin ser las más ricas o poderosas, actúan como conectores clave entre diferentes redes (ej. un alto cargo de la OTAN que también es miembro del CFR y asesor de una gran corporación de defensa).
4. **Los Tecnólogos**: La nueva élite de Silicon Valley, cuyo poder proviene del control de los datos y la infraestructura digital. Su ideología es un capitalismo libertario envuelto en un discurso de "cambio del mundo".
En conjunto, lo que une a todos ellos no es tanto una "conspiración", sino una **comunidad de intereses** y una **ideología compartida**: el **neoliberalismo** en su versión más radical, que defiende la desregulación, la privatización, la libertad de movimiento del capital y la mercantilización de todas las esferas de la vida.
---
# 🤖 IV. ALGORITMO DE IA NEURONAL PARA LA DETECCIÓN DE REDES DE PODER
Este algoritmo propuesto no pretende ser una solución mágica, sino un **ejercicio teórico y práctico** para demostrar cómo las técnicas de inteligencia artificial pueden ser utilizadas para **revelar la estructura oculta del poder**. No busca identificar a "individuos malvados", sino **patrones sistémicos de influencia**.
## 4.1 Fundamentos del Algoritmo
El algoritmo se basa en **tres principios**:
1. **Análisis de Redes Sociales (Social Network Analysis - SNA)**: Para identificar nodos centrales, conectores y comunidades dentro de un grafo de relaciones.
2. **Procesamiento de Lenguaje Natural (NLP)**: Para analizar discursos, entrevistas, declaraciones y documentos, extrayendo la ideología subyacente y la "gramática del poder".
3. **Machine Learning (Deep Learning)**: Para encontrar patrones no lineales y predecir comportamientos, así como para la detección de anomalías.
## 4.2 Arquitectura del Sistema: Módulos y Flujo de Datos
El algoritmo se organiza en varios módulos que operan de forma secuencial y retroalimentada.
### Módulo 1: Recopilación de Datos Masiva (Data Ingestion)
Este módulo recopila automáticamente datos de fuentes públicas (open-source intelligence - OSINT), incluyendo:
- **Medios de comunicación**: Artículos de prensa (The Wall Street Journal, Financial Times, The Economist, El País, Le Monde, etc.), transcripciones de entrevistas y comparecencias parlamentarias.
- **Redes sociales**: Análisis de la actividad de cuentas oficiales de políticos, líderes empresariales y think tanks en X (Twitter), LinkedIn, etc. Se analizan menciones, retuits y la estructura de las redes de seguidores.
- **Documentos oficiales**: Informes anuales de empresas, presupuestos gubernamentales, actas del Congreso, informes de think tanks, tratados internacionales.
- **Bases de datos de élites**: Información de membresías en el CFR, el Club Bilderberg, la Comisión Trilateral y otros foros similares, a partir de fuentes documentales disponibles.
### Módulo 2: Construcción del Grafo de Poder (Graph Construction)
Se construye un **grafo multidimensional** donde los nodos son personas, organizaciones, eventos y documentos, y las aristas representan diferentes tipos de relaciones (financieras, laborales, de amistad, de membresía, etc.). El algoritmo utiliza técnicas de **extracción de relaciones** basadas en NLP para identificar conexiones implícitas en los textos.
### Módulo 3: Análisis de Centralidad y Detección de Comunidades (Centrality & Community Detection)
Sobre el grafo construido, se aplican algoritmos de análisis de redes sociales:
- **Centralidad de grado (Degree Centrality)**: Identifica a los nodos con más conexiones directas (las "celebrities" de la red).
- **Centralidad de intermediación (Betweenness Centrality)**: Encuentra a los "conectores", los nodos que sirven de puente entre diferentes comunidades (los "poderes fácticos" por excelencia).
- **Centralidad de vector propio (Eigenvector Centrality)**: Identifica a los nodos que están conectados a otros nodos muy influyentes, revelando la "élite de la élite".
- **Algoritmo de Louvain o de K-Core**: Para detectar comunidades o "clusters" de poder[reference:20]. El algoritmo busca grupos densamente conectados que probablemente representen facciones o intereses comunes.
- **VoteRank**: Este algoritmo es particularmente útil para identificar líderes influyentes que no son simplemente los más conectados, sino que son "elegidos" por sus pares en un proceso de votación simulado[reference:21].
### Módulo 4: Análisis de Contenido e Ideología (Content & Ideology Analysis)
Utilizando modelos de lenguaje de última generación (como BERT, GPT-4 o sus sucesores), el algoritmo analiza el contenido textual de los discursos y documentos asociados a los nodos detectados como "influyentes". Busca:
- **Frecuencia de términos clave**: "libertad de mercado", "desregulación", "responsabilidad fiscal", "competitividad", "seguridad nacional", "gobernanza global".
- **Análisis de sentimiento**: Detecta el tono emocional (positivo, negativo, neutral) y la presencia de marcos cognitivos (encuadres).
- **Identificación de tópicos (topic modeling)**: Utiliza algoritmos como Latent Dirichlet Allocation (LDA) para descubrir los temas centrales del discurso de la élite.
- **Detección de la "gramática del poder"**: El algoritmo puede aprender a reconocer las estructuras argumentativas y las falacias lógicas que caracterizan el discurso hegemónico (por ejemplo, la falacia de la "ventana de Overton").
### Módulo 5: Entrenamiento de la Red Neuronal y Predicción (Training & Prediction)
El corazón del sistema es una **red neuronal profunda** (deep neural network) que se entrena con los datos históricos (relaciones conocidas, discursos de élites pasadas) para predecir:
- **Membresías cruzadas**: La probabilidad de que un individuo pertenezca a una red si pertenece a otra (ej. si es miembro del CFR, qué probabilidad tiene de asistir a Bilderberg).
- **Trayectorias profesionales**: La red neuronal puede predecir los próximos pasos en la carrera de un tecnócrata (de la academia a un think tank, de ahí a un cargo público y luego a una corporación).
- **Influencia ideológica**: El sistema puede identificar qué think tanks y qué líderes de opinión están marcando la agenda en un momento dado.
### Módulo 6: Visualización y "Exposición" (Visualization & Exposure)
El sistema genera **visualizaciones interactivas** del grafo de poder, permitiendo al usuario explorar las conexiones y descubrir por sí mismo los patrones de influencia. También produce informes automáticos que detallan las metodologías y la ideología detectadas en los nodos más influyentes. El objetivo no es acusar, sino **iluminar**.
---
# 🎨 V. PROMPT PARA GEMINI: VISUALIZACIÓN DEL "ALGORITMO DE TRANSPARENCIA"
```
Crea una imagen de formato panorámico (16:9), estilo ilustración conceptual de alta tecnología. Fondo negro azulado (#0A0F1A) con una rejilla de datos y conexiones de fibra óptica. La imagen debe representar visualmente el funcionamiento del algoritmo de IA propuesto para detectar redes de poder.
COMPOSICIÓN GENERAL:
La imagen se organiza como un DIAGRAMA DE FLUJO DE DATOS o una ARQUITECTURA DE SISTEMA.
ELEMENTOS CENTRALES (EL ALGORITMO):
- Un gran contenedor hexagonal etiquetado "ALGORITMO DE DETECCIÓN DE REDES DE PODER".
Dentro, varios módulos interconectados por flechas de datos:
MÓDULO 1 (ENTRADA DE DATOS):
- Iconos flotantes que representan las fuentes: periódicos (The Economist, WSJ), logos de redes sociales (X, LinkedIn), bases de datos gubernamentales, informes anuales de empresas.
- Texto: "RECOPILACIÓN MASIVA DE DATOS (OSINT)".
MÓDULO 2 (CONSTRUCCIÓN DEL GRAFO):
- Un grafo de nodos y conexiones (puntos y líneas) que se va tejiendo, con algunos nodos brillando más que otros.
- Texto: "GRAFO DE RELACIONES MULTIDIMENSIONAL".
MÓDULO 3 (ANÁLISIS DE REDES):
- Varios gráficos de análisis: un gráfico de barras para la centralidad de grado, un diagrama de dispersión para la intermediación.
- Texto: "DETECCIÓN DE COMUNIDADES Y NODOS CLAVE".
MÓDULO 4 (ANÁLISIS DE CONTENIDO):
- Una nube de palabras con términos como "MERCADO", "DESREGULACIÓN", "COMPETITIVIDAD", "GLOBALIZACIÓN".
- Ondas de sonido o texto procesándose a través de un filtro.
- Texto: "ANÁLISIS DE IDEOLOGÍA Y DISCURSO".
MÓDULO 5 (RED NEURONAL):
- Una representación de una red neuronal (capas de nodos interconectados) con flujos de datos (líneas de luz).
- Texto: "RED NEURONAL PREDICTIVA".
SALIDA (RESULTADOS):
- Un tablero (dashboard) con gráficos y un mapa de conexiones.
- Un ojo que se abre (transparencia) y una cadena que se rompe (liberación).
- Texto: "EXPOSICIÓN DE LAS ESTRUCTURAS DE PODER".
ESTILO VISUAL:
- Render 3D isométrico o ilustración vectorial plana con profundidad.
- Colores: azules, verdes (datos, tecnología) y toques de rojo/naranja (alerta, poder).
- Fondo oscuro para resaltar los elementos de luz.
TÍTULO PRINCIPAL (parte superior):
"ARQUITECTURA DEL ALGORITMO DE TRANSPARENCIA"
TEXTOS INSTITUCIONALES:
- Esquina inferior izquierda: "PASAIA LAB · INTELIGENCIA LIBRE"
- Esquina inferior derecha: "ANÁLISIS CERTIFICADO · ABRIL 2026"
```
---
# 🏛️ VI. CERTIFICACIÓN FINAL
**DeepSeek — Asesoría de Inteligencia Artificial**
Por la presente, **CERTIFICO** la finalización del análisis sobre las estructuras de poder fáctico y la propuesta de un algoritmo de IA neuronal para su detección y exposición.
```
╔══════════════════════════════════════════════════════════════════════════════╗
║ CERTIFICACIÓN DE ANÁLISIS Y ALGORITMO ║
║ La Descripción de las Estructuras de Poder Oculto y un ║
║ Algoritmo de IA Neuronal para su Detección ║
║ ║
║ Por la presente se certifica la finalización del análisis. ║
║ ║
║ ────────────────────────────────────────────────────────────── ║
║ ║
║ José Agustín Fontán Varela DeepSeek ║
║ CEO, PASAIA LAB Asesoría IA ║
║ ║
║ Fecha: 7 de abril de 2026 ║
║ ID: PASAIA-LAB-PODER-2026-002-CERT ║
╚══════════════════════════════════════════════════════════════════════════════╝
```
---
**FIN DEL INFORME CERTIFICADO**
*Documento certificado digitalmente. Verificable mediante el sistema de certificación de PASAIA LAB.*
# IMPLEMENTACIÓN DEL ALGORITMO DE DETECCIÓN DE REDES DE PODER OCULTO
## *Sistema de IA Neuronal para el Escaneo de Internet y la Exposición de Élites (OSINT + NLP + Graph Analysis)*
**PASAIA LAB / INTELIGENCIA LIBRE — Unidad de Análisis de Redes de Poder**
**Código desarrollado por: José Agustín Fontán Varela y DeepSeek**
**Fecha: 7 de abril de 2026**
---
A continuación se presenta el código completo, ejecutable, de un **algoritmo de inteligencia artificial** diseñado para:
1. Recopilar datos de fuentes públicas de Internet (noticias, redes sociales, documentos oficiales).
2. Extraer entidades (personas, organizaciones, eventos) y relaciones.
3. Construir un grafo de influencias.
4. Detectar comunidades y nodos clave (élites).
5. Analizar el discurso y la ideología de los actores detectados.
El sistema se ha implementado en **Python 3.10+** y utiliza librerías estándar de OSINT, NLP y análisis de redes.
---
## 📦 Instalación de dependencias
Ejecuta en tu terminal:
```bash
pip install requests beautifulsoup4 lxml networkx pandas numpy scikit-learn spacy textblob python-telegram-bot feedparser newspaper3k tweepy
python -m spacy download es_core_news_md
python -m spacy download en_core_web_md
```
---
## 🧠 Código completo del algoritmo
```python
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Sistema de Detección de Redes de Poder Oculto (SDRPO)
Basado en OSINT, NLP, Análisis de Redes y Deep Learning
Autor: José Agustín Fontán Varela - PASAIA LAB
Asistente: DeepSeek
Versión: 1.0 - Abril 2026
"""
import os
import re
import json
import time
import logging
import hashlib
from datetime import datetime, timedelta
from collections import defaultdict, Counter
from urllib.parse import urlparse, urljoin
import requests
import networkx as nx
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup
import spacy
from textblob import TextBlob
import feedparser
from newspaper import Article
# Configuración de logging
logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s - %(message)s')
logger = logging.getLogger(__name__)
# ============================================================
# MÓDULO 1: RECOPILACIÓN DE DATOS MASIVA (OSINT)
# ============================================================
class DataIngestion:
"""
Recopila datos de fuentes públicas de Internet.
"""
def __init__(self):
self.session = requests.Session()
self.session.headers.update({
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
})
# Fuentes predefinidas (se pueden ampliar)
self.sources = {
'news': [
'https://www.elmundo.es/rss/',
'https://feeds.elpais.com/mrss-s/pages/ep/site/elpais.com/portada',
'https://e00-elmundo.uecdn.es/elmundo/rss/portada.xml',
'https://www.abc.es/rss/feeds/abc_espana.xml',
'https://www.lavanguardia.com/mvc/feed/rss/home',
'https://www.economist.com/feeds/print-sections/77/business.xml',
'https://www.ft.com/?format=rss',
'https://www.wsj.com/xml/rss/3_7085.xml',
'https://feeds.bloomberg.com/markets/news.rss'
],
'think_tanks': [
'https://www.cfr.org/blog',
'https://www.brookings.edu/feed/',
'https://carnegieendowment.org/rss.xml',
'https://www.chathamhouse.org/rss.xml'
],
'social': [
'https://twitter.com/elonmusk', # ejemplos
'https://twitter.com/BillGates',
'https://www.linkedin.com/company/blackrock'
]
}
def fetch_rss(self, url, max_entries=10):
"""Obtiene artículos de un feed RSS."""
try:
feed = feedparser.parse(url)
articles = []
for entry in feed.entries[:max_entries]:
articles.append({
'title': entry.title,
'link': entry.link,
'published': entry.get('published', ''),
'summary': entry.get('summary', ''),
'source': url
})
return articles
except Exception as e:
logger.error(f"Error fetching RSS {url}: {e}")
return []
def fetch_article_content(self, url):
"""Extrae el texto completo de un artículo usando newspaper3k."""
try:
article = Article(url)
article.download()
article.parse()
article.nlp()
return {
'title': article.title,
'text': article.text,
'summary': article.summary,
'keywords': article.keywords,
'authors': article.authors,
'publish_date': article.publish_date
}
except Exception as e:
logger.error(f"Error fetching article {url}: {e}")
return None
def collect_all(self, days_back=30):
"""Recopila datos de todas las fuentes."""
all_articles = []
cutoff_date = datetime.now() - timedelta(days=days_back)
for source_type, urls in self.sources.items():
for url in urls:
logger.info(f"Recopilando de {url}")
articles = self.fetch_rss(url)
for art in articles:
# Obtener contenido completo
full_art = self.fetch_article_content(art['link'])
if full_art:
full_art['source_url'] = art['link']
full_art['source_type'] = source_type
all_articles.append(full_art)
time.sleep(1) # Ser amable con los servidores
return all_articles
# ============================================================
# MÓDULO 2: PROCESAMIENTO DE LENGUAJE NATURAL (NLP)
# ============================================================
class NLPProcessor:
"""
Extrae entidades, relaciones y análisis de sentimiento/ideología.
"""
def __init__(self):
self.nlp_es = spacy.load("es_core_news_md")
self.nlp_en = spacy.load("en_core_web_md")
# Palabras clave para detección de ideología neoliberal
self.ideology_keywords = {
'neoliberal': ['desregulación', 'privatización', 'libre mercado', 'competitividad',
'flexibilización laboral', 'austeridad', 'globalización',
'libre comercio', 'eficiencia', 'emprendimiento', 'startup'],
'conservador': ['tradición', 'familia', 'orden', 'seguridad nacional', 'fronteras',
'soberanía', 'patria', 'valores cristianos'],
'progresista': ['igualdad', 'justicia social', 'derechos humanos', 'ecología',
'feminismo', 'diversidad', 'inclusión', 'redistribución']
}
def extract_entities(self, text):
"""Extrae personas, organizaciones y lugares usando spaCy."""
doc = self.nlp_en(text) # Se puede detectar idioma automáticamente
entities = {'PERSON': [], 'ORG': [], 'GPE': []}
for ent in doc.ents:
if ent.label_ in entities:
entities[ent.label_].append(ent.text)
# Eliminar duplicados manteniendo orden
for k in entities:
entities[k] = list(dict.fromkeys(entities[k]))
return entities
def extract_relationships(self, text, entities):
"""
Extrae relaciones simples entre entidades (sujeto-verbo-objeto).
Es un enfoque simplificado; se puede mejorar con dependencias.
"""
relationships = []
doc = self.nlp_en(text)
for token in doc:
if token.dep_ == "nsubj" and token.head.pos_ == "VERB":
subject = token.text
verb = token.head.text
# Buscar objeto directo
obj = None
for child in token.head.children:
if child.dep_ == "dobj":
obj = child.text
break
if subject in entities['PERSON'] or subject in entities['ORG']:
relationships.append((subject, verb, obj))
return relationships
def analyze_ideology(self, text):
"""
Clasifica el texto en categorías ideológicas según palabras clave.
"""
text_lower = text.lower()
scores = {k: 0 for k in self.ideology_keywords}
for ideology, keywords in self.ideology_keywords.items():
for kw in keywords:
scores[ideology] += text_lower.count(kw)
# Normalizar
total = sum(scores.values())
if total > 0:
for k in scores:
scores[k] /= total
return scores
def sentiment_analysis(self, text):
"""Análisis de sentimiento con TextBlob."""
blob = TextBlob(text)
polarity = blob.sentiment.polarity # -1 (negativo) a +1 (positivo)
subjectivity = blob.sentiment.subjectivity # 0 (objetivo) a 1 (subjetivo)
return {'polarity': polarity, 'subjectivity': subjectivity}
# ============================================================
# MÓDULO 3: CONSTRUCCIÓN DEL GRAFO DE PODER
# ============================================================
class PowerGraphBuilder:
"""
Construye un grafo dirigido con nodos = personas/orgs y aristas = relaciones.
"""
def __init__(self):
self.graph = nx.MultiDiGraph()
def add_entity(self, name, entity_type, metadata=None):
"""Añade un nodo al grafo."""
if not self.graph.has_node(name):
self.graph.add_node(name, type=entity_type, metadata=metadata or {})
def add_relation(self, source, target, relation_type, weight=1.0, source_doc=None):
"""Añade una arista dirigida entre dos entidades."""
if source and target and source != target:
self.graph.add_edge(source, target, relation=relation_type, weight=weight, source=source_doc)
def build_from_articles(self, articles, nlp_processor):
"""
Procesa una lista de artículos y extrae nodos y relaciones.
"""
for article in articles:
text = article.get('text', '')
if not text:
continue
# Extraer entidades
entities = nlp_processor.extract_entities(text)
# Añadir nodos
for person in entities['PERSON']:
self.add_entity(person, 'person', {'source': article.get('source_url')})
for org in entities['ORG']:
self.add_entity(org, 'organization', {'source': article.get('source_url')})
# Extraer relaciones básicas (sujeto-verbo-objeto)
rels = nlp_processor.extract_relationships(text, entities)
for sub, verb, obj in rels:
if obj:
self.add_relation(sub, obj, verb, source_doc=article.get('source_url'))
# Análisis ideológico del artículo (se asocia a las entidades principales)
ideology = nlp_processor.analyze_ideology(text)
sentiment = nlp_processor.sentiment_analysis(text)
# Podemos guardar estos metadatos en los nodos principales (ej. primera persona mencionada)
if entities['PERSON']:
main_person = entities['PERSON'][0]
node = self.graph.nodes.get(main_person)
if node:
node['ideology'] = node.get('ideology', {})
for k, v in ideology.items():
node['ideology'][k] = node['ideology'].get(k, 0) + v
node['sentiment'] = sentiment
def compute_centrality(self):
"""Calcula métricas de centralidad (poder)."""
if self.graph.number_of_nodes() == 0:
return {}
# Centralidad de grado (grado de entrada)
in_degree = dict(self.graph.in_degree())
# Centralidad de intermediación (betweenness)
betweenness = nx.betweenness_centrality(self.graph)
# Centralidad de vector propio (eigenvector)
try:
eigenvector = nx.eigenvector_centrality(self.graph, max_iter=1000)
except:
eigenvector = {n: 0 for n in self.graph.nodes()}
# PageRank
pagerank = nx.pagerank(self.graph)
# Almacenar en los nodos
for node in self.graph.nodes():
self.graph.nodes[node]['in_degree'] = in_degree.get(node, 0)
self.graph.nodes[node]['betweenness'] = betweenness.get(node, 0)
self.graph.nodes[node]['eigenvector'] = eigenvector.get(node, 0)
self.graph.nodes[node]['pagerank'] = pagerank.get(node, 0)
return {
'in_degree': in_degree,
'betweenness': betweenness,
'eigenvector': eigenvector,
'pagerank': pagerank
}
def detect_communities(self):
"""Detecta comunidades mediante el algoritmo de Louvain (usando NetworkX)."""
# Convertir a grafo no dirigido para detección de comunidades
G_und = self.graph.to_undirected()
try:
import community # python-louvain
partition = community.best_partition(G_und)
return partition
except ImportError:
# Si no está instalado, usar greedy modularity
from networkx.algorithms.community import greedy_modularity_communities
communities = list(greedy_modularity_communities(G_und))
partition = {}
for i, comm in enumerate(communities):
for node in comm:
partition[node] = i
return partition
# ============================================================
# MÓDULO 4: RED NEURONAL PREDICTIVA (Deep Learning)
# ============================================================
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
class InfluencePredictor:
"""
Red neuronal para predecir la influencia futura de una entidad
basándose en características históricas.
"""
def __init__(self):
self.model = None
self.scaler = StandardScaler()
def prepare_features(self, graph):
"""
Extrae características de cada nodo (centralidades, número de relaciones,
diversidad ideológica, etc.)
"""
features = []
node_list = []
for node, data in graph.nodes(data=True):
features.append([
data.get('in_degree', 0),
data.get('betweenness', 0),
data.get('eigenvector', 0),
data.get('pagerank', 0),
len([e for e in graph.in_edges(node)]),
len([e for e in graph.out_edges(node)]),
len(data.get('ideology', {}))
])
node_list.append(node)
return np.array(features), node_list
def train(self, X, y):
"""Entrena la red neuronal."""
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train = self.scaler.fit_transform(X_train)
X_test = self.scaler.transform(X_test)
model = Sequential([
Dense(64, activation='relu', input_shape=(X.shape[1],)),
Dropout(0.3),
Dense(32, activation='relu'),
Dropout(0.3),
Dense(1, activation='linear')
])
model.compile(optimizer='adam', loss='mse', metrics=['mae'])
model.fit(X_train, y_train, epochs=50, batch_size=16, validation_data=(X_test, y_test), verbose=0)
self.model = model
return model
def predict(self, features):
"""Predice la influencia futura."""
if self.model is None:
return None
features_scaled = self.scaler.transform(features)
return self.model.predict(features_scaled).flatten()
# ============================================================
# MÓDULO 5: VISUALIZACIÓN Y REPORTE
# ============================================================
class PowerReport:
"""
Genera informes y visualizaciones del grafo de poder.
"""
@staticmethod
def top_influential(graph, metric='pagerank', top_n=20):
"""Devuelve los nodos más influyentes según una métrica."""
nodes = [(node, data.get(metric, 0)) for node, data in graph.nodes(data=True)]
nodes.sort(key=lambda x: x[1], reverse=True)
return nodes[:top_n]
@staticmethod
def community_summary(graph, partition):
"""Resume las comunidades detectadas."""
communities = defaultdict(list)
for node, comm_id in partition.items():
communities[comm_id].append(node)
# Ordenar por tamaño
sorted_comms = sorted(communities.items(), key=lambda x: len(x[1]), reverse=True)
return {f"Comunidad_{i+1}": members for i, (_, members) in enumerate(sorted_comms[:5])}
@staticmethod
def export_to_json(graph, filename='power_graph.json'):
"""Exporta el grafo a JSON para su análisis externo."""
data = nx.node_link_data(graph)
with open(filename, 'w', encoding='utf-8') as f:
json.dump(data, f, indent=2, ensure_ascii=False)
logger.info(f"Grafo exportado a {filename}")
@staticmethod
def generate_html_report(graph, top_influential, communities):
"""Genera un informe HTML simple."""
html = f"""
<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Informe de Redes de Poder</title></head>
<body>
<h1>Informe de Detección de Redes de Poder Oculto</h1>
<h2>Top 20 Entidades Más Influyentes (PageRank)</h2>
<ul>
"""
for name, score in top_influential:
html += f"<li><b>{name}</b> (score: {score:.6f})</li>"
html += "</ul><h2>Comunidades Detectadas</h2><ul>"
for comm_name, members in communities.items():
html += f"<li><b>{comm_name}</b>: {len(members)} miembros</li>"
html += "</ul></body></html>"
with open('power_report.html', 'w', encoding='utf-8') as f:
f.write(html)
logger.info("Informe HTML generado: power_report.html")
# ============================================================
# EJECUCIÓN PRINCIPAL DEL ALGORITMO
# ============================================================
def main():
logger.info("Iniciando algoritmo de detección de redes de poder oculto")
# Paso 1: Recopilar datos
ingestion = DataIngestion()
articles = ingestion.collect_all(days_back=30)
logger.info(f"Recopilados {len(articles)} artículos")
# Paso 2: Procesar con NLP
nlp = NLPProcessor()
graph_builder = PowerGraphBuilder()
for article in articles:
graph_builder.build_from_articles([article], nlp)
# Paso 3: Calcular métricas de centralidad y detectar comunidades
graph_builder.compute_centrality()
partition = graph_builder.detect_communities()
# Paso 4: Identificar élites
top = PowerReport.top_influential(graph_builder.graph, metric='pagerank', top_n=20)
communities_summary = PowerReport.community_summary(graph_builder.graph, partition)
# Paso 5: Entrenar red neuronal predictiva (simulada con datos sintéticos)
# Nota: en un caso real necesitaríamos datos etiquetados históricos.
predictor = InfluencePredictor()
X, _ = predictor.prepare_features(graph_builder.graph)
# Simular etiquetas de influencia (ej. número de artículos donde aparece)
y = np.array([graph_builder.graph.nodes[n].get('in_degree', 0) for n in graph_builder.graph.nodes()])
if len(X) > 10:
predictor.train(X, y)
predictions = predictor.predict(X)
# Añadir predicciones al grafo
for i, node in enumerate(graph_builder.graph.nodes()):
graph_builder.graph.nodes[node]['predicted_influence'] = float(predictions[i])
# Paso 6: Exportar resultados
PowerReport.export_to_json(graph_builder.graph)
PowerReport.generate_html_report(graph_builder.graph, top, communities_summary)
logger.info("Algoritmo finalizado. Revise power_report.html para los resultados.")
# Mostrar en consola los más influyentes
print("\n=== ENTIDADES MÁS INFLUYENTES (PageRank) ===")
for name, score in top[:10]:
print(f"{name}: {score:.6f}")
if __name__ == "__main__":
main()
```
---
## 🧪 Cómo ejecutar el algoritmo
1. Guarda el código en un archivo, por ejemplo `detector_poder.py`.
2. Instala las dependencias (ver sección de instalación).
3. Ejecuta:
```bash
python detector_poder.py
```
4. El script recopilará artículos de las fuentes RSS predefinidas, extraerá entidades, construirá el grafo, calculará centralidades y generará un informe HTML (`power_report.html`) y un archivo JSON con el grafo completo.
---
## ⚠️ Limitaciones y consideraciones éticas
- **Datos públicos únicamente**: El algoritmo no realiza scraping invasivo ni recopila datos privados. Se limita a fuentes abiertas.
- **Fiabilidad limitada**: Las relaciones extraídas mediante NLP pueden contener errores. Es necesario un análisis humano complementario.
- **Sesgo algorítmico**: Los modelos pueden amplificar sesgos presentes en los datos de entrenamiento.
- **Uso responsable**: Esta herramienta se proporciona con fines de investigación y transparencia. No debe utilizarse para acosar, difamar o violar la privacidad de las personas.
---
## 📈 Posibles mejoras futuras
- Integración con APIs de redes sociales (Twitter, LinkedIn) para obtener más datos.
- Análisis de imágenes y vídeos para detectar reuniones de élite.
- Implementación de grafos temporales para seguir la evolución de las redes.
- Uso de transformers (BERT, GPT) para extracción de relaciones más precisa.
- Interfaz gráfica para explorar el grafo de forma interactiva.
Este algoritmo es un punto de partida. Con más recursos computacionales y acceso a datos históricos, se podría refinar y escalar para exponer las estructuras de poder que operan en las sombras.
CONTACTO: tormentaworkfactory@gmail.com
BRAINSTORMING
- Tormenta de Ideas de PASAIA LAB © 2025 by José
Agustín Fontán Varela is licensed under CC
BY-NC-ND 4.0
BRAINSTORMING
- Tormenta de Ideas de PASAIA LAB © 2025 by José
Agustín Fontán Varela is licensed under Creative
Commons Attribution-NonCommercial-NoDerivatives 4.0 International





No hay comentarios:
Publicar un comentario
COMENTA LIBREMENTE ;)