# Uso de spaCy en Hugging Face

`spaCy` es una biblioteca popular para el procesamiento avanzado del lenguaje natural, utilizada ampliamente en la industria. `spaCy` facilita el uso y el entrenamiento de pipelines para tareas como el reconocimiento de entidades nombradas, la clasificación de texto, la etiquetación de categorías gramaticales y muchas más, y permite construir aplicaciones potentes para procesar y analizar grandes volúmenes de texto.

## Explorar modelos de spaCy en el Hub

Los modelos oficiales de `spaCy` 3.3 están en la [página de la organización](https://huggingface.co/spacy) de `spaCy`. Cualquier persona de la comunidad también puede compartir sus modelos de `spaCy`, que puedes encontrar filtrando a la izquierda de la [página de modelos](https://huggingface.co/models?library=spacy).

Todos los modelos del Hub vienen con funciones útiles
1. Una tarjeta de modelo generada automáticamente con esquema de etiquetas, métricas, componentes y más.
2. Una sección de evaluación en la esquina superior derecha donde puedes ver las métricas.
3. Etiquetas de metadatos que facilitan la descubribilidad y contienen información como la licencia y el idioma.
4. Un widget interactivo que puedes usar para experimentar con el modelo directamente en el navegador
5. Un widget de Inference Providers que permite realizar solicitudes de inferencia.

## Uso de modelos existentes

Todos los modelos de `spaCy` del Hub se pueden instalar directamente usando pip install.

```bash
pip install "en_core_web_sm @ https://huggingface.co/spacy/en_core_web_sm/resolve/main/en_core_web_sm-any-py3-none-any.whl"
```

Para encontrar el enlace de interés, puedes ir a un repositorio con un modelo de `spaCy`. Al abrir el repositorio, puedes hacer clic en `Use in spaCy` y se te proporcionará un fragmento de código funcional que puedes usar para instalar y cargar el modelo.

Una vez instalado, puedes cargar el modelo como cualquier pipeline de spaCy.

```python
# Using spacy.load().
import spacy
nlp = spacy.load("en_core_web_sm")

# Importing as module.
import en_core_web_sm
nlp = en_core_web_sm.load()
```

## Compartir tus modelos

### Usando la CLI de spaCy (recomendado)

La biblioteca `spacy-huggingface-hub` extiende la CLI nativa de `spaCy` para que las personas puedan subir fácilmente sus modelos empaquetados al Hub.

Puedes instalar spacy-huggingface-hub desde pip:

```bash
pip install spacy-huggingface-hub
```

A continuación, puede comprobar si el comando se ha registrado correctamente

```bash
python -m spacy huggingface-hub --help
```

Para enviar con la CLI, puede usar el comando `huggingface-hub push` como se muestra a continuación.

```bash
python -m spacy huggingface-hub push [whl_path] [--org] [--msg] [--local-repo] [--verbose]
```

| Argumento             | Tipo         | Descripción                                                                                                                   |
| -------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------- |
| `whl_path`           | str / `Path` | La ruta al archivo `.whl` empaquetado con [`spacy package`](https://spacy.io/api/cli#package).                                |
| `--org`, `-o`        | str          | Nombre opcional de la organización a la que se debe subir el pipeline.                                                       |
| `--msg`, `-m`        | str          | Mensaje de commit a usar para la actualización. Por defecto, `"Update spaCy pipeline"`.                                                      |
| `--local-repo`, `-l` | str / `Path` | Ruta local del repositorio del modelo (se creará si no existe). El valor predeterminado es `hub` en el directorio de trabajo actual. |
| `--verbose`, `-V`    | bool         | Imprime información adicional para depuración, por ejemplo, los metadatos completos generados del hub.                                                   |

A continuación, puede subir cualquier pipeline empaquetado con [`spacy package`](https://spacy.io/api/cli#package). Asegúrese de establecer `--build wheel` para generar un archivo binario .whl. El uploader leerá todos los metadatos del paquete del pipeline, incluido el `README.md` legible generado automáticamente y los detalles del modelo disponibles en `meta.json`.

```bash
hf auth login
python -m spacy package ./en_ner_fashion ./output --build wheel
cd ./output/en_ner_fashion-0.0.0/dist
python -m spacy huggingface-hub push en_ner_fashion-0.0.0-py3-none-any.whl
```

En solo un minuto, puedes tener tu modelo empaquetado en el Hub, probarlo directamente en el navegador y compartirlo con el resto de la comunidad. Todos los metadatos necesarios se subirán por ti y además obtendrás una genial tarjeta de modelo.

El comando mostrará dos cosas:

* Dónde encontrar tu repositorio en el Hub. Por ejemplo, https://huggingface.co/spacy/en_core_web_sm
* ¡Y cómo instalar el pipeline directamente desde el Hub!

### Desde un script de Python

Puedes usar la función `push` desde Python. Devuelve un diccionario que contiene la `"url"` y "`whl_url`" del modelo publicado y del archivo wheel, que luego puedes instalar con `pip install`.

```py
from spacy_huggingface_hub import push

result = push("./en_ner_fashion-0.0.0-py3-none-any.whl")
print(result["url"])
```

## Recursos adicionales

* biblioteca [spacy-huggingface-hub](https://github.com/explosion/spacy-huggingface-hub).
* Publicación del [blog](https://huggingface.co/blog/spacy)
* spaCy v 3.1 [Anuncio](https://explosion.ai/blog/spacy-v3-1#huggingface-hub)
* Documentación [de spaCy](https://spacy.io/universe/project/spacy-huggingface-hub/)

