---
name: marianmt_es_en_load_model
kind: function
lang: py
domain: datascience
version: "1.0.0"
purity: impure
signature: "def marianmt_es_en_load_model(model_name: str = 'Helsinki-NLP/opus-mt-es-en') -> tuple[Any, Any]"
description: "Carga (y cachea) el tokenizer y modelo MarianMT para traduccion ES->EN (Helsinki-NLP, ~300 MB). Licencia Apache 2.0. Cache por model_name."
tags: [marianmt, translation, es-en, nlp, model, huggingface, apache2, datascience, python]
uses_functions: []
uses_types: []
returns: []
returns_optional: false
error_type: "error_go_core"
imports: [transformers]
params:
  - name: model_name
    desc: "ID del modelo en HuggingFace Hub (defecto: Helsinki-NLP/opus-mt-es-en, ~300 MB)"
output: "tupla (tokenizer, model) listos para inferencia, cacheados por model_name."
tested: false
tests: []
test_file_path: ""
file_path: "python/functions/datascience/marianmt_es_en_load_model.py"
notes: |
  LICENCIA: Apache 2.0 — uso comercial permitido.
  
  Util como paso previo a REBEL (monolingue EN): traducir ES -> EN con MarianMT
  y luego pasar a rebel_load_model para extraccion de relaciones en ingles.
  
  impure: descarga red/disco la primera vez, mantiene estado en _MODEL_CACHE.
  Usa MarianTokenizer y MarianMTModel en vez de Auto* porque los modelos Marian
  tienen tokenizer especializado con vocabulario SPM.
---

## Ejemplo

```python
from python.functions.datascience.marianmt_es_en_load_model import marianmt_es_en_load_model
from python.functions.datascience.translate_es_to_en import translate_es_to_en

tokenizer, model = marianmt_es_en_load_model()
translated = translate_es_to_en("Pablo Isla es presidente de Inditex.", tokenizer, model)
# "Pablo Isla is president of Inditex."
```

## Tamanio y latencia

- `Helsinki-NLP/opus-mt-es-en`: ~300 MB en disco.
- Primera carga: 5-15 s en CPU.
- Inferencia CPU: 0.5-2 s por frase.
- GPU: mucho mas rapido.

## Uso como preprocesador para REBEL

```
texto ES -> marianmt_es_en -> texto EN -> rebel_load_model -> triplets
```

Esta pipeline permite usar REBEL (Apache 2.0, solo EN) con textos en espanol.
Alternativa directa: usar mrebel_load_model (CC BY-NC-SA, multilingue).
