import nltk import logging import ssl # Soluciona problemas de certificado SSL en algunas configuraciones de sistema al descargar try: _create_unverified_https_context = ssl._create_unverified_context except AttributeError: pass else: ssl._create_default_https_context = _create_unverified_https_context logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(message)s') # Lista de paquetes de NLTK que newspaper3k puede necesitar. # 'punkt' y 'punkt_tab' son para tokenización, 'stopwords' para el resumen. PACKAGES = ['punkt', 'punkt_tab', 'stopwords'] def download_nltk_data(): """ Descarga los paquetes de NLTK necesarios para newspaper3k. """ for package in PACKAGES: try: logging.info(f"Verificando si el paquete '{package}' de NLTK está disponible...") # Determina la ruta correcta para la verificación if package.startswith('punkt'): path = f'tokenizers/{package}' else: path = f'corpora/{package}' nltk.data.find(path) logging.info(f"El paquete '{package}' ya está descargado.") except LookupError: logging.info(f"El paquete '{package}' no se encontró. Iniciando descarga...") try: # El parámetro quiet=True evita el diálogo interactivo nltk.download(package, quiet=True) logging.info(f"Paquete '{package}' descargado con éxito.") except Exception as e: logging.error(f"Ocurrió un error durante la descarga del paquete '{package}': {e}") import sys sys.exit(1) if __name__ == '__main__': download_nltk_data()