Skip to content
Kate-PSUPublic
forked from vancomm/ont-sim

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Latest commit

 

History

12 Commits

Folders and files

Repository files navigation

Ont-Sim

Сервис оценки семантической близости предметных областей на основе ансамбля методов SBERT и TF-IDF.

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

Возможности

  • автоматический сбор терминов из arXiv;

  • автоматический сбор терминов из Wikipedia;

  • загрузка терминов через API;

  • вычисление близости предметных областей с использованием:

    • SBERT;
    • TF-IDF;
    • ансамблевой модели;
  • построение графа близости предметных областей;

  • REST API со Swagger-интерфейсом;

  • кеширование результатов в Redis.


Быстрый запуск

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

docker compose up --build

При последующих запусках достаточно:

docker compose up

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

Swagger UI

http://localhost:8000/docs

Проверка работоспособности

http://localhost:8000/health

Остановка

docker compose down

Проверить, что контейнеры остановлены:

docker ps

Запуск на разных платформах

macOS (Apple Silicon)

Для MacBook с процессорами Apple Silicon проект запускается в CPU-режиме.

В docker-compose.yml используется

DEVICE=cpu

и отключена поддержка NVIDIA GPU.

Такой режим является рекомендуемым для macOS.


Linux / Windows с NVIDIA GPU

Для использования GPU необходимо установить NVIDIA Container Toolkit.

В docker-compose.yml нужно раскомментировать строки

runtime: nvidia

и

deploy:
  resources:
    reservations:
      devices:
        - driver: nvidia
          count: all
          capabilities: [gpu]

а также заменить

DEVICE=cpu

на

DEVICE=cuda

После этого контейнеры будут использовать видеокарту NVIDIA для вычисления эмбеддингов.


Структура проекта

backend/        FastAPI
frontend/       Web-интерфейс
scripts/        Скрипты формирования корпуса терминов
data/           Датасеты и результаты вычислений

Формирование корпуса терминов

Проект поддерживает автоматический сбор терминов.

arXiv

Сбор терминов из аннотаций статей:

python3 scripts/harvest_arxiv.py \
    --output data/terms.csv \
    --limit 300

Параметр --limit задаёт количество статей для каждой предметной области.


Wikipedia

Сбор терминов из статей Wikipedia:

python3 scripts/harvest_wikipedia.py

После формирования корпуса необходимо перезапустить backend:

docker compose restart backend

Основные API

Получение списка доменов

GET /api/v1/domains

Близость между двумя доменами (SBERT)

GET /api/v1/domains/{domain1}/similarity/{domain2}

Ансамблевая оценка

GET /api/v1/similarity/ensemble/{domain1}/{domain2}

Возвращает:

  • итоговую близость;
  • оценку SBERT;
  • оценку TF-IDF;
  • веса моделей.

Построение графа близости

GET /api/v1/graph/similarity

Используемые технологии

  • FastAPI
  • SentenceTransformers (SBERT)
  • scikit-learn
  • Redis
  • Celery
  • Docker Compose
  • Swagger UI

Примечания

При первом запуске автоматически загружается модель

ai-forever/sbert_large_nlu_ru

Размер модели составляет около 2 ГБ, поэтому первый запуск может занимать несколько минут.

Модель сохраняется в Docker Volume huggingface_cache, поэтому повторные запуски происходят значительно быстрее.


Текущее состояние проекта

Реализовано:

  • автоматический сбор терминов из arXiv;
  • автоматический сбор терминов из Wikipedia;
  • построение корпуса терминов;
  • вычисление близости SBERT;
  • вычисление близости TF-IDF;
  • ансамблевая модель оценки;
  • построение графа сходства предметных областей;
  • REST API;
  • Swagger UI;
  • Docker-развёртывание.

Проект находится в стадии активной разработки.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages