Metadata-Version: 2.4
Name: dataset_complexity_profiler
Version: 0.1.7
Summary: Text dataset complexity profiler with a packaged meta-model for automatic embedding dimension recommendation
License: MIT
Keywords: nlp,meta-learning,dataset-profiling,embeddings
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: sentence-transformers>=2.2.2
Requires-Dist: datasets>=2.14.5
Requires-Dist: pymfe>=0.3.1
Requires-Dist: scikit-learn>=1.2.2
Requires-Dist: numpy>=1.24.0
Requires-Dist: pandas>=1.5.3
Requires-Dist: joblib>=1.2.0
Dynamic: license-file

# Dataset Complexity Profiler 🧠

**E2E-инструмент для профилирования сложности текстовых датасетов и автоматической оптимизации размерности эмбеддингов.**

## ⚠️ Проблема

В современных NLP-задачах разработчики часто используют эмбеддинги большой размерности, например `384` у MiniLM или `1536` у OpenAI-моделей. Однако для многих простых задач, таких как бинарная классификация тональности, такая размерность оказывается избыточной.

Это приводит к нескольким проблемам:

1. Перерасход памяти и вычислительных ресурсов.
2. Замедление обучения downstream-классификаторов.
3. Риск ухудшения качества из-за эффекта "проклятия размерности".

## 💡 Решение

**Dataset Complexity Profiler** автоматически подбирает разумную степень сжатия эмбеддингов без существенной потери качества. Библиотека находится на стыке **Meta-Learning** и **AutoML** и работает по следующей схеме:

1. Анализирует сырые тексты и извлекает более 100 мета-признаков, включая сложность, перекрытие классов и информационную энтропию.
2. Передает эти признаки в предобученную мета-модель на основе Random Forest.
3. Предсказывает, до какой размерности можно сжать эмбеддинги через PCA так, чтобы потерять не более 5% качества.

> **Импакт:** На независимых holdout-выборках инструмент позволяет сжимать эмбеддинги до 96% от исходного объема при сохранении качества классификации в пределах заданного порога.

## ✨ Возможности

- Автоматический подбор размерности PCA для текстовых эмбеддингов.
- Извлечение более 100 мета-признаков датасета.
- Предобученная мета-модель для мгновенного применения.
- Возможность дообучить мета-модель на собственных доменных данных.
- End-to-end сценарий: от сырых текстов до готовых компактных векторов.

## 🚀 Установка

Установите пакет через `uv`:

```bash
uv pip install dataset-complexity-profiler
```

Или через стандартный `pip`:

```bash
pip install dataset-complexity-profiler
```

## Быстрый старт

### End-to-End пайплайн

Ниже приведен минимальный пример использования. Библиотека сама пройдет путь от текстов до сжатых векторов.

```python
from dataset_complexity_profiler import DatasetProfiler

profiler = DatasetProfiler()

texts = [
    "This movie is great!",
    "Terrible plot.",
    "I loved the acting."
]
labels =

X_ready = profiler.fit_transform(texts, labels)

print(f"Новая размерность: {X_ready.shape}")
```

### Дообучение мета-модели на своих данных

Если библиотека применяется в специализированной предметной области, например в медицине, юриспруденции или финансах, встроенную мета-модель можно дообучить на собственных датасетах.

```python
from dataset_complexity_profiler import DatasetProfiler

profiler = DatasetProfiler(auto_load_meta_model=False)

datasets = [
    {"texts": [...], "labels": [...]},
    {"texts": [...], "labels": [...]},
]

profiler.train_custom_meta_model(datasets)
profiler.save_meta_model("custom_meta_model.pkl")
```
