# Использование spaCy в Hugging Face

`spaCy` — популярная библиотека для продвинутой обработки естественного языка, широко используемая в индустрии. `spaCy` упрощает использование и обучение конвейеров для таких задач, как распознавание именованных сущностей, классификация текста, пометка частей речи и другие, а также позволяет создавать мощные приложения для обработки и анализа больших объёмов текста.

## Исследование моделей spaCy в Hub

Официальные модели из `spaCy` 3.3 находятся на [странице организации](https://huggingface.co/spacy) `spaCy`. Сообщество также может делиться своими моделями `spaCy`, которые можно найти, используя фильтр слева на [странице моделей](https://huggingface.co/models?library=spacy).

Все модели на Hub поставляются с полезными функциями
1. Автоматически сгенерированная карточка модели со схемой меток, метриками, компонентами и другими сведениями.
2. Раздел с оценкой в правом верхнем углу, где можно посмотреть метрики.
3. Метаданные, которые помогают в поиске и содержат информацию, например, о лицензии и языке.
4. Интерактивный виджет, с помощью которого можно взаимодействовать с моделью прямо в браузере
5. Виджет Inference Providers, позволяющий отправлять запросы на инференс.

## Использование существующих моделей

Все модели `spaCy` с Hub можно установить напрямую с помощью 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"
```

Чтобы найти нужную ссылку, перейдите в репозиторий с моделью `spaCy`. Открыв репозиторий, нажмите `Use in spaCy` — вы получите готовый фрагмент кода, который можно использовать для установки и загрузки модели!

После установки вы можете загрузить модель как любой конвейер 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()
```

## Обмен моделями

### Использование CLI spaCy (рекомендуется)

Библиотека `spacy-huggingface-hub` расширяет встроенную CLI-утилиту `spaCy`, позволяя легко загружать упакованные модели на Hub.

Вы можете установить spacy-huggingface-hub из pip:

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

Затем вы можете проверить, была ли команда успешно зарегистрирована

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

Чтобы выполнить отправку через CLI, вы можете использовать команду `huggingface-hub push`, как показано ниже.

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

| Аргумент             | Тип         | Описание                                                                                                                   |
| -------------------- | ------------ | ----------------------------------------------------------------------------------------------------------------------------- |
| `whl_path`           | str / `Path` | Путь к файлу `.whl`, упакованному в [`spacy package`](https://spacy.io/api/cli#package).                                |
| `--org`, `-o`        | str          | Необязательное имя организации, в которую следует загрузить конвейер.                                                       |
| `--msg`, `-m`        | str          | Сообщение коммита, используемое для обновления. По умолчанию `"Update spaCy pipeline"`.                                                      |
| `--local-repo`, `-l` | str / `Path` | Локальный путь к репозиторию модели (будет создан, если не существует). По умолчанию — `hub` в текущей рабочей директории. |
| `--verbose`, `-V`    | bool         | Выводить дополнительную информацию для отладки, например, полные метаданные сгенерированного хаба.                                                   |

Затем вы можете загрузить любой пайплайн, упакованный с помощью [`spacy package`](https://spacy.io/api/cli#package). Убедитесь, что параметр `--build wheel` установлен, чтобы получить бинарный файл .whl. Загрузчик прочитает все метаданные из пакета пайплайна, включая автоматически сгенерированный аккуратный `README.md` и сведения о модели, доступные в `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
```

Всего за минуту вы сможете разместить упакованную модель в Hub, протестировать её прямо в браузере и поделиться ею с остальным сообществом. Все необходимые метаданные будут загружены автоматически, а вам даже достанется стильная карточка модели.

Команда выведет две вещи:

* Где найти ваш репозиторий в Hub! Например, https://huggingface.co/spacy/en_core_web_sm
* И как установить пайплайн напрямую из Hub!

### Из Python-скрипта

Вы можете использовать функцию `push` из Python. Она возвращает словарь, содержащий `"url"` и "`whl_url`" опубликованной модели и файла wheel, который можно позже установить с помощью `pip install`.

```py
from spacy_huggingface_hub import push

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

## Дополнительные ресурсы

* библиотека [spacy-huggingface-hub](https://github.com/explosion/spacy-huggingface-hub).
* Запуск [статьи в блоге](https://huggingface.co/blog/spacy)
* spaCy v 3.1 [Объявление](https://explosion.ai/blog/spacy-v3-1#huggingface-hub)
* Документация [spaCy](https://spacy.io/universe/project/spacy-huggingface-hub/)

