Initial commit - FLUJOS codebase (production branch)

Includes: FLUJOS app (Node/Flask/Python), FLUJOS_DATOS scripts (scrapers, Keras, Django)
Excludes: MongoDB, scraped data, Wikipedia/WikiLeaks dumps, Python venv, node_modules
This commit is contained in:
CAPITANSITO 2026-03-31 14:10:02 +02:00
commit a40b946163
158 changed files with 196645 additions and 0 deletions

92
FLUJOS_DATOS/WIKIPEDIA/docs.txt Executable file
View file

@ -0,0 +1,92 @@
# Crear un archivo llamado docs.txt y agregar el contenido necesario
echo "
# Descripción del Programa
Este programa descarga artículos de Wikipedia relacionados con diversas temáticas, limpia y tokeniza el contenido, y guarda los resultados en archivos de texto. También compara la similitud de las palabras entre los primeros dos artículos descargados y calcula un porcentaje de similitud. El programa detiene la descarga cuando el tamaño total de los archivos supera los 10 GB y entonces ejecuta la tokenización de los artículos.
# Paquetes Necesarios
- \`transformers\`: Para tokenización usando BERT.
- \`wikipedia-api\`: Para buscar y obtener el contenido de artículos de Wikipedia.
# Comandos para Instalar los Paquetes en Linux
Primero, asegúrate de tener \`pip\` instalado. Si no lo tienes, puedes instalarlo con:
\`\`\`bash
sudo apt update
sudo apt install python3-pip
\`\`\`
Luego, instala los paquetes necesarios:
\`\`\`bash
pip install transformers wikipedia-api
\`\`\`
# Crear y Activar el Entorno Virtual
Para evitar conflictos con otros proyectos y mantener el entorno limpio, se recomienda usar un entorno virtual. A continuación se muestran los pasos para crear y activar un entorno virtual:
1. **Crear el entorno virtual:**
Navega al directorio de tu proyecto y crea un entorno virtual llamado \`venv\`:
\`\`\`bash
python3 -m venv venv
\`\`\`
2. **Activar el entorno virtual:**
Para activar el entorno virtual, usa el siguiente comando:
\`\`\`bash
source venv/bin/activate
\`\`\`
Verás que el nombre del entorno virtual aparece antes del prompt de la terminal, indicando que el entorno virtual está activado.
3. **Instalar los paquetes en el entorno virtual:**
Una vez activado el entorno virtual, instala los paquetes necesarios:
\`\`\`bash
pip install transformers wikipedia-api
\`\`\`
# Ejecutar el Programa
Con el entorno virtual activado, puedes ejecutar el programa principal:
\`\`\`bash
python3 main.py
\`\`\`
# Estructura del Proyecto
Asegúrate de que tu proyecto tenga la siguiente estructura:
\`\`\`
proyecto/
├── main.py
├── wikipedia_utils.py
├── docs.txt
└── venv/
\`\`\`
- \`main.py\`: Contiene el código principal que descarga, limpia, tokeniza y compara los artículos de Wikipedia.
- \`wikipedia_utils.py\`: Contiene las funciones auxiliares para buscar y obtener contenido de Wikipedia.
- \`docs.txt\`: Este documento de información.
- \`venv/\`: El entorno virtual.
" > docs.txt
# Crear el entorno virtual y activar
python3 -m venv venv
source venv/bin/activate
# Instalar los paquetes necesarios
pip install transformers wikipedia-api
# Mostrar mensaje de finalización
echo "El entorno virtual se ha creado y los paquetes necesarios se han instalado. El contenido de docs.txt se ha generado."

293
FLUJOS_DATOS/WIKIPEDIA/main.py Executable file
View file

@ -0,0 +1,293 @@
import os
import re
import time
from transformers import BertTokenizer
from collections import Counter
from tqdm import tqdm
stopwords = [
"de", "la", "que", "el", "en", "y", "a", "los", "del", "se", "las", "por", "un", "para", "con",
"no", "una", "su", "al", "es", "lo", "como", "más", "pero", "sus", "le", "ya", "o", "fue", "este",
"ha", "", "porque", "esta", "son", "entre", "cuando", "muy", "sin", "sobre", "también", "me",
"hasta", "hay", "donde", "quien", "desde", "todo", "nos", "durante", "todos", "uno", "les", "ni",
"contra", "otros", "ese", "eso", "ante", "ellos", "e", "esto", "", "antes", "algunos", "qué",
"unos", "yo", "otro", "otras", "otra", "él", "tanto", "esa", "estos", "mucho", "quienes", "nada",
"muchos", "cual", "poco", "ella", "estar", "estas", "algunas", "algo", "nosotros", "mi", "mis",
"", "te", "ti", "tu", "tus", "ellas", "nosotras", "vosotros", "vosotras", "os", "mío", "mía",
"míos", "mías", "tuyo", "tuya", "tuyos", "tuyas", "suyo", "suya", "suyos", "suyas", "nuestro",
"nuestra", "nuestros", "nuestras", "vuestro", "vuestra", "vuestros", "vuestras", "esos", "esas",
"estoy", "estás", "está", "estamos", "estáis", "están", "esté", "estés", "estemos", "estéis",
"estén", "estaré", "estarás", "estará", "estaremos", "estaréis", "estarán", "estaría", "estarías",
"estaríamos", "estaríais", "estarían", "estaba", "estabas", "estábamos", "estabais", "estaban",
"estuve", "estuviste", "estuvo", "estuvimos", "estuvisteis", "estuvieron", "estuviera", "estuvieras",
"estuviéramos", "estuvierais", "estuvieran", "estuviese", "estuvieses", "estuviésemos", "estuvieseis",
"estuviesen", "estando", "estado", "estada", "estados", "estadas", "estad"
]
def limpiar_texto(texto):
texto = texto.lower()
texto = re.sub(r'[^\w\s]', '', texto)
palabras = texto.split()
palabras_limpias = [palabra for palabra in palabras if palabra not in stopwords]
return ' '.join(palabras_limpias)
def limpiar_nombre_archivo(nombre):
nombre = re.sub(r'[\\/*?:"<>|]', "_", nombre)
return nombre
tokenizer = BertTokenizer.from_pretrained('dccuchile/bert-base-spanish-wwm-cased')
def tokenizar_y_guardar(texto, nombre_archivo):
tokens_ids = tokenizer.encode(
texto,
truncation=True,
max_length=512
)
tokens_str = ' '.join(map(str, tokens_ids))
with open(nombre_archivo, 'w', encoding='utf-8') as f:
f.write(tokens_str)
return tokens_ids
def obtener_info_carpeta(ruta):
total_size = 0
total_files = 0
for dirpath, dirnames, filenames in os.walk(ruta):
for f in filenames:
fp = os.path.join(dirpath, f)
total_size += os.path.getsize(fp)
total_files += 1
return total_size, total_files
LIMITE_TAMANIO_CARPETA = 100 * 1024 * 1024 * 1024
def TOKENIZER():
if not os.path.exists('articulos_tokenizados'):
os.makedirs('articulos_tokenizados')
archivos = os.listdir('articulos_wikipedia')
for archivo in tqdm(archivos, desc="Tokenizando artículos", unit="archivo"):
ruta_archivo = os.path.join('articulos_wikipedia', archivo)
with open(ruta_archivo, 'r', encoding='utf-8') as f:
contenido = f.read()
tokens_ids = tokenizer.encode(contenido, add_special_tokens=False)
nombre_tokens = os.path.join('articulos_tokenizados', archivo)
with open(nombre_tokens, 'w', encoding='utf-8') as f_tokens:
f_tokens.write(' '.join(map(str, tokens_ids)))
print("Tokenización completada para todos los artículos.")
temas = {
"inteligencia y seguridad": [
"inteligencia", "seguridad", "espionaje", "ciberseguridad", "NSA", "FBI", "CIA", "CNI",
"interpol", "operaciones encubiertas", "guerras proxy", "agencia", "contraterrorismo",
"criptografía", "vigilancia", "espionaje industrial", "ataques cibernéticos", "hackeo",
"información clasificada", "agente", "reclutamiento", "amenazas", "infraestructuras críticas",
"tecnologías de la información", "redes", "criptomonedas", "privacidad", "protección de datos",
"seguridad nacional", "terrorismo", "extremismo", "análisis de inteligencia", "ciberespionaje",
"ciberguerra", "ciberdelito", "criptografía", "phishing", "ransomware", "malware", "ingeniería social",
"ataques DDoS", "defensa cibernética", "vulnerabilidades", "parches de seguridad", "software de seguridad",
"firewalls", "antivirus", "seguridad en la nube", "seguridad móvil", "protección de identidad",
"autenticación multifactor", "ciberseguridad empresarial", "ciberseguridad gubernamental", "hacktivismo",
"forense digital", "resiliencia cibernética", "respuestas a incidentes", "gestión de riesgos", "infraestructura crítica",
"protección de la privacidad", "cumplimiento de normativas", "regulaciones de seguridad", "marco de seguridad",
"pruebas de penetración", "evaluaciones de seguridad", "auditorías de seguridad", "educación en ciberseguridad",
"conciencia en ciberseguridad", "seguridad en redes sociales", "protección de datos personales", "intercambio de información",
"colaboración internacional", "alianzas de seguridad", "sistemas de control industrial", "criptografía cuántica", "tecnologías emergentes",
"amenazas persistentes avanzadas", "seguridad de IoT", "infraestructura de clave pública", "normativas de seguridad",
"seguridad en la cadena de suministro", "seguridad física", "protección de infraestructuras críticas", "seguridad en la gestión de identidades",
"defensa de la red", "investigación en ciberseguridad", "innovación en seguridad", "seguridad en dispositivos médicos",
"ciberinteligencia", "estrategias de seguridad", "planes de contingencia", "gestión de crisis", "comunicaciones seguras",
"análisis de amenazas", "evaluaciones de vulnerabilidades", "monitoreo de seguridad", "seguridad en dispositivos móviles", "normativas internacionales"
],
"guerras": [
"guerra", "conflicto", "batalla", "militar", "guerra mundial", "guerra civil", "guerra fría",
"intervención militar", "revolución", "insurgencia", "combate", "fuerzas armadas", "ejército",
"marina", "fuerza aérea", "infantería", "tanques", "artillería", "misiles", "nuclear", "estrategia",
"táctica", "frente", "trincheras", "guerrilla", "resistencia", "conquista", "ocupación", "aliados",
"enemigos", "acuerdo de paz", "alto el fuego", "tratado", "armisticio", "bloqueo", "embargo", "sanciones",
"misión de paz", "intervención humanitaria", "reconstrucción", "desarme", "democracia", "dictadura",
"autoritarismo", "nacionalismo", "independencia", "soberanía", "imperialismo", "colonialismo",
"expansionismo", "hegemonía", "doctrina", "alianza", "coalición", "inteligencia militar", "espionaje",
"sabotaje", "operaciones especiales", "misión de rescate", "contrainteligencia", "logística", "suministros",
"comunicaciones", "radar", "sonar", "drones", "ciberguerra", "guerra biológica", "guerra química",
"propaganda", "desinformación", "guerra psicológica", "reclutamiento", "conscripción", "voluntarios",
"mercenarios", "contratistas", "veteranos", "prisioneros de guerra", "refugiados", "desplazados",
"víctimas civiles", "crímenes de guerra", "genocidio", "tribunales militares", "justicia transicional",
"memoria histórica", "reparaciones", "compensaciones", "resolución de conflictos", "mediación",
"arbitraje", "observadores internacionales", "derechos humanos", "derecho internacional humanitario",
"cruz roja", "organizaciones no gubernamentales", "desminado", "reconstrucción postconflicto", "vigilancia",
"seguridad fronteriza"
],
"corporaciones": [
"empresa", "negocios", "economía", "finanzas", "multinacionales", "mercado bursátil", "Wall Street",
"IBEX35", "BlackRock", "Vanguard", "inversiones", "acciones", "bonos", "dividendos", "capital",
"mercado de valores", "índice", "trading", "brokers", "mercados emergentes", "fusiones", "adquisiciones",
"venture capital", "capital privado", "startups", "emprendimiento", "empresas familiares", "pymes",
"conglomerados", "industria", "manufactura", "exportaciones", "importaciones", "comercio internacional",
"aranceles", "barreras comerciales", "globalización", "competencia", "monopolio", "oligopolio",
"regulación", "desregulación", "privatización", "nacionalización", "política económica", "recesión",
"crisis financiera", "depresión económica", "estímulo económico", "plan de rescate", "deuda soberana",
"deficit", "superávit", "bancos centrales", "reserva federal", "BCE", "inflación", "deflación", "tipos de interés",
"política monetaria", "liquidez", "crédito", "rating", "calificación crediticia", "riesgo financiero",
"gestión de riesgos", "auditoría", "contabilidad", "fiscalidad", "impuestos", "evasión fiscal",
"elusión fiscal", "paraísos fiscales", "transparencia", "gobierno corporativo", "ética empresarial",
"responsabilidad social corporativa", "sostenibilidad", "desarrollo sostenible", "inversión responsable",
"filantropía", "emisiones de carbono", "huella ecológica", "energías renovables", "economía circular",
"reciclaje", "innovación", "tecnología", "transformación digital", "industria 4.0", "big data", "inteligencia artificial",
"blockchain", "fintech", "e-commerce", "marketing digital", "publicidad", "marca", "branding", "cliente",
"fidelización", "experiencia del cliente", "servicio al cliente", "logística", "cadena de suministro",
"gestión de operaciones", "productividad", "eficiencia", "calidad", "mejora continua", "lean manufacturing",
"six sigma", "gestión del cambio", "liderazgo", "gestión de recursos humanos", "cultura organizacional",
"diversidad", "inclusión", "equidad", "bienestar", "desarrollo del talento", "formación", "desarrollo profesional"
],
"demografía": [
"población", "demografía", "estadísticas", "censos", "crecimiento poblacional", "migración", "densidad de población",
"esperanza de vida", "natalidad", "mortalidad", "fecundidad", "estructura etaria", "pirámide poblacional",
"envejecimiento", "juventud", "urbanización", "ruralidad", "movimientos migratorios", "emigración", "inmigración",
"refugiados", "desplazados internos", "asilo", "diaspora", "repatriación", "integración", "segregación",
"multiculturalidad", "etnicidad", "raza", "lengua", "religión", "educación", "alfabetización", "matrimonio",
"divorcio", "familia", "hogar", "vivienda", "género", "sexo", "orientación sexual", "identidad de género",
"discriminación", "igualdad", "equidad", "salud", "mortalidad infantil", "esperanza de vida saludable", "morbosidad",
"enfermedades", "pandemias", "epidemias", "nutrición", "desnutrición", "sobrepeso", "obesidad", "acceso a servicios",
"agua potable", "saneamiento", "electricidad", "internet", "telecomunicaciones", "transporte", "movilidad",
"desigualdad", "pobreza", "exclusión social", "desempleo", "empleo", "subempleo", "economía informal", "remesas",
"desarrollo humano", "calidad de vida", "bienestar", "índice de desarrollo humano", "pobreza multidimensional",
"vulnerabilidad", "resiliencia", "adaptación", "políticas públicas", "planificación familiar", "derechos reproductivos",
"salud sexual", "maternidad", "paternidad", "cuidados", "envejecimiento activo", "retiro", "pensiones", "seguridad social",
"educación continua", "aprendizaje a lo largo de la vida", "movilidad social", "clase social", "estratificación",
"desigualdad de ingresos", "equidad de género", "violencia de género", "derechos humanos", "justicia social", "participación ciudadana"
],
"cambio climático": [
"cambio climático", "calentamiento global", "medio ambiente", "sostenibilidad", "energías renovables", "deforestación",
"emisiones de carbono", "huella de carbono", "gases de efecto invernadero", "protocolos internacionales", "acuerdo de París",
"protocolo de Kioto", "energía solar", "energía eólica", "energía hidroeléctrica", "biomasa", "biocombustibles", "eficiencia energética",
"conservación de la energía", "transición energética", "economía verde", "desarrollo sostenible", "resiliencia climática", "adaptación climática",
"mitigación climática", "descarbonización", "economía circular", "reciclaje", "gestión de residuos", "reducción de residuos", "contaminación",
"contaminación del aire", "contaminación del agua", "contaminación del suelo", "calidad del aire", "calidad del agua", "conservación de la biodiversidad",
"ecosistemas", "especies en peligro de extinción", "áreas protegidas", "conservación de la vida silvestre", "reforestación", "aforestación", "restauración ecológica",
"agricultura sostenible", "agricultura orgánica", "agricultura regenerativa", "ganadería sostenible", "pesca sostenible", "acuicultura sostenible", "alimentación sostenible",
"consumo responsable", "producción responsable", "infraestructura verde", "ciudades sostenibles", "urbanismo sostenible", "transporte sostenible", "movilidad sostenible",
"infraestructura de movilidad", "vehículos eléctricos", "transporte público", "caminabilidad", "ciclismo urbano", "espacios verdes", "parques urbanos", "agua potable",
"saneamiento", "infraestructura de agua", "gestión del agua", "conservación del agua", "eficiencia hídrica", "infraestructura resiliente", "planificación urbana",
"vivienda sostenible", "arquitectura sostenible", "materiales sostenibles", "construcción sostenible", "edificios verdes", "certificación LEED", "certificación BREEAM",
"turismo sostenible", "turismo ecológico", "economía azul", "infraestructura natural", "infraestructura ecológica", "infraestructura climática", "finanzas verdes",
"inversión sostenible", "bonos verdes", "mercados de carbono", "compensación de carbono", "política climática", "derecho ambiental", "educación ambiental",
"conciencia ambiental", "activismo ambiental", "movimientos ambientales", "justicia climática", "derechos de la naturaleza", "derechos indígenas", "comunidades locales",
"participación ciudadana", "colaboración internacional", "alianzas climáticas", "acuerdos multilaterales", "financiación climática", "innovación climática",
"tecnología climática", "soluciones climáticas", "empresas sostenibles", "emprendimiento verde", "liderazgo climático", "estrategias climáticas", "planes de acción climática"
],
"organizaciones internacionales": [
"OTAN", "BRICS", "ONU", "Unión Europea", "FMI", "Banco Mundial", "OEA", "OPEP", "organización internacional", "tratados internacionales",
"diplomacia", "relaciones internacionales", "cooperación internacional", "política exterior", "seguridad internacional", "desarrollo internacional",
"derechos humanos", "paz y seguridad", "resolución de conflictos", "mediación internacional", "arbitraje internacional", "misiones de paz", "asistencia humanitaria",
"ayuda al desarrollo", "crisis humanitarias", "desplazamiento forzado", "refugiados", "migración internacional", "asilo político", "comercio internacional",
"comercio multilateral", "libre comercio", "acuerdos comerciales", "aranceles", "barreras comerciales", "propiedad intelectual", "derechos de autor",
"patentes", "marcas registradas", "innovación", "tecnología", "transferencia de tecnología", "ciencia y tecnología", "investigación y desarrollo",
"educación internacional", "intercambio educativo", "becas internacionales", "cooperación educativa", "cultura internacional", "intercambio cultural",
"diversidad cultural", "patrimonio cultural", "protección del patrimonio", "conservación cultural", "turismo internacional", "movilidad internacional",
"transporte internacional", "infraestructura global", "infraestructura de transporte", "energía internacional", "seguridad energética", "transición energética",
"energías renovables", "cambio climático", "desarrollo sostenible", "economía circular", "gestión de residuos", "conservación ambiental", "protección de la biodiversidad",
"gestión del agua", "derechos de agua", "infraestructura hídrica", "salud global", "seguridad sanitaria", "pandemias", "epidemias", "enfermedades infecciosas",
"vacunas", "acceso a medicamentos", "cobertura sanitaria universal", "derechos de salud", "equidad sanitaria", "financiación de la salud", "gobernanza sanitaria",
"derechos de las mujeres", "equidad de género", "empoderamiento de las mujeres", "participación política de las mujeres", "derechos de los niños",
"protección infantil", "educación infantil", "trabajo infantil", "violencia contra los niños", "derechos de los indígenas", "autonomía indígena",
"cultura indígena", "protección de los pueblos indígenas", "derechos de los discapacitados", "inclusión de los discapacitados", "accesibilidad",
"derechos de los ancianos", "envejecimiento activo", "seguridad social", "protección social", "pobreza", "desigualdad", "desarrollo económico",
"inclusión financiera", "banca internacional", "finanzas internacionales", "mercados financieros", "regulación financiera", "corrupción",
"transparencia", "gobernanza", "estado de derecho", "justicia internacional", "cortes internacionales", "tribunales internacionales", "crímenes de guerra",
"crímenes contra la humanidad", "genocidio", "derecho internacional", "derecho humanitario", "derecho ambiental", "derecho del mar", "derecho comercial",
"derecho penal internacional", "derecho de los refugiados", "derecho de asilo", "derecho de los derechos humanos", "derecho de los tratados",
"derecho de las organizaciones internacionales", "diplomacia preventiva", "diplomacia económica", "diplomacia cultural", "diplomacia científica",
"diplomacia de la salud", "diplomacia deportiva", "diplomacia digital", "diplomacia pública", "diplomacia parlamentaria", "diplomacia de la paz",
"diplomacia de la seguridad", "diplomacia de la energía", "diplomacia de la defensa", "diplomacia de la información", "diplomacia de la educación",
"diplomacia de la cultura", "diplomacia de la tecnología", "diplomacia de la ciencia", "diplomacia de la innovación", "diplomacia de la justicia",
"diplomacia de los derechos humanos", "diplomacia de los tratados", "diplomacia de las organizaciones internacionales", "diplomacia de la ONU",
"diplomacia de la OTAN", "diplomacia de la Unión Europea", "diplomacia del BRICS", "diplomacia del FMI", "diplomacia del Banco Mundial",
"diplomacia de la OEA", "diplomacia de la OPEP", "diplomacia de la OMS", "diplomacia de la UNICEF", "diplomacia de la UNESCO"
],
"gobiernos autoritarios": [
"dictadura", "autoritario", "represión política", "censura", "control estatal", "violaciones de derechos humanos",
"tortura", "detención arbitraria", "desaparición forzada", "prisioneros políticos", "exilio", "disidencia",
"oposición política", "elecciones fraudulentas", "manipulación electoral", "medios de comunicación controlados",
"propaganda", "desinformación", "vigilancia masiva", "interceptación de comunicaciones", "control de internet",
"bloqueo de sitios web", "restricción de redes sociales", "censura de prensa", "revisionismo histórico",
"culto a la personalidad", "golpes de estado", "estados policiales", "corrupción", "nepotismo", "clientelismo",
"impunidad", "violencia política", "represión violenta", "masacres", "genocidio", "persecución de minorías",
"persecución de disidentes", "persecución de periodistas", "persecución de activistas", "persecución de intelectuales",
"persecución de académicos", "persecución de estudiantes", "persecución de trabajadores", "persecución de campesinos",
"persecución de indígenas", "persecución de mujeres", "persecución de niños", "persecución de ancianos",
"persecución de discapacitados", "persecución de LGBTI", "persecución de opositores políticos"
]
}
if not os.path.exists('articulos_wikipedia'):
os.makedirs('articulos_wikipedia')
num_articulos_descargados = 0
titulos_descargados = set()
for tema, palabras_clave in temas.items():
for palabra_clave in palabras_clave:
print(f"Buscando artículos sobre: {palabra_clave}")
offset = 0
while True:
titulos_articulos = buscar_articulos(palabra_clave, max_articulos=50, offset=offset)
if not titulos_articulos:
break
nuevos_articulos = 0
for titulo in titulos_articulos:
if titulo not in titulos_descargados:
contenido = obtener_contenido_wikipedia(titulo)
if contenido:
nombre_archivo = os.path.join('articulos_wikipedia', f"{limpiar_nombre_archivo(titulo)}.txt")
with open(nombre_archivo, 'w', encoding='utf-8') as archivo:
archivo.write(contenido)
titulos_descargados.add(titulo)
num_articulos_descargados += 1
nuevos_articulos += 1
print(f"Descargado: {titulo}")
total_size, total_files = obtener_info_carpeta('articulos_wikipedia')
print(f"Total de artículos descargados: {total_files}")
print(f"Tamaño total de la carpeta: {total_size / (1024 * 1024):.2f} MB")
if total_size > LIMITE_TAMANIO_CARPETA:
print(f"Se ha alcanzado el límite de tamaño de la carpeta de 100 GB.")
TOKENIZER()
exit(0)
if nuevos_articulos == 0:
break
offset += 50
time.sleep(1)
print(f"Total de artículos descargados: {num_articulos_descargados}")
total_size, total_files = obtener_info_carpeta('articulos_wikipedia')
print(f"Tamaño total de la carpeta: {total_size / (1024 * 1024):.2f} MB")
TOKENIZER()
articulos_descargados = os.listdir('articulos_wikipedia')
if len(articulos_descargados) >= 2:
articulo1 = open(os.path.join('articulos_wikipedia', articulos_descargados[0]), 'r', encoding='utf-8').read()
articulo2 = open(os.path.join('articulos_wikipedia', articulos_descargados[1]), 'r', encoding='utf-8').read()
articulo1_limpio = limpiar_texto(articulo1)
articulo2_limpio = limpiar_texto(articulo2)
tokens_articulo1 = tokenizar_y_guardar(articulo1_limpio, 'tokens_articulo1.txt')
tokens_articulo2 = tokenizar_y_guardar(articulo2_limpio, 'tokens_articulo2.txt')
def contar_palabras(nombre_archivo):
with open(nombre_archivo, 'r') as f:
palabras = f.read().split()
return Counter(palabras)
conteo_articulo1 = contar_palabras('tokens_articulo1.txt')
conteo_articulo2 = contar_palabras('tokens_articulo2.txt')
palabras_comunes = set(conteo_articulo1.keys()) & set(conteo_articulo2.keys())
num_palabras_comunes = sum(min(conteo_articulo1[p], conteo_articulo2[p]) for p in palabras_comunes)
num_palabras_totales = sum(conteo_articulo1.values()) + sum(conteo_articulo2.values())
porcentaje_similitud = (num_palabras_comunes / num_palabras_totales) * 100
print(f"Porcentaje de similitud entre los dos primeros artículos descargados: {porcentaje_similitud:.2f}%")
else:
print("No hay suficientes artículos descargados para comparar similitud.")

View file

@ -0,0 +1,945 @@
empresa
brasileña
investigación
agropec
##uar
##ia
emb
##ra
##pa
empresa
brasile
##ira
pes
##quis
##a
agropec
##u
##ár
##ia
institución
estatal
federal
pública
brasileña
vinculada
ministerio
agricultura
ganadería
abastecimiento
bras
##il
fundada
26
abril
19
##7
##3
cuyos
objetivos
desarrollar
tecnologías
conocimiento
informaciones
técnicas
científicas
agricultura
ganadería
brasileña
tiene
misión
crear
soluciones
investigación
desarrollo
innovación
sostenibilidad
agricultura
beneficio
sociedad
brasileña
actúa
sistema
compuesto
41
centros
investigación
cinco
unidades
servicios
1
##7
unidades
centrales
presente
casi
federación
9
##7
##90
empleados
cuales
244
##4
investigadores
actúa
coordinación
sistema
nacional
investigación
agropec
##uar
##ia
s
##n
##pa
constituido
instituciones
públicas
federales
universidades
empresas
privadas
fundaciones
forma
cooperativa
ejecutan
##do
investigaciones
diferentes
áreas
geográficas
campos
conocimiento
científico
em
términos
cooperación
internacional
empresa
mantiene
68
acuerdos
bilaterales
cooperación
técnica
3
##7
países
64
instituciones
acuerdos
multilaterales
20
organizaciones
internacionales
principalmente
estudios
parcelas
mantiene
laboratorios
desarrollar
estudios
tecnología
punta
unidos
fran
##cia
países
bajos
oficina
regional
g
##han
##a
compartir
conocimiento
científico
tecnológico
continente
africano
asociados
emb
##ra
##pa
empresas
asociadas
emb
##ra
##pa
empresas
asociadas
emb
##ra
##pa
pueden
reproducir
semillas
derivados
partir
momento
cumplan
requisitos
técnicos
establecidos
organización
unidades
emb
##ra
##pa
centros
investigación
productos
emb
##ra
##pa
[UNK]
camp
##ina
grande
p
##b
investigación
algodón
mam
##ona
ame
##n
##do
##im
ger
##gel
##im
si
##sal
emb
##ra
##pa
arroz
por
##oto
santo
[UNK]
go
##i
##ás
go
investigación
arroz
por
##oto
emb
##ra
##pa
cap
##rino
##s
sobra
##l
ce
investigación
cap
##rino
##s
ov
##inos
emb
##ra
##pa
fores
##tas
colo
##mbo
pr
investigación
especies
forestales
emb
##ra
##pa
ga
##do
corte
campo
grande
ms
investigación
bo
##vinos
corte
emb
##ra
##pa
ganado
leche
ju
##iz
for
##a
mg
investigación
leche
bo
##vinos
leche
emb
##ra
##pa
hortalizas
distrito
federal
d
##f
investigación
hortalizas
ab
##ó
##bora
bata
##ta
bata
##tad
##ul
##ce
ber
##en
##jen
##a
cebol
##la
zana
##hor
##ia
cole
##s
gui
##santes
gar
##ban
##zo
lente
##ja
mand
##io
##ca
mel
##ón
maíz
dulce
mos
##taza
pe
##pino
repo
##llo
tomate
etc
emb
##ra
##pa
mand
##io
##ca
fru
##tic
##ult
##ura
tropical
cruz
das
almas
ba
emb
##ra
##pa
mil
##ho
sor
##go
set
##e
lago
##as
mg
investigación
maíz
sor
##go
mi
##jo
emb
##ra
##pa
pecu
##ár
##ia
sudeste
[UNK]
car
##los
sp
investigación
bo
##vinos
corte
bo
##vinos
leche
equi
##nos
forra
##ji
##cultura
emb
##ra
##pa
pecu
##ár
##ia
sul
ba
##gé
r
##s
investigación
bo
##vinos
corte
bo
##vinos
leche
ov
##inos
emb
##ra
##pa
soja
lon
##dri
##na
pr
investigación
soja
giras
##ol
emb
##ra
##pa
su
##ín
##os
aves
con
##có
##r
##dia
s
##c
investigación
su
##inos
pastos
corte
gallinas
postura
emb
##ra
##pa
trigo
pas
##so
fund
##o
r
##s
investigación
trigo
ce
##bada
tri
##tica
##le
centen
##o
can
##ola
hierbas
forra
##jeras
soja
maíz
por
##oto
desarrollo
soja
adaptada
suelos
ácidos
emb
##ra
##pa
uva
vin
##ho
ben
##to
[UNK]
r
##s
investigación
uva
vino
manzana
frutas
clima
temp
##lado
centros
investigación
temas
básicos
emb
##ra
##pa
agro
##bio
##logia
ser
##op
##é
##dica
r
##j
investigación
fijación
biológica
nitrógeno
agricultura
orgánica
emb
##ra
##pa
agro
##ener
##gia
bras
##íl
##ia
d
##f
investigación
biodi
##és
##el
bio
##gá
##s
eta
##nol
fores
##tas
energéticas
emb
##ra
##pa
agro
##ind
##ús
##tri
##a
alimentos
río
ja
##ne
##iro
r
##j
investigación
tecnología
alimentos
emb
##ra
##pa
agro
##ind
##ús
##tri
##a
tropical
fortaleza
ce
investigación
agro
##ind
##ust
##ria
tropical
ca
##ju
coco
emb
##ra
##pa
informática
agropec
##u
##ár
##ia
camp
##inas
sp
investigación
tecnología
información
agro
##ne
##goci
##os
emb
##ra
##pa
[UNK]
agropec
##u
##ár
##ia
[UNK]
car
##los
sp
investigación
agricultura
precisión
ambiente
biotecnología
##a
automa
##tización
procesos
nuevos
materiales
agricultura
agro
##ind
##ust
##ria
familiar
calidad
##es
productos
materias
primas
emb
##ra
##pa
me
##io
ambiente
ja
##guar
##i
##ún
##a
sp
investigación
manejo
gestión
ambiental
emb
##ra
##pa
monitor
##amento
satélite
camp
##inas
sp
investigación
sistemas
informaciones
geográficas
redes
ele
##trón
##icas
adquisición
procesamiento
imágenes
sensores
remoto
##s
datos
obtenidos
campo
emb
##ra
##pa
recursos
genéticos
bio
##tec
##nol
##o
##gia
bras
##íl
##ia
d
##f
investigación
biotecnología
control
biológico
recursos
genéticos
seguridad
biológica
emb
##ra
##pa
solos
río
ja
##ne
##iro
r
##j
investigación
suelo
interacciones
ambiente
centros
investigación
eco
##r
##re
##gional
##es
emb
##ra
##pa
acre
rio
bran
##co
ac
emb
##ra
##pa
agropec
##u
##ár
##ia
oeste
do
##urado
##s
ms
investigación
región
oeste
bras
##il
emb
##ra
##pa
ama
##pá
ma
##cap
##á
ap
emb
##ra
##pa
[UNK]
oc
##identa
##l
man
##au
##s
am
investigación
ama
##zona
##s
frutas
tropicales
[UNK]
seri
##ng
##ue
##ira
especies
forestales
guar
##aná
pis
##cic
##ult
##ura
emb
##ra
##pa
[UNK]
oriental
bel
##ém
pa
investigación
región
ama
##zon
##ia
oriental
emb
##ra
##pa
cerrados
plana
##lti
##na
d
##f
investigación
desarrollo
innovación
tecnológica
agricultura
biom
##a
cerrado
emb
##ra
##pa
clima
tempera
##do
pelotas
r
##s
investigación
región
clima
temp
##lado
bras
##il
desarrolla
actividades
áreas
recursos
naturales
ambiente
granos
fru
##tic
##ult
##ura
oler
##áceas
sistemas
pecu
##arios
énfasis
ganadería
agricultura
base
familiar
emb
##ra
##pa
me
##ion
##orte
ter
##es
##ina
pi
emb
##ra
##pa
pan
##tana
##l
cor
##um
##b
##á
ms
emb
##ra
##pa
[UNK]
por
##to
vel
##ho
ro
emb
##ra
##pa
ro
##ra
##ima
bo
##a
vista
r
##r
emb
##ra
##pa
semi
##ár
##ido
petrol
##ina
pe
emb
##ra
##pa
tab
##ule
##iro
##s
coste
##iro
##s
ara
##ca
##ju
enlaces
externos
página
oficial
emb
##ra
##pa
##en
inglés
portugués
canal
oficial
emb
##ra
##pa
you
##tu
##be
inglés
portugués
base
datos
investigación
agropec
##uar
##ia
empresas
cre
##dencia
##das
emb
##ra
##pa

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,22 @@
import wikipedia
import wikipediaapi
import time
# Inicializar Wikipedia API en español con un user agent adecuado
user_agent = 'HacklabLaRaizBot/1.0 (hacklab.laraiz@protonmail.com)'
wikipedia.set_lang("es")
wikipedia.set_user_agent(user_agent)
wiki_wiki = wikipediaapi.Wikipedia(
language='es',
extract_format=wikipediaapi.ExtractFormat.WIKI,
user_agent=user_agent
)
def buscar_articulos(palabra_clave, max_articulos=50, offset=0):
search_results = wikipedia.search(palabra_clave, results=max_articulos)
return search_results
def obtener_contenido_wikipedia(titulo):
pagina = wiki_wiki.page(titulo)
return pagina.text if pagina.exists() else ''