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

[BERTopic](https://github.com/MaartenGr/BERTopic) — это фреймворк для тематического моделирования, который использует 🤗 transformers и c-TF-IDF для создания плотных кластеров, позволяющих легко интерпретировать темы, сохраняя при этом важные слова в описаниях тем.

BERTopic поддерживает все виды методов тематического моделирования:

  
    Направляемый надзорный Полунадзорный
 
   
    Ручные Многотематические распределения Иерархические
 
 
    Динамическая онлайн/инкрементальная обработка на основе классов
 
 
    Мультимодальная генерация текста по нескольким аспектам/LLM
 
 
    Zero-shot (новое!) Merge Models (новое!) Seed Words (новое!)
 

## Исследование BERTopic на Hub

Модели BERTopic можно найти, отфильтровав их на [странице моделей](https://huggingface.co/models?library=bertopic&sort=trending) слева.

Модели BERTopic, размещённые на Hub, имеют карточку модели с полезной информацией. Благодаря интеграции BERTopic с Hugging Face Hub вы можете загрузить модели BERTopic всего несколькими строками кода. Кроме того, вы можете развернуть эти модели с помощью [Inference Endpoints](https://huggingface.co/inference-endpoints).

## Установка

Для начала вы можете воспользоваться [руководством по установке BERTopic](https://github.com/MaartenGr/BERTopic#installation). Также можно установить пакет одной строкой через pip:

```bash
pip install bertopic
```

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

Все модели BERTopic можно легко загрузить с Hub:

```py
from bertopic import BERTopic
topic_model = BERTopic.load("MaartenGr/BERTopic_Wikipedia")
```

После загрузки вы можете использовать возможности BERTopic для предсказания тем для новых экземпляров:

```py
topic, prob = topic_model.transform("This is an incredible movie!")
topic_model.topic_labels_[topic]
```

Это даёт нам следующую тему:

```text
64_rating_rated_cinematography_film
```

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

Когда вы создали модель BERTopic, вы можете легко поделиться ею с другими через Hugging Face Hub. Для этого можно воспользоваться функцией `push_to_hf_hub`, которая позволяет напрямую отправить модель на Hugging Face Hub:

```python
from bertopic import BERTopic

# Train model
topic_model = BERTopic().fit(my_docs)

# Push to HuggingFace Hub
topic_model.push_to_hf_hub(
    repo_id="MaartenGr/BERTopic_ArXiv",
    save_ctfidf=True
)
```

Обратите внимание, что сохраненная модель не включает алгоритмы снижения размерности и кластеризации. Они удалены, поскольку необходимы только для обучения модели и поиска релевантных тем. Инференс выполняется с помощью простой косинусной схожести между эмбеддингами тем и документов. Это не только ускоряет работу модели, но и позволяет получить компактную модель BERTopic, с которой удобно работать.

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

* [Репозиторий BERTopic](https://github.com/MaartenGr/BERTopic)
* [Документация BERTopic](https://maartengr.github.io/BERTopic/)
* [Модели BERTopic в Hub](https://huggingface.co/models?library=bertopic&sort=trending)

