# Utiliser spaCy sur Hugging Face

`spaCy` est une bibliothèque populaire pour le traitement avancé du langage naturel, largement utilisée dans l’industrie. `spaCy` facilite l’utilisation et l’entraînement de pipelines pour des tâches telles que la reconnaissance d’entités nommées, la classification de texte, l’étiquetage des parties du discours et bien d’autres, et permet de construire des applications puissantes pour traiter et analyser de grands volumes de texte.

## Explorer les modèles spaCy dans le Hub

Les modèles officiels de `spaCy` 3.3 se trouvent sur la [page de l'organisation](https://huggingface.co/spacy) `spaCy`. Les membres de la communauté peuvent également partager leurs modèles `spaCy`, que vous pouvez trouver en filtrant à gauche de la [page des modèles](https://huggingface.co/models?library=spacy).

Tous les modèles du Hub sont dotés de fonctionnalités utiles
1. Une carte de modèle générée automatiquement avec le schéma d'étiquettes, les métriques, les composants, et plus encore.
2. Une section d'évaluation en haut à droite où vous pouvez consulter les métriques.
3. Balises de métadonnées qui facilitent la découvrabilité et contiennent des informations telles que la licence et la langue.
4. Un widget interactif que vous pouvez utiliser pour tester le modèle directement dans le navigateur
5. Un widget Inference Providers permettant d’effectuer des requêtes d’inférence.

## Utilisation de modèles existants

Tous les modèles `spaCy` du Hub peuvent être installés directement à l'aide de 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"
```

Pour trouver le lien qui vous intéresse, vous pouvez accéder à un dépôt contenant un modèle `spaCy`. Une fois le dépôt ouvert, cliquez sur `Use in spaCy` et un extrait de code fonctionnel vous sera fourni, que vous pouvez utiliser pour installer et charger le modèle !

Une fois installé, vous pouvez charger le modèle comme n'importe quel pipeline 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()
```

## Partager vos modèles

### Utiliser la CLI spaCy (recommandé)

La bibliothèque `spacy-huggingface-hub` étend le CLI natif de `spaCy` afin que les utilisateurs puissent facilement publier leurs modèles empaquetés sur le Hub.

Vous pouvez installer spacy-huggingface-hub depuis pip :

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

Vous pouvez ensuite vérifier si la commande a bien été enregistrée

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

Pour pousser via l’interface en ligne de commande, vous pouvez utiliser la commande `huggingface-hub push` comme indiqué ci-dessous.

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

| Argument             | Type         | Description                                                                                                                   |
| -------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------- |
| `whl_path`           | str / `Path` | Le chemin vers le fichier `.whl` empaqueté avec le [`spacy package`](https://spacy.io/api/cli#package).                                |
| `--org`, `-o`        | str          | Nom facultatif de l'organisation vers laquelle le pipeline doit être téléversé.                                                       |
| `--msg`, `-m`        | str          | Message de commit à utiliser pour la mise à jour. Par défaut, `"Update spaCy pipeline"`.                                                      |
| `--local-repo`, `-l` | str / `Path` | Chemin local du dépôt du modèle (sera créé s'il n'existe pas). Par défaut, `hub` dans le répertoire de travail actuel. |
| `--verbose`, `-V`    | bool         | Affiche des informations supplémentaires pour le débogage, par exemple les métadonnées complètes du hub généré.                                                   |

Vous pouvez ensuite téléverser tout pipeline empaqueté avec [`spacy package`](https://spacy.io/api/cli#package). Assurez-vous de définir `--build wheel` pour générer un fichier binaire .whl. Le téléverseur lira toutes les métadonnées du paquet de pipeline, y compris le `README.md` bien formaté généré automatiquement et les détails du modèle disponibles dans `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 une minute à peine, vous pouvez mettre votre modèle empaqueté sur le Hub, l’essayer directement dans le navigateur et le partager avec le reste de la communauté. Toutes les métadonnées requises seront téléversées pour vous, et vous obtenez même une fiche modèle soignée.

La commande affichera deux éléments :

* Où trouver votre dépôt sur le Hub ! Par exemple, https://huggingface.co/spacy/en_core_web_sm
* Et comment installer le pipeline directement depuis le Hub !

### Depuis un script Python

Vous pouvez utiliser la fonction `push` depuis Python. Elle renvoie un dictionnaire contenant le `"url"` et le "`whl_url`" du modèle publié et du fichier wheel, que vous pourrez ensuite installer avec `pip install`.

```py
from spacy_huggingface_hub import push

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

## Ressources supplémentaires

* bibliothèque [spacy-huggingface-hub](https://github.com/explosion/spacy-huggingface-hub).
* Publication du [blog](https://huggingface.co/blog/spacy)
* spaCy v 3.1 [Annonce](https://explosion.ai/blog/spacy-v3-1#huggingface-hub)
* spaCy [documentation](https://spacy.io/universe/project/spacy-huggingface-hub/)

