Skip to content

Repository files navigation

Extra-Term-Graph (Конструирование терминологического графа и анализ научных статей)

Проект представляет собой автоматизированный пайплайн для сбора, обработки и анализа научных статей из журнала «Онтология проектирования». Пайплайн извлекает метаданные и тексты из PDF-файлов, извлекает и оценивает ключевые слова, генерирует реферативные аннотации и строит семантический граф публикаций и терминов с автоматическим экспортом в локальную графовую СУБД Neo4j.


🚀 Основные возможности

  1. Парсинг архива журнала (pars_news.py): Автоматический сбор ссылок на выпуски и тома журнала, скачивание полнотекстовых PDF-статей в локальную директорию.
  2. Обработка PDF и построение корпуса (modules/corpus.py): Извлечение текстов из PDF с фильтрацией колонтитулов, склейка переносов слов, разделение статьи на метаданные (название, авторская аннотация, ключевые слова) и основной текст.
  3. Извлечение ключевых слов (modules/keywords.py):
    • Морфологический анализ и лемматизация на русском языке с помощью pymorphy3.
    • Извлечение ключевых слов методами TF-IDF и KeyBERT (с использованием легковесной семантической модели mlsa-iai-msu-lab/sci-rus-tiny).
    • Сравнительная оценка качества извлечения относительно авторских ключевых слов.
  4. Реферирование (modules/summarization.py):
    • Выделение предложений и фильтрация шума.
    • Метод MMR (Maximal Marginal Relevance) с весами ключевых слов для генерации сжатого содержания статьи.
    • Оценка качества реферирования относительно авторских аннотаций по метрикам ROUGE-1, ROUGE-2, ROUGE-L.
  5. Графовый анализ и экспорт (modules/graph.py):
    • Экспорт графа в CSV и генерация скрипта импорта Cypher.
    • Автоматическая заливка публикаций и извлеченных терминов в локальную базу данных Neo4j.
    • Динамический поиск и визуализация похожих публикаций через граф в веб-интерфейсе.

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

├── neo4j-community-5.26.0/     # Локальный Neo4j Community Server (входит в репозиторий)
├── articles/                   # Папка со скачанными PDF-статьями
├── corpus/                     # JSON-файлы статей и сводный corpus.json
├── graph_export/               # CSV-файлы графа и скрипт import_csv.cypher
├── scripts/                    # Скрипты запуска
│   ├── run_neo4j.bat           # Запуск локального сервера Neo4j
│   ├── run_neo4j.sh            # Запуск локального сервера Neo4j на Linux
│   └── ...
├── static/                     # Веб-интерфейс (HTML, CSS, JS)
├── modules/                    # Модули пайплайна
│   ├── corpus.py               # Предобработка PDF и сбор корпуса
│   ├── keywords.py             # Извлечение и оценка ключевых слов
│   ├── summarization.py        # Реферирование и оценка ROUGE
│   ├── graph.py                # Построение графа и интеграция с Neo4j
│   ├── pars_news.py            # Парсер архива журнала
│   └── web_app.py              # Приложение Flask
├── run_pipeline.py             # Главный запуск пайплайна (с автозапуском Neo4j)
├── web_app.py                  # Быстрый запуск веб-интерфейса
├── requirements.txt            # Список зависимостей
├── .env                        # Переменные окружения и пароли (включается в Git)
└── README.md                   # Документация проекта

🛠️ Установка и настройка

1. Клонирование и установка зависимостей

Убедитесь, что у вас установлен Python 3.10+ и Java JDK 17.

git clone https://github.com/DeFoba/extra-term-graph.git
cd extra-term-graph
pip install -r requirements.txt

2. Запуск локального сервера Neo4j

Проект поставляется с преднастроенным сервером Neo4j 5 Community Edition прямо в репозитории для быстрого развёртывания.

  • Запуск сервера выполняется автоматически при старте run_pipeline.py.
  • Вы также можете запустить его вручную через файл scripts/run_neo4j.bat (или scripts/run_neo4j.sh на Linux).
  • Вход в Neo4j Browser (http://localhost:7474):
    • Database user: neo4j
    • Password: extra_term_graph_2026 (находится в .env)

💻 Инструкция по запуску пайплайна

Вы можете запускать пайплайн целиком или по отдельным шагам с помощью run_pipeline.py.

  • Полный цикл анализа, автозапуск Neo4j и запуск веб-интерфейса:

    python run_pipeline.py --step all
  • Запуск только веб-интерфейса:

    python run_pipeline.py --step web

    Или просто python web_app.py.


📊 Модель данных Neo4j

Узлы

  • Document: Научная статья.
    • Свойства: id (имя файла), title (название), annotation (авторская аннотация), summary_tfidf, summary_keybert (рефераты).
  • Keyword: Термин (нормализованная лемма).
    • Свойства: id (нормализованная лемма), name (написание термина с большой буквы), methods.

Связи

  • (d:Document)-[:HAS_KEYWORD {method, weight}]->(k:Keyword): Статья содержит термин. Свойства: метод извлечения (author, tfidf, keybert) и вес термина.

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages