Semantic core extraction on graphs using Ant Colony Optimization
Project description
Intelliant Core: Графовый алгоритм поиска семантических ядер
Intelliant Core - это специализированный алгоритм машинного обучения, основанный на метаэвристике муравьиной колонии (Ant Colony Optimization, ACO).
В отличие от классических методов, алгоритм не пытается очертить математические границы кластеров в гиперпространстве. Он переводит многомерные данные (например, эмбеддинги языковых моделей) в формат графа ближайших соседей (KNN) и использует роевой интеллект для поиска самых плотных семантических центров (ядер).
Алгоритм оптимизирован через Numba и разреженные матрицы (Sparse CSR), что позволяет ему обрабатывать сотни тысяч объектов за несколько секунд на обычных CPU, обходя ограничения памяти (OOM), свойственные индустриальным стандартам вроде HDBSCAN.
Основные возможности и особенности
- Независимость от размерности: Работает с графом связей (cosine, euclidean), а не с сырыми координатами. Отлично подходит как для 2D/3D пространств, так и для 384D+ эмбеддингов.
- Min-Max Ant System (MMAS): Защита от стагнации феромонов, предотвращающая коллапс графа в "черную дыру" одного хаба.
- Elitist Ants (Элитные муравьи): Ускоренное формирование ядер за счет жадного поведения выделенной группы агентов.
- Node Density (Гравитация узлов): Опциональная эвристика, позволяющая муравьям оценивать локальную плотность целевой точки, ускоряя сходимость алгоритма в 2 раза.
- Noise Absorption: Встроенный модуль абсорбции для перераспределения пограничных точек (шума) по найденным ядрам через взвешенный KNN.
Требования и технологии
Для обеспечения максимальной производительности и воспроизводимости проект опирается на современный стек Python:
- Python:
>= 3.14 - Пакетный менеджер:
uv(обеспечивает сверхбыстрое разрешение зависимостей). - Аппаратное ускорение: Поддержка CUDA (NVIDIA) и MPS (Apple Silicon) для генерации эмбеддингов через PyTorch.
- Необходима настройка токена Hugging Face для загрузки тестовых датасетов.
Установка и запуск
Установка через PyPI (Для использования библиотеки)
Пакет официально опубликован на PyPI. Вы можете установить ядро алгоритма с помощью pip или uv:
pip install intelliant-core
# или
uv add intelliant-core
Установка для разработки (Сборка из исходников и тесты)
Если вы хотите запускать исследовательские ноутбуки и бенчмарки из данного репозитория:
-
Клонируйте репозиторий:
git clone https://github.com/yourdisenchantment/intelliant-core.git cd intelliant-core
-
Создайте файл
.envв корне проекта: Добавьте в него ваш токен от Hugging Face для загрузки датасетов (например,AG_NEWS):HF_API_TOKEN=hf_ваша_строка_токена
-
Установите все зависимости проекта: Используйте менеджер
uvдля установки всех зависимостей (базовые, ML, Dev + Optional):uv sync --all-groups --all-extras
Примечание:
--all-groupsустанавливает базовые зависимости, ML и dev-пакеты (включаяpre-commit), а--all-extrasдобавляет опциональные пакеты (включаяruffдля линтинга).
Пример использования (Quick Start)
Алгоритм принимает на вход любую разреженную матрицу графа (SciPy CSR Matrix). Ниже приведен базовый пайплайн работы:
import numpy as np
from intelliant_core import IntelliantCoreExtractor
# Вспомогательные функции (доступны в папке utils/ репозитория)
from utils.utils import build_knn_graph, get_threshold, absorb_noise
# 1. Построение разреженного KNN-графа из эмбеддингов (N, D)
knn_graph = build_knn_graph(X_embeddings, n_neighbors=15, metric="cosine")
# 2. Инициализация и запуск муравьиного роя
aco = IntelliantCoreExtractor(
n_ants=1000,
n_iterations=20,
use_elite_ants=True,
verbose=True
)
aco.fit(knn_graph, initial_pheromone=1.0)
# 3. Динамическое отсечение слабых связей (автоматический порог Оцу)
pheros = aco.pheromone_matrix.data
_, cutoff_val = get_threshold(pheros, method="otsu")
raw_labels, n_clusters = aco.get_labels(threshold_value=cutoff_val)
# 4. Поглощение пограничного шума (опционально)
final_labels = absorb_noise(X_embeddings, raw_labels, min_cluster_size=50)
Структура тестов
(Секция в процессе заполнения. Вскоре здесь появятся описания тестовых блокнотов, демонстрирующих работу алгоритма на синтетических данных и сравнение с HDBSCAN).
План развития
Проект находится в стадии активного развития и исследований. Запланированные нововведения:
- Разработка адаптивного (динамического)
cutoffна основе анализа графика распределения феромонов (отказ от жестко заданного процентиля). - Миграция на архитектуру
src-layout, настройка сборки пакета черезhatchling/uvи успешная публикация библиотеки на PyPI. - Внедрение системы автокалибровки гиперпараметров (число муравьев, длина пути, испарение) на основе метрик связности входящего KNN-графа.
- Проведение экспериментов на эмбеддингах различной размерности: сравнение легковесных моделей с тяжеловесными (например, использование
google/embeddinggemma-300mдля генерации векторов разной размерности) для проверки аппаратной устойчивости алгоритма.
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 intelliant_core-0.1.1.tar.gz.
File metadata
- Download URL: intelliant_core-0.1.1.tar.gz
- Upload date:
- Size: 11.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d05cc68809c71ac9419194d489d6827a52ac3963ed1bfef39799f88bc49bc25
|
|
| MD5 |
f114d9284eb6ad69409b14b1dc6b156f
|
|
| BLAKE2b-256 |
c44d98c457ad122d5942692880c962a4bd5a41b8aebd8a4458108d3e6701cd06
|
File details
Details for the file intelliant_core-0.1.1-py3-none-any.whl.
File metadata
- Download URL: intelliant_core-0.1.1-py3-none-any.whl
- Upload date:
- Size: 11.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fc923d6c3fd975d7a7fdee4812feae9b1cbdfad32ae8c9286899da5c80031376
|
|
| MD5 |
225540057502d413666c49c7645e464a
|
|
| BLAKE2b-256 |
fe5bcffaaa7f19e4b2e5ed581fb8900569f8e09fe31ed6714591a624e88f1b54
|