Skip to main content

A tool for working with text data

Project description

LANCETNIC 2.1.0

PyPI Package Version PyPi status Downloads Downloads MIT License

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lancetnic-2.1.0.tar.gz (17.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lancetnic-2.1.0-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

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

Hashes for lancetnic-2.1.0.tar.gz
Algorithm Hash digest
SHA256 5e8aaf6b53b51e60c482ad440453a4933bdc573a930b92e52b8ea22d4b8c4b46
MD5 aa3e8fb77a387a143adc8ec9413f47d6
BLAKE2b-256 f8fca9d8ff24fc90679e90adba7ff7423d298065eddd378d057e7a79849f3d3a

See more details on using hashes here.

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

Hashes for lancetnic-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9e16d5f48a4b74c7ae040563d0eff328d57601189a63473a12dcbbf36d2a4d65
MD5 b9cdb636086fceebac95f1579ffca7af
BLAKE2b-256 9f959c44fa97d5e4506f634c92e9a6ec4aa17bbaec02c38999e7668fe0b85a2d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page