A tool for working with text data
Project description
LANCETNIC 2.1.0
LANCETNIC - это библиотека, которая представляет базовый набор для решения задач:
- Классификации текстовых, числовых данных, а также их комбинаций.
Библиотека предоставляет ряд инструментов для:
- Подготовки и векторизации данных перед обучением.
- Обучению модели.
- Визуализации метрик по окончании обучения, на основании которых принимается решение о точности обученной модели.
- Инференса модели на основе новых данных.
С помощью LANCETNIC можно успешно создавать свои собственные проекты для классификации текста, выявления спама, мошеннических сообщений, прогнозировании цен, а также проводить работы с временными рядами.
Библиотека позволяет работать как с чисто текстовыми данными, так и с комбинацией текстовых и числовых характеристик, анализировать тенденции и цены. Примеры использования: классификация текста, выявление спама, мошеннических сообщений, работа с числовыми рядами и временными обозначениями.
🚀 Установка:
Установка с помощью CUDA
Для работы с графическим процессором рекомендуется установить PyTorch с поддержкой CUDA (НЕОБЯЗАТЕЛЬНО):
pip install torch==2.5.1+cu124 torchaudio==2.5.1+cu124 torchvision==0.20.1+cu124 --index-url https://download.pytorch.org/whl/cu124
Затем установка lancetnic:
pip install lancetnic
👥 Авторы
📄 Документация:
Задача классификации
-
Класс
TextClass()
Позволяет работать с текстовыми данными.
from lancetnic import TextClass
| Атрибут | Тип | Допустимые значения | Описание |
|---|---|---|---|
text_column |
string | Любое валидное название столбца | Название столбца с текстовыми данными |
label_column |
string | Любое валидное название столбца | Название столбца с целевыми метками |
split_ratio |
float | (0.01, 0.99) | Доля данных для валидации (при val_path=None) |
random_state |
int | (1, 99) | Фиксированный seed (по умолчанию: 42) |
метод train
| Параметр | Тип | Значения | Описание |
|---|---|---|---|
model_name |
class | LancetMC/LancetMCA | Архитектура модели |
train_path |
string | Путь | Путь к обучающим данным (CSV) |
val_path |
string | Путь/None | Путь к валидационным данным |
num_epochs |
int | ≥1 | Количество эпох |
hidden_size |
int | ≥1 | Нейронов в слое (по умолчанию 256) |
num_layers |
int | ≥1 | Количество слоёв (по умолчанию 1) |
batch_size |
int | ≥1 | Размер батча (по умолчанию 128) |
learning_rate |
float | (1e-5, 1e-1) | Learning rate (по умолчанию 0.001) |
dropout |
float | [0.0, 0.99) | Dropout (по умолчанию 0) |
optim_name |
string | Adam/RAdam/SGD/RMSprop/Adadelta | Оптимизатор |
crit_name |
string | CELoss | Функция потерь |
метод predict
| Параметр | Тип | Значения | Описание |
|---|---|---|---|
model_path |
string | Путь | Путь к модели (.pth) |
text |
string | Текст | Текст для классификации |
Пример для калссификации текста
from lancetnic.models import LancetMC
from lancetnic import TextClass
text_model = TextClass(
text_column='description', # Имя столбца, содержащего текстовые данные
label_column='category', # Имя столбца, содержащего метки
split_ratio=0.2, # Соотношение между обучением и валидацией (если val_path отсутствует)
random_state=42 # Случайное начальное значение для воспроизводимости результатов
)
text_model.train(model_name=LancetMC, # Имя модели (доступен выбор из библиотеки)
train_path="train.csv", # Путь к тренировочным данным (формат CSV)
val_path=None, # Путь к валидационным данным. Может отсутсвовать: None
num_epochs=50, # Количество эпох обучения
hidden_size=256, # Размер скрытого слова (количество нейронов в слое)
num_layers=1, # Количество скрытых слоев
batch_size=256, # Размер пакетов (батчей) для обучения
learning_rate=0.001, # Скорость обучения для оптимизатора
dropout=0, # Процент отключенных нейронов (0-1)
optim_name='Adam', # Оптимизатор ('Adam', 'SGD', 'RAdam', и др.)
crit_name='CELoss' # Функция потерь ('CELoss' и др.)
)
Инференс модели
from lancetnic import TextClass
text_model = TextClass()
text_pred = text_model.predict(
model_path="model.pth", # Путь до модели
text="Sample text to classify" # Текст для классификации
)
-
Класс
TextScalarClass()
from lancetnic import TextScalarClass
| Атрибут | Тип | Допустимые значения | Описание |
|---|---|---|---|
text_column |
string | Название столбца или None | Столбец с текстом (None если только числа) |
data_column |
list | Список столбцов | Числовые признаки |
label_column |
string | Любое валидное название столбца | Целевые метки |
split_ratio |
float | (0.01, 0.99) | Доля для валидации |
random_state |
int | (1, 99) | Random seed (по умолчанию 42) |
метод train
| Параметр | Тип | Значения | Описание |
|---|---|---|---|
model_name |
class | LancetMC/LancetMCA | Архитектура модели |
train_path |
string | Путь | Путь к обучающим данным (CSV) |
val_path |
string | Путь/None | Путь к валидационным данным |
num_epochs |
int | ≥1 | Количество эпох |
hidden_size |
int | ≥1 | Нейронов в слое (по умолчанию 256) |
num_layers |
int | ≥1 | Количество слоёв (по умолчанию 1) |
batch_size |
int | ≥1 | Размер батча (по умолчанию 128) |
learning_rate |
float | (1e-5, 1e-1) | Learning rate (по умолчанию 0.001) |
dropout |
float | [0.0, 0.99) | Dropout (по умолчанию 0) |
optim_name |
string | Adam/RAdam/SGD/RMSprop/Adadelta | Оптимизатор |
crit_name |
string | CELoss | Функция потерь |
метод predict
| Параметр | Тип | Значения | Описание |
|---|---|---|---|
model_path |
string | Путь | Путь к модели (.pth) |
text |
string | Текст | Текст для классификации |
numeric |
list | Числа | Числовые признаки (только TextScalarClass) |
Пример классификации комбинированных текстовых и числовых элементов
from lancetnic.models import LancetMC
from lancetnic import TextScalarClass
mixed_model = TextScalarClass(
text_column='description', # Имя столбца содержащего текст (отсутствует, если в НД только числовые данные)
data_column=['feat1', 'feat2'], # Список столбцов содержащих числовые характеристики
label_column='target', # Имя столбца, содержащего метки
split_ratio=0.2, # Соотношение между обучением и валидацией (если val_path отсутствует)
random_state=42 # Случайное начальное значение для воспроизводимости результатов
)
mixed_model.train(model_name=LancetMC, # Имя модели (доступен выбор из библиотеки)
train_path="train.csv", # Путь к тренировочным данным (формат CSV)
val_path=None, # Путь к валидационным данным. Может отсутсвовать: None
num_epochs=50, # Количество эпох обучения
hidden_size=256, # Размер скрытого слова (количество нейронов в слое)
num_layers=1, # Количество скрытых слоев
batch_size=256, # Размер пакетов (батчей) для обучения
learning_rate=0.001, # Скорость обучения для оптимизатора
dropout=0, # Процент отключенных нейронов (0-1)
optim_name='Adam', # Оптимизатор ('Adam', 'SGD', 'RAdam', и др.)
crit_name='CELoss' # Функция потерь ('CELoss' и др.)
)
Классификация массива данных
from lancetnic import TextScalarClass
mixed_model = TextScalarClass()
mixed_pred = mixed_model.predict(
model_path="mixed_model.pth", # Путь до модели
text="Product description", # Текстовые данные (может отсутсвовать None)
numeric=[0.5, 1.2] # Числовые данные в виде списка
)
Модели для задачи классификации
- LancetMC
from lancetnic.models import LancetMC
- LancetMCA
from lancetnic.models import LancetMC
- ScalpelMC
from lancetnic.models import ScalpelMC
Сравнительная таблица стоковых моделей
| Характеристика | LancetMC | LancetMCA | ScalpelMC |
|---|---|---|---|
| Архитектура | LSTM | LSTM + Attention | Fully Connected Network |
| Назначение | Многоклассовая классификация последовательностей | Многоклассовая классификация с вниманием | Многоклассовая классификация статических данных |
| Механизм внимания | ❌ | ✅ | ❌ |
| Обучение | Медленнее | Самый медленный | Быстрое |
| Применение | Временные ряды | Длинные последовательности, временные ряды | Табличные данные, простейшие признаки |
По окончании обучения в создется папка с проектом
📁 runs/
├── 📁 train_0/ # Проект
│ ├── 📦 best_model.pt # Модель с лучшими весами
│ ├── 📦 last_model.pt # Модель с весами на последней эпохи обучения
│ ├── 📊 result.csv # Данные по каждой эпохе обучения
│ ├── 🖼️ confusion_matrix_best_model.png # Матрица ошибок для best_model.pt
│ ├── 🖼️ confusion_matrix_last_model.png # Матрица ошибок для last_model.pt
│ ├── 🖼️ dataset_counts.png # Количество датасета
│ ├── 🖼️ f1_score.png # Метрика F1 score
│ ├── 🖼️ train_val_acc.png # График train/val accuracy
│ ├── 🖼️ train_val_loss.png # График train/val loss
│ ├── ⚙️ hyperparams.yaml
├── 📁 train_1/
...
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file lancetnic-2.1.0.tar.gz.
File metadata
- Download URL: lancetnic-2.1.0.tar.gz
- Upload date:
- Size: 17.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5e8aaf6b53b51e60c482ad440453a4933bdc573a930b92e52b8ea22d4b8c4b46
|
|
| MD5 |
aa3e8fb77a387a143adc8ec9413f47d6
|
|
| BLAKE2b-256 |
f8fca9d8ff24fc90679e90adba7ff7423d298065eddd378d057e7a79849f3d3a
|
File details
Details for the file lancetnic-2.1.0-py3-none-any.whl.
File metadata
- Download URL: lancetnic-2.1.0-py3-none-any.whl
- Upload date:
- Size: 17.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9e16d5f48a4b74c7ae040563d0eff328d57601189a63473a12dcbbf36d2a4d65
|
|
| MD5 |
b9cdb636086fceebac95f1579ffca7af
|
|
| BLAKE2b-256 |
9f959c44fa97d5e4506f634c92e9a6ec4aa17bbaec02c38999e7668fe0b85a2d
|