Skip to content

Repository files navigation

classifier-emotions-text-ru

FastAPI-приложение для классификации эмоций в тексте на русском языке. Использует предобученную модель rubert-tiny2-cedr-emotion-detection через HuggingFace Inference API. Поддерживает REST API и консольный клиент.

Содержание

Быстрый старт (HF API)

Создание и активация виртуального окружения

  1. Создайте виртуальное окружение (рекомендуется Python >= 3.10):

    python -m venv venv
    
  2. Активируйте его:

    • Для Windows:
      venv\Scripts\activate
      
    • Для Linux/MacOS:
      source venv/bin/activate
      
  3. Установите зависимости: pip install -r requirements.txt

  4. Создайте .env в корне и задайте переменные (см. пример example.env):

HF_API_TOKEN=<ваш_hf_токен>
MODEL_NAME=cointegrated/rubert-tiny2-cedr-emotion-detection
# MODE=api            # api используется по умолчанию
# MODEL_PATH=<путь>   # для локального режима (в разработке)
  1. Запустите сервер:
    python app.py
  2. В адресной строке браузера отправьте запрос:
http://127.0.0.1:8000/classify?text="Привет, друг!"

Ответ:

{
  "text": "Привет, друг!",
  "emotion": "no_emotion",
  "confidence": 0.99,
  "from_cache": false
}

Также взаимодействие возможно при помощи CLI, скрипт котрого следует запустить в отдельном терминале.

Как получить HF API токен

  1. Войдите в https://huggingface.co/settings/tokens
  2. Создайте токен (минимум read).
  3. Скопируйте и вставьте его в HF_API_TOKEN в .env.

Пример работы через консольный клиент

(.venv-classifier) PS D:\mycode\classifier-emotions-text-ru> python client.py
Введите текст для классификации (или пустую строку для выхода):
> Бурый медведь обитает в лесах БЕЛАРУСИ.
{
  "text": "Бурый медведь обитает в лесах БЕЛАРУСИ.",
  "emotion": "no_emotion",
  "confidence": 0.991,
  "from_cache": false
}
> Бурый медведь обитает в лесах Беларуси.
{
  "text": "Бурый медведь обитает в лесах Беларуси.",
  "emotion": "no_emotion",
  "confidence": 0.991,
  "from_cache": true
}
> Я в ужасе от твоего поступка..
Ошибка сети: не удалось подключиться к серверу.
> Я в ужасе от твоего поступка..
{
  "text": "Я в ужасе от твоего поступка..",
  "emotion": "fear",
  "confidence": 0.949,
  "from_cache": false
}

Клиент выводит JSON или краткие сообщения об ошибках (таймаут, сеть, формат ответа, HTTP ошибки).

Тесты

Тестирование при помощи pytest, запуск тестов:

python -m pytest

Запуск через Docker

Предварительные требования

  • Установленный Docker.
  • Созданный .env в корне проекта (можно скопировать и отредактировать example.env).

Сборка Docker-образа

Находясь в корне проекта, выполните:

docker build . -t emotion-classifier

Где:

  • emotion-classifier — имя образа (можете изменить на своё).

Запуск контейнера

Для запуска контейнера с прокидыванием порта и использованием .env:

docker run --rm \
  --env-file .env \
  -p 8000:8000 \
  emotion-classifier

После запуска приложение будет доступно по адресу:

http://127.0.0.1:8000/classify?text="Привет, друг!"

Примечание по локальной модели

Локальная загрузка (mode="local") предусмотрена, но пока в разработке; текущая документация описывает работу через HuggingFace Inference API. Когда локальный путь модели будет готов, можно будет указать mode="local" и MODEL_PATH в .env.

About

Небольшое API-приложение для классификации эмоций в русскоязычном тексте. Основной сценарий — работа через HuggingFace Inference API.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages